ds1302實(shí)時時鐘C程序_第1頁
ds1302實(shí)時時鐘C程序_第2頁
ds1302實(shí)時時鐘C程序_第3頁
ds1302實(shí)時時鐘C程序_第4頁
ds1302實(shí)時時鐘C程序_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、ds1302實(shí)時時鐘C程序*/ /*51會員經(jīng)典作品已經(jīng)測試成功/#include #include #define uchar unsigned charsbit T_CLK = P3A4; /*實(shí)時時鐘時鐘線引腳*/sbit T_IO = P3A3; /*實(shí)時時鐘數(shù)據(jù)線引腳*/sbit T_RST = P3A2; /*實(shí)時時鐘復(fù)位線引腳*/sbit OE=P3A6;sbit ACC0=ACCA0;sbit ACC7=ACCA7;uchar time8=:;uchar min,hou,day,mon,yea;void Init1302(void);/ 初始化 DS1302void v_W13

2、02(uchar ucAddr, uchar ucDa);/ 往 DS1302 寫入數(shù)據(jù)uchar uc_R1302(uchar ucAddr);/ 讀取 DS1302 某地址的數(shù)據(jù)void v_BurstW1302T(uchar *pSecDa);/ 往 DS1302 寫入時鐘數(shù)據(jù)(多字節(jié)方式)void v_BurstR1302T(uchar *pSecDa);/ 讀取 DS1302 時鐘數(shù)據(jù)void v_BurstW1302R(uchar *pReDa);/往DS1302寄存器數(shù)寫入數(shù)據(jù)(多字節(jié)方式)void v_BurstR1302R(uchar *pReDa);/ 讀取 DS1302

3、寄存器數(shù)據(jù)void v_Set1302(uchar *pSecDa);/ 設(shè)置初始時間void v_Get1302(uchar ucCurtime);/讀取 DS1302 當(dāng)前時間void donetime(void);時間處理void bcd_int(uchar i);void bcdtoInt(void);void SetTime(void);/ 時間設(shè)置* 名稱:v_RTInputByte*說明:*功能:往DS1302寫入IByte數(shù)據(jù)*調(diào)用:*輸入:ucDa寫入的數(shù)據(jù)*返回值:無 void v_WTInputByte(uchar ucDa)uchar i;/OE=0;ACC= ucDa

4、;for(i=8; i0; i-)T_IO = ACC0; /* 名稱:uchar uc_RTOutputByte*說明:*功能:從DS1302讀取1Byte數(shù)據(jù)*調(diào)用:*輸入:*返回值:ACC相當(dāng)于匯編中的RRCT_CLK = 1;T_CLK = 0;ACC =ACC 1;/ OE=1;uchar uc_RTOutputByte(void)uchar i;/OE=0;for(i=8; i0; i-)ACC = ACC1; /*相當(dāng)于匯編中的RRCACC7 = T_IO;T_CLK = 1;T_CLK = 0;/OE=1;return(ACC);*名稱:v_W1302*說明:先寫地址,后寫命令

5、/數(shù)據(jù)*功能:往DS1302寫入數(shù)據(jù)調(diào)用:v_RTInputByte()*輸入:ucAddr: DS1302地址,ucDa:要寫的數(shù)據(jù)*返回值:無 void v_W1302(uchar ucAddr, uchar ucDa)/OE=0;T_RST = 0;T_CLK = 0;T_RST = 1;v_WTInputByte(ucAddr); /* 地址,命令 */ v_WTInputByte(ucDa); /* 寫 IByte 數(shù)據(jù)*/T_CLK = 1;T_RST =0;/OE=1;*名稱:uc_R1302*說明:先寫地址,后讀命令/數(shù)據(jù)*功能:讀取DS1302某地址的數(shù)據(jù)調(diào)用:v_RTInp

6、utByte() , uc_RTOutputByte()輸入:ucAddr: DS1302 地址*返回值:ucDa :讀取的數(shù)據(jù) uchar uc_R1302(uchar ucAddr)uchar ucDa;/OE=0;T_RST = 0;T_CLK = 0;T_RST = 1;v_WTInputByte(ucAddr); /* 地址,命令 */ucDa = uc_RTOutputByte(); /* 讀 1Byte 數(shù)據(jù) */T_CLK = 1;T_RST =0;/ OE=1;return(ucDa);名稱:v_BurstW1302T*說明:先寫地址,后寫數(shù)據(jù)(時鐘多字節(jié)方式)*功能:往DS

