|
有以下问题:1,cs为校验和,为何要加校验和 ;
2,Read_EEPROM(sizeof(struct meter_para),&meter_para.meter_number[0],eepadd_meter_para); 数据长度,变量,地址,
3,unsigned char judg_eeprom_init(void)//eeprom 为何要加EEPROM判断,是用来判断 新的存储器,把出厂的数据写进去吗
- void energy_add(void)
- {
- unsigned char temp_pulse,cs;
-
- temp_pulse=pulse_constant_01kwh;
- if(real_energy.pulse>=temp_pulse)
- {
- real_energy.pulse-=temp_pulse;
- //real_energy.moto_flag=1;
- //moto_time++;//
- bcdadd(real_energy.energy,4);
- kwh_flag++;
- if(kwh_flag>=2)//0.1kwh back energy
- {
- down_save=0;
- kwh_flag-=1;
- cs=xaoyanghe_cs(real_energy.energy,5);
- real_energy.cs=cs;
- DI();
- Write_EEPROM(sizeof(struct real_energy),&real_energy.energy[0],eepadd_real_energy);
- Write_EEPROM(sizeof(struct real_energy),&real_energy.energy[0],eepadd_back_real_energy);
- EI();
- }
-
- }
- }
复制代码- void eeprom(void)
- {
- unsigned char cali_data[3];
- unsigned buff,relay;
- if(judg_eeprom_init())
- {
- Read_EEPROM(sizeof(struct meter_para),&meter_para.meter_number[0],eepadd_meter_para);
- Read_EEPROM(sizeof(struct real_energy),&real_energy.energy[0],eepadd_real_energy);
- buff=xaoyanghe_cs(real_energy.energy,5);
- if(buff!=real_energy.cs)
- {
- Read_EEPROM(sizeof(struct real_energy),&real_energy.energy[0],eepadd_back_real_energy);
- }
- }
-
- else
- {
- L_default();
- }
- }
- unsigned char judg_eeprom_init(void)//eeprom
- {
- unsigned char temp;
- Read_EEPROM(1,&temp,eepadd_iniflag);
- if(temp==0xaa)
- return 0xff;
- else
- {
- if(temp==0xaa)
- return 0xff;
- else
- return 0x00;
- }
- //if(real_energy.relay_flag)
- // {
- // CTR_ON=1;
- // CTR_OFF=0;
- // }
- // else
- // {
- // CTR_ON=0;
- // CTR_OFF=1;
- // }
- }
- void L_default(void)
- {
- unsigned char i,buff=0;
- for(i=0;i<sizeof(meter_para.meter_number[6]);i++)
- meter_para.meter_number[i]=0x00;//
- meter_para.prg_password[0]=prg_password0;//pro_password
- meter_para.prg_password[1]=prg_password1;
- meter_para.prg_password[2]=prg_password2;
- meter_para.prg_password[3]=prg_password3;
- meter_para.pulse_constant[0]=pulse_constant_L;//晥泿翍魥厞B曽
- meter_para.pulse_constant[1]=pulse_constant_M;
- meter_para.pulse_constant[2]=pulse_constant_H;
- Write_EEPROM(sizeof(struct meter_para),&meter_para.meter_number[0],eepadd_meter_para);
- Read_EEPROM(sizeof(struct real_energy),&real_energy.energy[0],eepadd_real_energy);
- buff=xaoyanghe_cs(real_energy.energy,5);
- if(buff!=real_energy.cs)//
- {
- Read_EEPROM(sizeof(struct real_energy),&real_energy.energy[0],eepadd_back_real_energy);
- //buff=xaoyanghe_cs(real_energy.energy,5);
- //if(buff!=real_energy.cs)//
- // {
- for(i=0;i<5;i++)
- real_energy.energy[i]=0x00;//
- real_energy.cs=0x00;
- real_energy.moto_flag=0x00;
- real_energy.relay_flag=0xaa; //
- // }
- }
- real_energy.relay_flag=0xaa;
- Write_EEPROM(sizeof(struct real_energy),&real_energy.energy[0],eepadd_real_energy);
- Write_EEPROM(sizeof(struct real_energy),&real_energy.energy[0],eepadd_back_real_energy);
- }
复制代码
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|