//直接上主函数
main()
{
UINT8 DATA[3];
Delay_poweron(); //上电延时
UNRT_init(); //串口初始化
erasure_eeprom(uint addr); //扇区擦除
programme_eeprom(0x0010,11); //往地址0x0010写入11
DATA[0]=read_eeprom(0x0010); //再进行下次EEPROM操作时读取0X0010的数据,保存到DATA[0]中
programme_eeprom(0x0012,15); //再进行一次EEPROM操作,往0x0012写入15(与上次写入的地址不一样)
DATA[1]=read_eeprom(0x0012); //读取0X0012的值,放到DATA[1]
DATA[2]=read_eeprom(0x0010); //第二次读取0X0010的值, 放到DATA[2]
if(DATA[0]==11)
lamp1=0; //写入正确灯1亮
if(DATA[1]==15)
lamp2=0; //写入正确灯2亮
if(DATA[2]==11)
lamp3=0; //写入正确灯3亮(与DATA[0]读取的同一地址)
WR_UNRT(DATA[0]); //上传到串口
WR_UNRT(DATA[1]);
WR_UNRT(DATA[2]);
while(1);
}
结果是灯1亮了灯2亮了灯3没亮,很明显,在进行,第二次EEPROM操作时0X0010的值变了,这也是我之前连续写入数据出错的原因,求分析。STC12的EEPROM其实就是FLACH,在做的这个项目需要掉电保存一些数据,所以必须要用到这个。 |