我用66k22单片机,只用内部4个字节0-3存放数据。然后把6地址用作标志。
具体应用是,eeprom出厂是0xff。我判断4地址不等于0x55的话,然后进入把初始数据写入0-3.然后写入6地址0x55.这样断电后在运行,读出的6地址,就是0x55了,不会在对0-3地址进行初始化,
我上电延时了接近1秒为的是让电压稳定后再对eeprom操作。
下面是程序,问题是程序每次上电都能进入if,读出来的a的值是00.我仿真检测6地址已经写入成功了。
我现在很纳闷,到底是因为上电延时不够还是别的原因造成一开机读eeprom不对,。
a = RDE2ROM(6); //为什么重新上电后 。读出来的是00.
if(a!=0x55)
{
delay1ms();
WTE2ROM(6, 0x55);
a = RDE2ROM(6); //这个地方能写对。
WTE2ROM(0, 0);
WTE2ROM(1, 100);
WTE2ROM(2, 0);
WTE2ROM(3, 40);
}
set_temp_max = RDE2ROM(0);
set_temp_max = (set_temp_max<<8)+RDE2ROM(1);
set_temp_min = RDE2ROM(2);
set_temp_min = (set_temp_min<<8)+RDE2ROM(3); |