|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于STC这芯片的EEPROM在进行操作时,如果不按照扇区顺序操作控擦写,能不能有效存入数据?例如:开机初始化时使用第二扇区进行擦写,后面需要设置时使用第一扇区擦写存数据,我经过测试发现第二扇区不能存数据,如下:
void main(void)
{
IO_Init();
Delay(100);
TempSum=IapRead(0x0001);//读第一扇区
TempSum=TempSum<<8|IapRead(0x0002);
ADsodo_flag=IapRead(0x0203);//读第二扇区
camp_dataFlag=ADsodo_flag;
TESample=IapRead(0x0404);//读第三扇区
TESample=camp_data<<8|IapRead(0x0405);
Delay(500);
Timer0_Init();
while(1)
{
if(AD_cmaxizuFlag_1)
{
TESample=tertpe-Set_temp;
AD_cmaxizuFlag_1=0;
}
else
if(AD_cmaxizuFlag_2)
{
TESample=Set_temp-tertpe;
AD_cmaxizuFlag_2=0;
}
if(EepromFlag_1==2)
{
IapErase(0x0000);//擦除第一扇区
IapProgram(0x0001,TempSum>>8);//写入第一扇区
IapProgram(0x0002,TempSum);
EepromFlag_1=0;
}
if(EepromFlag_2==2)
{
IapErase(0x0200);//擦除第二扇区
IapProgram(0x0203,ADsodo_flag);//写入第二扇区
IapErase(0x0400);//擦除第三扇区
IapProgram(0x0404,TESample>>8);//写入第三扇区
IapProgram(0x0405,TESample);
EepromFlag_2=0;
}
if(Eepromflag_A)//开机按键初始化第一次写入
{
IapErase(0x0200);//擦除第二扇区
IapProgram(0x0203,ADsodo_flag);//写入第二扇区
Eepromflag_A=0;
}
}
}
}
}
|
|