STC8内部EEPROM保存数据的问题
u8 UseTimeDec(void)
{
UseTime= IapRead(0x0000); // 读出使用次数
if(UseTime==0) // 次数是0 显示故障
{
OLED_Clear();
OLED_ShowChinese(0,0,20,16);//系统故障
OLED_ShowChinese(18,0,21,16);//
OLED_ShowChinese(36,0,22,16);//
OLED_ShowChinese(54,0,23,16);//
return 0;
}
UseTime--; // 使用次数减1
EA=0;
IapErase(0x0000); // 页擦除 是不是必须的?
IapProgram(0x0000, UseTime); // 保存数据
delay_ms(1);
EA=1;
return 1;
}
函数如上
使用次数记录,次数到了0后,显示故障。
每次保存使用次数的时候,IapErase(0x0000);是不是必须的?
FLASH 存储器里的1可以被写为0,但是0不能写为1 假设需要写入的 数据是0x7f(0111 1111b),意思就是说这个地址里的数据二进制表示的话低七位必须得为1,否则就会写入失败,所以当不为0xff的时候最好给他执行擦除,变成0xff才能保证写入成功
页:
[1]