我用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.谢谢
|