兩種解決方法
第一種:先把程序燒錄進單片機,然後把程序中的寫時間函數註釋掉,再燒錄進去就可以了
第一次燒錄相當於給DS1302時鐘芯片寫入一個初始時間,第二次燒錄前由於有備用電源DS1302一直在工作,所以第二次燒錄不需要設置初始時間,應把源程序中的寫入初始時間的程序註釋掉
第二種:在DS1302的RAM裏面寫入一個標誌數(因爲DS1302有備用電池,外部電源關閉後,RAM裏的值不會丟掉依然保留),程序中的DS1302寫入時間函數是否執行需要用該標誌進行判斷,程序如下
unsigned char flag; //定義一個標誌位
flag= Ds1302_Read_Byte(0xc0); //0xc0爲DS1302內部RAM的首地址,每次執行程序 先讀出該地址的數據
if(flag==0) //RAM數據默認爲0
{
Ds1302_Init(); //DS1302初始化
Ds1302_Write_Time(); //DS1302寫入時間
Ds1302_Write_Byte(0xc0,1); //執行一次程序後,在RAM裏寫入一個數1,所以該程序段只會被執行一次
}