void InitClock(void) { uint8_t tmp; uint8_t flag; flag=Read1302(0x81); if(flag&0x80) { //判断时钟芯片是否关闭 Write1302(0x8E,0x00); //根据写状态寄存器命令字,写入不保护指令 Write1302(0x80,((51/10)<<4|(51%10))); //根据写秒寄存器命令字,写入秒的初始值 Write1302(0x82,((2/10)<<4|(2%10))); //根据写分寄存器命令字,写入分的初始值 Write1302(0x84,((12/10)<<4|(12%10))); //根据写小时寄存器命令字,写入小时的初始值 Write1302(0x86,((27/10)<<4|(27%10))); //根据写日寄存器命令字,写入日的初始值 Write1302(0x88,((7/10)<<4|(7%10))); //根据写月寄存器命令字,写入月的初始值 Write1302(0x8c,((15/10)<<4|(15%10))); //根据写年寄存器命令字,写入年的初始值 Write1302(0x8E,0x80); //根据写状态寄存器命令字,写入保护指令 } tmp = ReadDS1302Ram(0); if(tmp^0xa5) { WriteDS1302Ram(0,0xa5); Write1302(DS1302_WRITE,0x00); //关闭写保护 Write1302(0x90,0x03); //禁止涓流充电 Write1302(DS1302_HOUR,0x00); //设置成24小时制 Write1302(DS1302_SECOND,0x00); //使能时钟运行 Write1302(DS1302_WRITE,0x80); //打开写保护 } }
void WriteDSRam(uint8_t *p,uint8_t add,uint8_t cnt) { uint8_t i; if(cnt>30) return; for(i=0;i<cnt;i++) { WriteDS1302Ram(add+1+i,*p++); } }
void WriteDSRam(u8 *p,u8 add,u8 cnt) { u8 i; if(cnt>30) return; for(i=0;i<cnt;i++) { WriteDS1302Ram(add+1+i,*p++); } }
void InitClock(void) { u8 tmp = 0; DS1302_Configuration(); tmp = ReadDS1302Ram(0); if(tmp != 0x25) { WriteDS1302Ram(0,0x25); Write1302(DS1302_WRITE,0x00); //关闭写保护 Write1302(0x90,0x03); //禁止涓流充电 Write1302(DS1302_HOUR,0x00); //设置成24小时制 Write1302(DS1302_SECOND,0x00); //使能时钟运行 Write1302(DS1302_WRITE,0x80); //打开写保护 WriteDS1302ClockASCII("20160115023500"); } //WriteDS1302ClockASCII("20140116084000"); }