|
#define address_init 0x0400
////////////////////////////////////////////////////////////
//20ms定时执行
////////////////////////////////////////////////////////////
void Adata_save(void)
{
u8 dat1,dat2,dat3;
if((Adata_flag == 1) && (mimaSta == 1))
{
if(Adata_flag_cnt++ > 500)
{
Adata_flag_cnt = 0;
EEPROM_SectorErase(address_init);
initbuf[0] = work_Adata & 0xff00;
initbuf[1] = work_Adata & 0x00ff;
initbuf[2] = tuiLi_Adata & 0xff00;
initbuf[3] = tuiLi_Adata & 0x00ff;
initbuf[4] = reHu_Adata & 0xff00;
initbuf[5] = reHu_Adata & 0x00ff;
EEPROM_write_n(address_init, initbuf, 6);
delay_ms(1);
EEPROM_read_n(address_init, initbuf, 6);
dat1 = initbuf[0] * 0xff + initbuf[1];
dat2 = initbuf[2] * 0xff + initbuf[3];
dat3 = initbuf[4] * 0xff + initbuf[5];
if((dat1 == work_Adata) && (dat2 == tuiLi_Adata) && (dat3 == reHu_Adata))
{
Adata_flag = 0;
}
}
}
}
////////////////////////////////////////////////////////////
//开机执行
////////////////////////////////////////////////////////////
void data_init(void)
{
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
delay_ms(200);
EEPROM_read_n(0x0000, initbuf, 7);
if(initbuf[0] == mima)
{
mimaSta = 1;
work_Adata_max = initbuf[1] * 0xff + initbuf[2];
I_work220 = initbuf[3] * 0xff + initbuf[4];
I_work380 = initbuf[5] * 0xff + initbuf[6];
initbuf[0] = 0;
initbuf[1] = 0;
initbuf[2] = 0;
initbuf[3] = 0;
initbuf[4] = 0;
initbuf[5] = 0;
initbuf[6] = 0;
EEPROM_read_n(address_init, initbuf, 6);
work_Adata = initbuf[0] * 0xff + initbuf[1];
tuiLi_Adata = initbuf[2] * 0xff + initbuf[3];
reHu_Adata = initbuf[4] * 0xff + initbuf[5];
}
else
{
mimaSta = 0;
mimaMode = 0;
I_work = 30;
I_work220 = 20;
I_work380 = 20;
led_data = I_work;
}
}
////////////////////////////////////////////////////////////
//20ms定时执行,只会执行一次
////////////////////////////////////////////////////////////
void write_Init_data(void)
{
u16 dat1,dat2,dat3,dat4;
if(mimaSaveFlag == 1)
{
EEPROM_SectorErase(0x0000);
initbuf[0] = mima;
initbuf[1] = I_work & 0xff00;
initbuf[2] = I_work & 0x00ff;
initbuf[3] = I_work220 & 0xff00;
initbuf[4] = I_work220 & 0x00ff;
initbuf[5] = I_work380 & 0xff00;
initbuf[6] = I_work380 & 0x00ff;
EEPROM_write_n(0x0000, initbuf, 7);
delay_ms(1);
EEPROM_read_n(0x0000, initbuf, 7);
dat1 = initbuf[1] * 0xff + initbuf[2];
dat2 = initbuf[3] * 0xff + initbuf[4];
dat3 = initbuf[5] * 0xff + initbuf[6];
if((dat1 == I_work) && (dat2 == I_work220) && (dat3 == I_work380) && (mima == initbuf[0]))
{
mimaSaveFlag = 0;
mimaMode = 3;
}
}
if(init_flag_save == 1)
{
EEPROM_SectorErase(0x0000);
EEPROM_read_n(0x0000, initbuf, 7);
if(initbuf[0] != mima)
{
init_flag_save = 0;
mimaSta = 0;
mimaMode = 3;
}
}
}
write_Init_data();每次都能读写正确
data_init(); 只有数组的前3个读写正确,后面4个时不时出错
|
-
|