我用ds1302時鐘,數碼管顯示,跑表很正常,準不準先不說,然后我想加上掉電走時的功能,加了備用電源,然后改程序,在1302RAM中寫個標志,可是掉電后仍然初始化//讀標志
uchar read1302flag(uchar adde)
{
uchar i,temp;
ce=0;
sclk=0;
ce=1;
for(i=8;i>0;i--)
{
sclk=0;
temp=adde;
io=(bit)(temp&0x01);
adde>>=1;
sclk=1;
}
for(i=8;i>0;i--)
{
ACC_7=io;
sclk=1;
ACC>>=1;
sclk=0;
}
ce=0;
dat3=ACC;
return(dat3);
}
//寫標志
void write1302(unsigned char addr,dat)
{
uchar i,temp;
ce=0;
sclk=0;
ce=1;
for(i=8;i>0;i--)
{
sclk=0;
temp=addr;
io=(bit)(temp&0x01);
addr>>=1;
sclk=1;
}
for(i=8;i>0;i--)
{
sclk=0;
temp=dat;
io=(bit)(temp&0x01);
dat>>=1;
sclk=1;
}
ce=0;
}
寫入0xff,然后判斷!=0xff的時候初始化,但是每次掉電上電都初始化,我感覺其他的都沒問題,大俠們看看,是不是讀取或者是寫入的程序有問題,調試時dat3的值為0x7f.謝謝
|