1、ifndef __DS1302_H__
#define __DS1302_H__
#define uchar unsigned char
#define uint unsigned int
#include
2、 #define W_Hour 0x84 #define R_Day 0x87 #define W_Day 0x86 #define R_Month 0x89 #define W_Month 0x88 #define R_Week 0x8B #define W_Week 0x8A #define R_Year 0x8D #define W_Year 0x8C #define R_Control 0x8F #define W_Control 0x8E void DS1302_Write_Byte(uchar Date); uchar DS1302_
3、Read_Byte(); void Write_DS1302(uchar Adr,uchar Date); uchar Read_DS1302(uchar Adr); void Init_DS1302(); #endif #include "ds1302.h" /************************************************************** 函數名稱 : DS1302_Write_Byte(uchar Date) 函數功能 : 单字节写 輸入參數 : 写的字节 輸出參數 : 无 備 注 :
4、 **************************************************************/ void DS1302_Write_Byte(uchar Date) { uchar i; for(i = 0;i < 8;i++) { if(Date & 0x01) IO = 1; else IO = 0; SCLK = 1; Date = Date >> 1; SCLK = 0; } } /********************************************
5、 函數名稱 : uchar DS1302_Read_Byte() 函數功能 : 单字节读 輸入參數 : 无 輸出參數 : 读出的数据 備 注 : **************************************************************/ uchar DS1302_Read_Byte() { uchar i,Temp = 0; for(i = 0;i < 8;i++) { Temp = Temp >> 1; SCLK = 0; if(IO == 1)
6、 Temp = Temp | 0x80; SCLK = 1; } return Temp; } /************************************************************** 函數名稱 : Write_DS1302(uchar Adr,uchar Date) 函數功能 : 写数据 輸入參數 : 写的寄存器地址和数据 輸出參數 : 无 備 注 : **************************************************************/
7、 void Write_DS1302(uchar Adr,uchar Date) { RST = 0; SCLK = 0; RST = 1; DS1302_Write_Byte(Adr); DS1302_Write_Byte(Date); RST = 0; } /************************************************************** 函數名稱 : uchar Read_DS1302(uchar Adr) 函數功能 : 读数据 輸入參數 : 写的寄存器地址 輸出參數 : 读
8、出的数据 備 注 : **************************************************************/ uchar Read_DS1302(uchar Adr) { uchar Temp = 0; RST = 0; SCLK = 0; RST = 1; DS1302_Write_Byte(Adr); Temp = DS1302_Read_Byte(); RST = 0; Temp = Temp / 16 * 10 + Temp % 16; return Temp; } /*
9、 函數名稱 : Init_DS1302() 函數功能 : 初始化DS1302 輸入參數 : 无 輸出參數 : 无 備 注 : **************************************************************/ void Init_DS1302() { Write_DS1302(W_Control,0x00); Write_DS1302(W_Year,0x11); Write_DS1302(W_Week,0x06); Write_DS1302(W_Month,0x09); Write_DS1302(W_Day,0x10); Write_DS1302(W_Hour,0x16); Write_DS1302(W_Minute,0x11); Write_DS1302(W_Second,0x23); Write_DS1302(W_Control,0x80); }






