久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

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

QQ登錄

只需一步,快速開(kāi)始

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

DS1302.H 頭文件

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:75926 發(fā)表于 2015-4-3 01:26 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  1. DS1302.H 頭文件:
  2. /*********************************************************************
  3. 公司名稱:
  4. 模塊名稱:DS1302.c
  5. 功    能:實(shí)時(shí)時(shí)鐘模塊           時(shí)鐘芯片型號(hào):DS1302
  6. 說(shuō)    明:
  7. 程序設(shè)計(jì):zhaojunjie        
  8. 設(shè)計(jì)時(shí)間:2002.03.02        
  9. 版 本 號(hào): 20020302
  10. *********************************************************************/
  11. #include
  12. sbit     T_CLK      = P2^7;   /*實(shí)時(shí)時(shí)鐘時(shí)鐘線引腳 */
  13. sbit     T_IO       = P1^4;   /*實(shí)時(shí)時(shí)鐘數(shù)據(jù)線引腳 */
  14. sbit     T_RST      = P1^5;   /*實(shí)時(shí)時(shí)鐘復(fù)位線引腳 */
  15. sbit  ACC0 = ACC^0;
  16. sbit  ACC7 = ACC^7;

  17. void   RTInputByte(uchar);       /* 輸入 1Byte */
  18. uchar  RTOutputByte(void);       /* 輸出?1Byte */
  19. void   W1302(uchar, uchar);
  20. uchar  R1302(uchar);
  21. void   Set1302(uchar *);         /* 設(shè)置時(shí)間 */
  22. void   Bcd2asc(uchar,uchar *);
  23. void   Get1302(uchar curtime[]); /* 讀取1302當(dāng)前時(shí)間 */
  24. /********************************************************************
  25. 函 數(shù) 名:RTInputByte()
  26. 功    能:實(shí)時(shí)時(shí)鐘寫入一字節(jié)
  27. 說(shuō)    明:往DS1302寫入1Byte數(shù)據(jù) (內(nèi)部函數(shù))
  28. 入口參數(shù):d 寫入的數(shù)據(jù)
  29. 返 回 值:無(wú)  
  30. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  31. 修    改:                     日    期:
  32. ***********************************************************************/
  33. void RTInputByte(uchar d)
  34. {
  35.     uchar i;
  36.     ACC = d;
  37.     for(i=8; i>0; i--)
  38.     {
  39.         T_IO = ACC0;           /*相當(dāng)于匯編中的 RRC */
  40.         T_CLK = 1;
  41.         T_CLK = 0;
  42.         ACC = ACC >> 1;
  43.     }
  44. }
  45. /********************************************************************
  46. 函 數(shù) 名:RTOutputByte()
  47. 功    能:實(shí)時(shí)時(shí)鐘讀取一字節(jié)
  48. 說(shuō)    明:從DS1302讀取1Byte數(shù)據(jù) (內(nèi)部函數(shù))
  49. 入口參數(shù):無(wú)  
  50. 返 回 值:ACC
  51. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  52. 修    改:                     日    期:
  53. ***********************************************************************/
  54. uchar RTOutputByte(void)
  55. {
  56.     uchar i;
  57.     for(i=8; i>0; i--)
  58.     {
  59.         ACC = ACC >>1;         /*相當(dāng)于匯編中的 RRC */
  60.         ACC7 = T_IO;
  61.         T_CLK = 1;
  62.         T_CLK = 0;
  63.     }
  64.     return(ACC);
  65. }
  66. /********************************************************************
  67. 函 數(shù) 名:W1302()
  68. 功    能:往DS1302寫入數(shù)據(jù)
  69. 說(shuō)    明:先寫地址,后寫命令/數(shù)據(jù) (內(nèi)部函數(shù))
  70. 調(diào)    用:RTInputByte() , RTOutputByte()
  71. 入口參數(shù):ucAddr: DS1302地址, ucData: 要寫的數(shù)據(jù)
  72. 返 回 值:無(wú)
  73. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  74. 修    改:                     日    期:
  75. ***********************************************************************/
  76. void W1302(uchar ucAddr, uchar ucDa)
  77. {
  78.     T_RST = 0;
  79.     T_CLK = 0;
  80.     T_RST = 1;
  81.     RTInputByte(ucAddr);       /* 地址,命令 */
  82.     RTInputByte(ucDa);       /* 寫1Byte數(shù)據(jù)*/
  83.     T_CLK = 1;
  84.     T_RST = 0;
  85. }
  86. /********************************************************************
  87. 函 數(shù) 名:R1302()
  88. 功    能:讀取DS1302某地址的數(shù)據(jù)
  89. 說(shuō)    明:先寫地址,后讀命令/數(shù)據(jù) (內(nèi)部函數(shù))
  90. 調(diào)    用:RTInputByte() , RTOutputByte()
  91. 入口參數(shù):ucAddr: DS1302地址
  92. 返 回 值:ucData :讀取的數(shù)據(jù)
  93. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  94. 修    改:                     日    期:
  95. ***********************************************************************/
  96. uchar R1302(uchar ucAddr)
  97. {
  98.     uchar ucData;
  99.     T_RST = 0;
  100.     T_CLK = 0;
  101.     T_RST = 1;
  102.     RTInputByte(ucAddr);             /* 地址,命令 */
  103.     ucData = RTOutputByte();         /* 讀1Byte數(shù)據(jù) */
  104.     T_CLK = 1;
  105.     T_RST = 0;
  106.     return(ucData);
  107. }
  108. /********************************************************************
  109. 函 數(shù) 名:BurstW1302T()
  110. 功    能:往DS1302寫入時(shí)鐘數(shù)據(jù)(多字節(jié)方式)
  111. 說(shuō)    明:先寫地址,后寫命令/數(shù)據(jù)
  112. 調(diào)    用:RTInputByte()
  113. 入口參數(shù):pWClock: 時(shí)鐘數(shù)據(jù)地址 格式為: 秒 分 時(shí) 日 月 星期 年 控制
  114.                             8Byte (BCD碼)1B 1B 1B 1B 1B  1B  1B 1B
  115. 返 回 值:無(wú)
  116. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  117. 修    改:                     日    期:
  118. ***********************************************************************/
  119. void BurstW1302T(uchar *pWClock)
  120. {
  121.     uchar i;
  122.     W1302(0x8e,0x00);         /* 控制命令,WP=0,寫操作?*/
  123.     T_RST = 0;
  124.     T_CLK = 0;
  125.     T_RST = 1;
  126.     RTInputByte(0xbe);        /* 0xbe:時(shí)鐘多字節(jié)寫命令 */
  127.     for (i = 8; i>0; i--)     /*8Byte = 7Byte 時(shí)鐘數(shù)據(jù) + 1Byte 控制*/
  128.     {
  129.         RTInputByte(*pWClock); /* 寫1Byte數(shù)據(jù)*/
  130.         pWClock++;
  131.     }
  132.     T_CLK = 1;
  133.     T_RST = 0;
  134. }
  135. /********************************************************************
  136. 函 數(shù) 名:BurstR1302T()
  137. 功    能:讀取DS1302時(shí)鐘數(shù)據(jù)
  138. 說(shuō)    明:先寫地址/命令,后讀數(shù)據(jù)(時(shí)鐘多字節(jié)方式)
  139. 調(diào)    用:RTInputByte() , RTOutputByte()
  140. 入口參數(shù):pRClock: 讀取時(shí)鐘數(shù)據(jù)地址 格式為: 秒 分 時(shí) 日 月 星期 年
  141.                                7Byte (BCD碼)1B 1B 1B 1B 1B  1B  1B
  142. 返 回 值:無(wú)
  143. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  144. 修    改:                     日    期:
  145. ***********************************************************************/
  146. void BurstR1302T(uchar *pRClock)
  147. {
  148.     uchar i;
  149.     T_RST = 0;
  150.     T_CLK = 0;
  151.     T_RST = 1;
  152.     RTInputByte(0xbf);             /* 0xbf:時(shí)鐘多字節(jié)讀命令 */
  153.     for (i=8; i>0; i--)
  154.     {
  155.        *pRClock = RTOutputByte();   /* 讀1Byte數(shù)據(jù) */
  156.        pRClock++;
  157.     }
  158.     T_CLK = 1;
  159.     T_RST = 0;
  160. }
  161. /********************************************************************
  162. 函 數(shù) 名:BurstW1302R()
  163. 功    能:往DS1302寄存器數(shù)寫入數(shù)據(jù)(多字節(jié)方式)
  164. 說(shuō)    明:先寫地址,后寫數(shù)據(jù)(寄存器多字節(jié)方式)
  165. 調(diào)    用:RTInputByte()
  166. 入口參數(shù):pWReg: 寄存器數(shù)據(jù)地址
  167. 返 回 值:無(wú)
  168. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  169. 修    改:                     日    期:
  170. ***********************************************************************/
  171. void BurstW1302R(uchar *pWReg)
  172. {
  173.     uchar i;
  174.     W1302(0x8e,0x00);         /* 控制命令,WP=0,寫操作*/
  175.     T_RST = 0;
  176.     T_CLK = 0;
  177.     T_RST = 1;
  178.     RTInputByte(0xfe);         /* 0xbe:時(shí)鐘多字節(jié)寫命令 */
  179.     for (i=31; i>0; i--)       /* 31Byte 寄存器數(shù)據(jù) */
  180.     {
  181.         RTInputByte(*pWReg);    /* 寫1Byte數(shù)據(jù)*/
  182.         pWReg++;
  183.     }
  184.     T_CLK = 1;
  185.     T_RST = 0;
  186. }
  187. /********************************************************************
  188. 函 數(shù) 名:BurstR1302R()
  189. 功    能:讀取DS1302寄存器數(shù)據(jù)
  190. 說(shuō)    明:先寫地址,后讀命令/數(shù)據(jù)(寄存器多字節(jié)方式)
  191. 調(diào)    用:RTInputByte() , RTOutputByte()
  192. 入口參數(shù):pRReg: 寄存器數(shù)據(jù)地址
  193. 返 回 值:無(wú)
  194. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  195. 修    改:                     日    期:
  196. ***********************************************************************/
  197. void BurstR1302R(uchar *pRReg)
  198. {
  199.     uchar i;
  200.     T_RST = 0;
  201.     T_CLK = 0;
  202.     T_RST = 1;
  203.     RTInputByte(0xff);            /* 0xff:時(shí)鐘多字節(jié)讀命令 */
  204.     for (i=31; i>0; i--)          /*31Byte 寄存器數(shù)據(jù) */
  205.     {
  206.         *pRReg = RTOutputByte();  /* 讀1Byte數(shù)據(jù) */
  207.         pRReg++;
  208.     }
  209.     T_CLK = 1;
  210.     T_RST = 0;
  211. }
  212. /********************************************************************
  213. 函 數(shù) 名:Set1302()
  214. 功    能:設(shè)置初始時(shí)間
  215. 說(shuō)    明:先寫地址,后讀命令/數(shù)據(jù)(寄存器多字節(jié)方式)
  216. 調(diào)    用:W1302()
  217. 入口參數(shù):pClock: 設(shè)置時(shí)鐘數(shù)據(jù)地址 格式為: 秒 分 時(shí) 日 月 星期 年
  218.                                7Byte (BCD碼)1B 1B 1B 1B 1B  1B  1B
  219. 返 回 值:無(wú)
  220. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  221. 修    改:                     日    期:
  222. ***********************************************************************/
  223. void Set1302(uchar *pClock)
  224. {
  225.     uchar i;
  226.     uchar ucAddr = 0x80;
  227.     W1302(0x8e,0x00);           /* 控制命令,WP=0,寫操作?*/
  228.     for(i =7; i>0; i--)
  229.     {
  230.         W1302(ucAddr,*pClock);  /* 秒 分 時(shí) 日 月 星期 年 */
  231.         pClock++;
  232.         ucAddr +=2;
  233.     }
  234.     W1302(0x8e,0x80);           /* 控制命令,WP=1,寫保護(hù)?*/
  235. }
  236. /********************************************************************
  237. 函 數(shù) 名:Get1302()
  238. 功    能:讀取DS1302當(dāng)前時(shí)間
  239. 說(shuō)    明:
  240. 調(diào)    用:R1302()
  241. 入口參數(shù):ucCurtime: 保存當(dāng)前時(shí)間地址。當(dāng)前時(shí)間格式為: 秒 分 時(shí) 日 月 星期 年
  242.                                         7Byte (BCD碼)   1B 1B 1B 1B 1B  1B  1B
  243. 返 回 值:無(wú)
  244. 設(shè)    計(jì):zhaojunjie           日    期:2002-03-19
  245. 修    改:                     日    期:
  246. ***********************************************************************/
  247. void Get1302(uchar ucCurtime[])
  248. {
  249.     uchar i;
  250.     uchar ucAddr = 0x81;
  251.     for (i=0; i<7; i++)
  252.     {
  253.         ucCurtime[i] = R1302(ucAddr);/*格式為: 秒 分 時(shí) 日 月 星期 年 */
  254.         ucAddr += 2;
  255.     }
  256. }
