这个简单啊,DS1302不是有31字节的RAM吗?你选择任意一个或几个空闲的字节单元,在初始设置时间的程序里加个判断,如果RAM中的内容与你预设的特定标识内容相同,就直接退出不要设置时间,否则才进入设置时间程序。在设置时间程序的末尾加上一段代码,将你选择的空闲RAM单元写入特定标识内容。
这样的话,就可以避免你的问题了。另外,只要备份电池不耗尽,DS1302的实时时钟就会一直保持运行,内部RAM的内容也会一直保持不会丢失。如果电池没电了,RAM内容会丢失,但实时时钟也会停止运行,此时再上电显然应该重新设置时间。
但从另外一个角度讲,虽然按我说得办法可以解决你的问题,但你的这种用法本身是有些不对的。从一般使用的角度来讲,应该提供按键操作来对DS1302的实时时钟进行调整,否则时间不易准确设置,时钟运行偏差也没办法修正,除非你会通过其它方式(比如通讯端口、网络接口等)获得实时时钟信息,但如果你能够通过这些方式获得时钟信息,那在上电时就没有必要初始化一个时间了。所以我怀疑你可能对DS1302运行机制还存在认识误区——如果没有电源也没有备用电池,DS1302的时钟是不会正常运行的,。。
你说的首次是什么时间段内的首次?
方法一:如果说的从一开始到单片机坏这段时间的话,那就可以开始写一个程序给1302一个初始时间,然后从新把程序里面写入1302时间的那段程序删掉,再下程序到单片机里。
方法二:如楼上,判断RAM。
方法三:如果你的时钟可以调的话,就不需要预设时间,不必给1302一个初始时间,上电后自己用按钮调就是。