找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1969|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

1302高精度讀寫數(shù)據(jù),讀寫時(shí)間 函數(shù)(不可調(diào)節(jié)時(shí)鐘)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:236307 發(fā)表于 2017-9-28 13:10 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
全部資料下載地址:
1302高精度不可調(diào)節(jié)時(shí)鐘.zip (40.5 KB, 下載次數(shù): 8)



  1. 2017年9月7日
  2. 21:07

  3. //DS1302寫入數(shù)據(jù)
  4. void writebety_ds(uchar dat)
  5. {
  6.         uchar i;
  7.         SCLK=0;                                 //初始時(shí)鐘線置為 0
  8.         delayus(2);
  9.         for(i=0;i<8;i++)                //開始傳輸8個(gè)字節(jié)的數(shù)據(jù)
  10.                 {
  11.                 SDA=dat&0x01;                // 取最低位,注意DS1302的數(shù)據(jù)和地址都是從最低位開始傳輸?shù)?br />
  12.                 delayus(2);
  13.                 SCLK=1;                         // 時(shí)鐘線拉高,制造上升沿,SDA的數(shù)據(jù)被傳輸
  14.                 delayus(2);
  15.                 SCLK=0;                        // 時(shí)鐘線拉低,為下一個(gè)上升沿做準(zhǔn)備
  16.                 dat>>=1;                // 數(shù)據(jù)右移一位,準(zhǔn)備傳輸下一位數(shù)據(jù)
  17.                 }

  18. }
  19. //DS1302讀出數(shù)據(jù)
  20. uchar readbety_ds()
  21. {
  22.                 uchar i,dat;
  23.                 delayus(2);
  24.                 for(i=0;i<8;i++)
  25.                 {
  26.                 dat>>=1;                // 要返回的數(shù)據(jù)右移一位
  27.                 if(SDA==1)                // 當(dāng)數(shù)據(jù)線為高時(shí),證明該位數(shù)據(jù)為 1
  28.                 dat|=0x80;                // 要傳輸數(shù)據(jù)的當(dāng)前值置為1
  29.                 SCLK=1;                        //拉高時(shí)鐘線
  30.                 delayus(2);
  31.                 SCLK=0;                        // 制造下降沿
  32.                 delayus(2);
  33.                 }
  34.                 return dat;                // 返回讀取出的數(shù)據(jù)
  35. }

  36. //DS1302寫入單個(gè)時(shí)間

  37. void dswrite_data(uchar add,uchar dat)
  38.           {
  39.          
  40.                   RST=0;                         // 初始  CE  線置為 0
  41.                 SCLK=0;                        // 初始時(shí)鐘線置為 0
  42.                 RST=1;                        // 初始  CE  置為 1  ,傳輸開始
  43.                 writebety_ds(add);  
  44.                 writebety_ds(dat);         // 寫入要修改的時(shí)間,日期
  45.                 SCLK=1;            // 時(shí)鐘線拉高
  46.                 RST=0;   //
  47.                 }

  48. //DS1302讀出單個(gè)時(shí)間
  49. uchar        dsread_data(uchar add)
  50.       {

  51.                 uchar temp_date;
  52.                 RST=0;                // 初始  CE  線置為 0 0 0 0
  53.                 SCLK=0;                // 初始時(shí)鐘線置為 0 0 0 0
  54.                 RST=1;                // 初始  CE  置為 1 1 1 1 ,傳輸開始
  55.                 writebety_ds(add);                // 傳輸命令字,要讀取的時(shí)間 日歷地址
  56.                 temp_date=readbety_ds();                // 讀取要得到的時(shí)間/ / / / 日期
  57.                 SCLK=1;                // 時(shí)鐘線拉高
  58.                 RST=0;                // 讀取結(jié)束, CE 置為 0 0 0 0 ,結(jié)束數(shù)據(jù)的傳輸
  59.                 return temp_date;      //返回得到的時(shí)間/ / / /
  60.            
  61.          
  62.   }  
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表