復(fù)制代碼
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91久久伊人 | 四虎影院新地址 | 亚洲视频欧美视频 | 四虎伊人 | 丝袜美腿一区 | 亚洲精品国产a久久久久久 午夜影院网站 | 国产精品久久视频 | 三级欧美| 日干夜操 | 99热精品在线观看 | 日本天堂视频在线观看 | 看av片网站 | 91看片免费版 | 成人精品一区二区 | 国产精品成人在线播放 | 欧美一区2区三区3区公司 | 欧美精品免费观看二区 | 精品久久久久久久久久久久久久久久久 | 国产高清一区二区三区 | 欧美一区二区三区大片 | av在线成人 | 成人av在线大片 | 欧美激情第一区 | 久久躁日日躁aaaaxxxx | 日韩精品一区二区三区 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 亚洲在线免费 | 91在线观看免费 | 亚洲国产精品久久久久 | 国产视频91在线 | 国产99热精品 | 日一区二区 | 精品久久久久久久久久久久久 | 国产激情视频网址 | 亚洲精品一区中文字幕乱码 | 综合久久av | 国产在线一区观看 | 国产精品美女www爽爽爽 | 亚洲黄色网址视频 | 精品欧美一区二区三区精品久久 | 欧美黑人狂野猛交老妇 |