STC12C5A60S2,分别把第一组数据和第二组数据分别放在EEPROM的第一扇区(0x0000)和第二扇(0x0200),IAP程序是严格按照官方手册写的,为什么第一扇区正常存取,面第二扇区却不能存取(严格的说是根本就没法写入),请高手帮我看一下,非常感谢!
- uchar data bht[4];//用于储存第一组数据的值(0~3一共4个)
- char data hms[9];//用于储存第二组数据的值(0~8一共9个)
- uint code E_bhtaddr[]={0x0000,0x0001,0x0002,0x0003};//存第一组数据的值在eeprom中的地址
- uint code E_hmsaddr[]={0x0200,0x201,0x202,0x203,0x204,0x205,0x206,0x207,0x208};//存第二组数据的值在eeprom中的地址
- //*******************************读取存第一组数据的值函数*****************************
- void Eeprom_Rbht()
- {
- uchar i;
- for(i=0;i<4;i++)
- {
- bht[i]=Byte_read(E_bhtaddr[i]);
- if(bht[i]<1|bht[i]>60)bht[i]=25;
- }
- }
- //*******************************储存存第一组数据的值函数*****************************
- void Eeprom_Wbht()
- {
- uchar i;
- Sector_Erase(0x0000);
- for(i=0;i<4;i++)
- {
- Byte_write(E_bhtaddr[i],bht[i]);
- }
- }
- //*******************************读取存第二组数据的值函数*****************************
- void Eeprom_Rhms()
- {
- uchar i;
- for(i=0;i<9;i++)
- {
- hms[i]=Byte_read(E_hmsaddr[i]);
- if(hms[i]<0|hms[i]>60)hms[i]=20;
- }
- }
- //*******************************储存存第二组数据的值函数*****************************
- void Eeprom_Whms()
- {
- uchar i;
- Sector_Erase(0x200);
- for(i=0;i<9;i++)
- {
- Byte_write(E_hmsaddr[i],hms[i]);
- }
- }
复制代码
|