7、1302寫入時鐘數(shù)據(jù)(多字節(jié)方式)調(diào)用:v_RTInputByte()*輸入:pSecDa:時鐘數(shù)據(jù)地址格式為:秒分時日月星期年控制8Byte (BCD 碼)1B 1B 1B 1B 1B 1B 1B 1B*返回值:無/* 名稱:v_BurstR1302T*說明:先寫地址,后讀命令/數(shù)據(jù)(時鐘多字節(jié)方式)*功能:讀取DS1302時鐘數(shù)據(jù)void v_BurstW1302T(uchar *pSecDa)uchar i;v_W1302(0 x8e,0 x00); /* 控制命令,WP=0,寫操作?T_RST = 0;T_CLK = 0;T_RST = 1;v_WTInputByte(0 xbe);

8、/* 0 xbe:時鐘多字節(jié)寫命令for (i=8;i0;i-) /*8Byte = 7Byte 時鐘數(shù)據(jù) + 1Byte 控制v_WTInputByte(*pSecDa);/* 寫 1Byte 數(shù)據(jù)pSecDa+;T_CLK = 1;T_RST =0; */* 調(diào)用:v_RTInputByte() , uc_RTOutputByte() *輸入:pSecDa:時鐘數(shù)據(jù)地址格式為:秒分時日月星期年 * 7Byte (BCD 碼)1B 1B 1B 1B 1B 1B 1B *返回值:ucDa :讀取的數(shù)據(jù)/*void v_BurstR1302T(uchar *pSecDa)uchar i;T_RS

9、T = 0;T_CLK = 0;T_RST = 1;v_WTInputByte(0 xbf); /* 0 xbf:時鐘多字節(jié)讀命令for (i=8; i0; i-)*pSecDa = uc_RTOutputByte(); /* 讀 1Byte 數(shù)據(jù) pSecDa+;T_CLK = 1;T_RST =0; */*名稱:v_BurstW1302R*說明:先寫地址,后寫數(shù)據(jù)(寄存器多字節(jié)方式)*功能:往DS1302寄存器數(shù)寫入數(shù)據(jù)(多字節(jié)方式)調(diào)用:v_RTInputByte()*輸入:pReDa:寄存器數(shù)據(jù)地址*返回值:無/*void v_BurstW1302R(uchar *pReDa)ucha

10、r i;v_W1302(0 x8e,0 x00); /* 控制命令,WP=0,寫操作?T_RST = 0;T_CLK = 0;T_RST = 1;v_WTInputByte(0 xfe); /* 0 xbe :時鐘多字節(jié)寫命令for (i=31;i0;i-) /*31Byte 寄存器數(shù)據(jù)v_WTInputByte(*pReDa); /* 寫 1Byte 數(shù)據(jù)pReDa+;T_CLK = 1;T_RST =0; */*名稱:uc_BurstR1302R*說明:先寫地址,后讀命令/數(shù)據(jù)(寄存器多字節(jié)方式)*功能:讀取DS1302寄存器數(shù)據(jù)調(diào)用:v_RTInputByte() , uc_RTOutp

11、utByte()*輸入:pReDa:寄存器數(shù)據(jù)地址*返回值:無/*void v_BurstR1302R(uchar *pReDa)uchar i;T_RST = 0;T_CLK = 0;T_RST = 1;v_WTInputByte(0 xff); /* 0 xbf:時鐘多字節(jié)讀命令for (i=31; i0; i-) /*31Byte 寄存器數(shù)據(jù)*pReDa = uc_RTOutputByte(); /* 讀 1Byte 數(shù)據(jù) pReDa+;T_CLK = 1;T_RST =0; */*名稱:v_Set1302*說明:*功能:設(shè)置初始時間調(diào)用:v_W1302()*輸入:pSecDa:初始時間

12、地址。初始時間格式為:秒分 時日月 星期年7Byte (BCD 碼)1B 1B 1B 1B 1B 1B 1B*返回值:無/*void v_Set1302(uchar *pSecDa)uchar i;uchar ucAddr = 0 x80;v_W1302(0 x8e,0 x00); / 控制命令,WP=0,寫操作?for(i =7;i0;i-)v_W1302(ucAddr,*pSecDa); /秒分時日月星期年pSecDa+;ucAddr +=2;v_W1302(0 x8e,0 x80); / 控制命令,WP=1,寫保護(hù)? */名稱:v_Get1302*說明:*功能:讀取DS1302當(dāng)前時間調(diào)用:uc_R1302()*輸入:ucCurtime:保存當(dāng)前時間地址。當(dāng)前時間格式為:秒分時日月星期年7Byte (BCD 碼)1B 1B 1B 1B 1B 1B 1B*返回值:無/*void v_Get1302(uchar ucCurtime) uchar i;uchar ucAddr = 0 x81;for (i=0;i4;time1=(j&0 x0f)+48; */*void bcdtoInt(void)uchar i;for(i=0;i7;i+)bcd_int(ucCurtmi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論