资源描述
DS1302读写一体化C51源程序/* DS1302读写一体化C51源程序 */打开DS1302void TimeSpiOpen(void)TIMECLK = 0;TIMERST = 0;/禁止DS1302TIMEIO = 1;/释放数据总线TIMERST = 1;/使能DS1302/关闭DS1302void TimeSpiClose(void)TIMERST = 0;/禁止DS1302TIMEIO = 1;/释放数据总线TIMECLK = 1;/读写DS1302unsigned char TimeSpiReadWrite(unsigned char val)unsigned char i;ACC = val;/取8位数据for (i = 8;i 0; i-)TIMECLK = 0;/时钟下降沿输入数据(DS1302读)_nop_();/延时CY = TIMEIO;/接收串行数据到CY_rrca_();/右移一位数据到CY(先存后取)TIMEIO = CY;/发送串行数据TIMECLK = 1;/时钟上升沿打入数据(DS1302写)TIMEIO = 1;/释放数据总线val = ACC;return val;/读DS1302字节unsigned char TimeByteRead(unsigned char address)TimeSpiOpen();/打开DS1302TimeSpiReadWrite(address);/写入DS1302命令address = TimeSpiReadWrite(0xff);/读入DS1302数据TimeSpiClose();/关闭DS1302return address;/返回数据/读DS1302RAM字节unsigned char TimeRamByteRead(unsigned char address)TimeSpiOpen();/打开DS1302TimeSpiReadWrite(address 1) 0xc1);/写入DS1302命令address = TimeSpiReadWrite(0xff);/读入DS1302数据TimeSpiClose();/关闭DS1302return address;/返回数据/写DS1302字节void TimeByteWrite(unsigned char address, unsigned char val)TimeSpiOpen();/打开DS1302TimeSpiReadWrite(address);/写地址TimeSpiReadWrite(val);/写数据TimeSpiClose();/关闭DS1302/写DS1302字节void TimeRamByteWrite(unsigned char address, unsigned char val)TimeSpiOpen();/打开DS1302TimeSpiReadWrite(address 1) 0xc0);/写地址TimeSpiReadWrite(val);/写数据TimeSpiClose();/关闭DS1302/使能DS1302写保护void TimeWriteEnable(void)TimeByteWrite(timewriteregall, timewriteseg);/使能DS1302写保护/开放DS1302写保护void TimeWrieDisbale(void)TimeByteWrite(timewriteregall, 0);/开放DS1302写保护/DS1302工作开始void TimeWorkStart(void)unsigned char val;val = TimeByteRead(timereadseg);/读秒数据val &= 0x7f;/打开晶振TimeWrieDisbale();/开放DS1302写保护TimeByteWrite(timewriteseg, val);/打开晶振TimeByteWrite(tricklewrite, 0xa5);/打开充电二极管TimeWriteEnable();/使能DS1302写保护3
展开阅读全文