这个简单啊,DS1302不是有31字节的RAM吗你选择任意一个或几个空闲的字节单元,在初始设置时间的程序里加个判断,如果RAM中的内容与你预设的特定标识内容相同,就直接退出不要设置时间,否则才进入设置时间程序在设置时间;单片机的定时器用的是它自己的晶振,不是专门用来做电子钟的,因其精度不高,而且操作麻烦而且更正一点,DS1302不是用来定时的,它是一种时钟芯片,内部有专用的寄存器用于存年月日时分秒,用的晶振也是另接的,高精度。

1从程序看是初始化用的,应该是个什么命令,看看DS1302的手册 2always *是组合逻辑的一种写法,就是用到什么变了都触发,就是组合逻辑了 再看看别人怎么说的;void write_1302uchar add,uchar dat ucAddr DS1302地址, ucData 要写的数据 CE=0 SCLK=0 CE=1 inputbyteadd 地址,命令 inputbytedat 写1Byte数据 CE=0 uchar read_1302uchar add。

1302h02芯片

读时序的程序写错了,好好看看手册,什么时候1302输出单片机才能读。

1302芯片原理图

由于有忙检测,可能是DS1302的电源全都没有以后,程序因为访问DS1302时,得到DS1302总处于忙的状态,而导致进入死循环造成的如果在主程序中加入DS1302的电源检测或者不检测忙,可以不导致死循环。