📄 global_function.h
字号:
}
break;
}
}
}
// an quan dian liang xie电量(保护)写AAA
void dianliang_write(unsigned char i)
{
unsigned char l,l1;
// ram a jiao
l1=0;
for(l=0;l<4;l++)
l1=l1+RAM[R_KWH_F_BAKA+4*i+l];
ajiaoyuan_kwh[i]=l1+0x33;
// bcpoy
for(l=0;l<4;l++)
bcopy_kwh[i][l]=RAM[R_KWH_F_BAKA+4*i+l];
bcopy_kwh[i][4]=ajiaoyuan_kwh[i];
// ccopy
for(l=0;l<4;l++)
ccopy_kwh[i][l]=(~bcopy_kwh[i][l]);
l1=0;
for(l=0;l<4;l++)
l1=l1+ccopy_kwh[i][l];
ccopy_kwh[i][4]=l1+0x33;
// write fm fm1
data_addr.addri=FM_KWH_F_BAKA+4*i;
for(l=0;l<4;l++)
wr_data[l]=RAM[R_KWH_F_BAKA+4*i+l];
write(FM,4);
data_addr.addri=FM_DIANLIANG_COPYA_SUM+i;
wr_data[0]=ajiaoyuan_kwh[i];
write(FM,1);
data_addr.addri=FM_DIANLIANG_COPYB+5*i;
for(l=0;l<5;l++)
wr_data[l]=bcopy_kwh[i][l];
write(FM,5);
data_addr.addri=FM_DIANLIANG_COPYC+5*i;
for(l=0;l<5;l++)
wr_data[l]=ccopy_kwh[i][l];
write(FM,5);
}
void byte_5_bcd_add_copy_to_fm(addr)
unsigned int addr;
{
byte_5_bcd_add(addr);
copy_ram_to_fm(addr,4, addr);
}
void err_kwh_envent()
{unsigned char l;
if(1==next_point(TYPE_FM_KWHERR_RECORD,4))
{ //set_addr_by_twobiao(TYPE_FM_KWHERR_RECORD);
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_KWHERR_RECORD,0);
time_to_wrdata();
for(l=0;l<80;l++)
wr_data[l+6]=RAM[R_KWH_F_BAKA+l];
write(FM,86);
}
}
void err_time_envent()
{unsigned char l;
if(1==next_point(TYPE_FM_TIMEERR_RECORD,4))
{
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_TIMEERR_RECORD,0);
time_to_wrdata();
for(l=0;l<6;l++)
wr_data[l+6]=bianchengqian[l];
write(FM,12);
}
}
unsigned int num_day_form_date(unsigned char *day)
{unsigned int j1;
if(3==testday(*day)+testmonth(*(day+1))+testyear(*(day+2)))
{
j1=value_hex_from_bcd(*(day+2));
j1=j1*365+(j1+3)/4;
if(((value_hex_from_bcd(*(day+2)))%4)==0)
j1=j1+table_month29[value_hex_from_bcd(*(day+1))-1];
else
j1=j1+table_month28[value_hex_from_bcd(*(day+1))-1];
j1=j1+value_hex_from_bcd(*day)-1;
return j1;
}
else
return 0;
}
unsigned char oneday_can_change_time()// changed do----had add hour minute>86400
{unsigned char value;
unsigned int l1,l2;
value=0;
data_addr.addri=FM_YIJIAOSHI_MINUTE;
if(1==read(FM,5))
{
l1=num_day_form_date(&RSOFT_RTC_DAY);
l2=num_day_form_date(&wr_data[2]);
if(l1>l2)
{
if(l1==(l2+1))
{
if((256*RSOFT_RTC_HOUR+RSOFT_RTC_MINUTE)>=(256*wr_data[1]+wr_data[0]))
value=1;
}
else
value=1;
}
}
return value;
}
void yesterday_to_point(unsigned char *point)
{unsigned char l;
if(RSOFT_RTC_DAY>1)
{l=value_hex_from_bcd(RSOFT_RTC_DAY)-1;
*point=one_byte_hex_to_bcd(l);//((l/10)<<4)+(l%10);
*(point+1)=RSOFT_RTC_MONTH;
*(point+2)=RSOFT_RTC_YEAR;
}
else
{
switch(RSOFT_RTC_MONTH)
{
case 1:
*point=0x31;
*(point+1)=0x12;
l=value_hex_from_bcd(RSOFT_RTC_YEAR)-1;
l=l%100;
*(point+2)=one_byte_hex_to_bcd(l);//((l/10)<<4)+(l%10);
break;
case 2:
case 4:
case 6:
case 8:
case 9:
case 0x11:
*point=0x31;
l=value_hex_from_bcd(RSOFT_RTC_MONTH)-1;
*(point+1)=one_byte_hex_to_bcd(l);//((l/10)<<4)+(l%10);
*(point+2)=RSOFT_RTC_YEAR;
break;
case 3:
l=value_hex_from_bcd(RSOFT_RTC_YEAR);
l=l%4;
if(l==0)
{*point=0x29;
*(point+1)=0x2;
*(point+2)=RSOFT_RTC_YEAR;
}
else
{*point=0x28;
*(point+1)=0x2;
*(point+2)=RSOFT_RTC_YEAR;
}
break;
default:
*point=0x30;
l=value_hex_from_bcd(RSOFT_RTC_MONTH)-1;
*(point+1)=one_byte_hex_to_bcd(l);//((l/10)<<4)+(l%10);
*(point+2)=RSOFT_RTC_YEAR;
break;
}
}
}
// jiao shi hou ji lu
void clr_had_jiaoshi()
{unsigned char l;
for(l=0;l<7;l++)
wr_data[l]=0;
yesterday_to_point(&wr_data[2]);
data_addr.addri=FM_YIJIAOSHI_MINUTE;
write(FM,5);
}
void oneday_had_jiaoshi() // jiao shi wan cheng
{
if((progfunction_security!=yes)||(RSTATUS_RUN!=TEST))
{
data_addr.addri=FM_YIJIAOSHI_MINUTE;
wr_data[0]=RSOFT_RTC_MINUTE;
wr_data[1]=RSOFT_RTC_HOUR;
wr_data[2]=RSOFT_RTC_DAY;
wr_data[3]=RSOFT_RTC_MONTH;
wr_data[4]=RSOFT_RTC_YEAR;
write(FM,5);
}
}
unsigned int num_second_canjiaoshi()
{unsigned int day1,day2,num;
num=0;
data_addr.addri=FM_YIJIAOSHI_MINUTE;
if(1==read(FM,5))
{
day2=num_day_form_date(&wr_data[2]);
day1=num_day_form_date(&RSOFT_RTC_DAY);
if(day1>day2)
num=5*(day1-day2);
if(day1<day2)
num=5*(day2-day1);
}
if (num>0)
if(progfunction_security!=yes)
num=4*60;
return num;// 2003-8-31 changed
}
// aaa计算剩下的时间SSSSSSSS type 0--90day 1--48hour 2--24 hour
unsigned int remain_time(hour,minute,timetype,currenttime)
unsigned int hour,currenttime;
unsigned char minute,timetype;
{unsigned int value;
unsigned int l1;
value=0;
switch(timetype)
{
case 0:
// 90 day------unit (hour)
if(hour<90*24)
if(hour<currenttime)
value=currenttime-hour;
break;
case 1:
// 48 hour
if(hour<48)
{
l1=60*hour+minute;
if(l1<currenttime)
value=currenttime-l1;
}
break;
case 2:
//ll7* 24 hour
if(hour<7*24)
{
l1=60*hour+minute;
if(l1<currenttime)
value=currenttime-l1;
}
break;
}
return value;
}
// 1 jin wei ,0 wujin wei
unsigned char byte1_bcdadd_byte1(i,c)
// i----bcdaddbuffer point,c----carry
unsigned char i,c;
{unsigned char sum,sumc;
sum=10*(bcdaddbuffer[i]>>4)+(0xf&bcdaddbuffer[i])
+10*(bcdaddbuffer[i+5]>>4)+(0xf&bcdaddbuffer[i+5])+c;
if((sum/100)!=0)
sumc=1;
else
sumc=0;
sum=sum%100;
bcdaddbuffer[i]=one_byte_hex_to_bcd(sum);//((sum/10)<<4)+(sum%10);
return sumc;
}
// hua long gui yue
// l1-----l5+l6--l10---->l1----l5
void byte5_bcdadd_byte5()
{unsigned char j;
j=byte1_bcdadd_byte1(0, 0);
j=byte1_bcdadd_byte1(1, j);
j=byte1_bcdadd_byte1(2, j);
j=byte1_bcdadd_byte1(3, j);
byte1_bcdadd_byte1(4, j);
}
// zhejiang gui yue xiang dui ying----------------------->start
#define recorde_shiduan 0
#define recorde_yonghuhao 1
#define recorde_biaohao 2
#define recorde_biaoaddr 3
const unsigned int tabled_recorde_shiduan_addr[]={EP1_SHIDUAN_SETTIME,EP1_YONGHUHAO_SETTIME,EP1_JUHAO_SETTIME,EP1_BIAOADDR_SETTIME};
void recoder_shiduan_yonghuhao_biaohao_addr(unsigned char type)
{
data_addr.addri=tabled_recorde_shiduan_addr[type];
wr_data[0]=RSOFT_RTC_SECOND;
wr_data[1]=RSOFT_RTC_MINUTE;
wr_data[2]=RSOFT_RTC_HOUR;
wr_data[3]=RSOFT_RTC_DAY;
wr_data[4]=RSOFT_RTC_MONTH;
wr_data[5]=RSOFT_RTC_YEAR;
write(EP1,6);
}
// zhejiang gui yue xiang dui ying----------------------->end
unsigned int value_hex_from_v_4bytebcd(unsigned char *point)
// v_a v_b v_c bcd(format xx xx dot xx xx) ---changed to--- hex (xxx dot x)
{unsigned int j;
// point ,point+1,point+2,point+3
j=(*(point+1))>>4;
j=j+10*(*(point+2)&0xf)+100*(*(point+2)>>4)+1000*(*(point+3)&0xf);
return j;
}
// cun sh jian
void lost_cun_shijian(unsigned int i)
// store to RAM[i](day month year second minute hour)
{unsigned char *d1;
if(1==testsecond_minute_hour_day_month_year(&RSOFT_RTC_SECOND,&RSOFT_RTC_DAY))
{
d1=&RAM[i];
(*d1)=RSOFT_RTC_DAY;
d1=d1+1;
(*d1)=RSOFT_RTC_MONTH;
d1=d1+1;
(*d1)=RSOFT_RTC_YEAR;
d1=d1+1;
(*d1)=RSOFT_RTC_SECOND;
d1=d1+1;
(*d1)=RSOFT_RTC_MINUTE;
d1=d1+1;
(*d1)=RSOFT_RTC_HOUR;
}
}
void cun_minuter_hour_day_month(unsigned int i)
// store to RAM[i] (MINUTE HOUR DAY MONTH)
{unsigned char *d1;
if(1==testsecond_minute_hour_day_month_year(&RSOFT_RTC_SECOND,&RSOFT_RTC_DAY))
{
d1=&RAM[i];
(*d1)=RSOFT_RTC_MINUTE;
d1=d1+1;
(*d1)=RSOFT_RTC_HOUR;
d1=d1+1;
(*d1)=RSOFT_RTC_DAY;
d1=d1+1;
(*d1)=RSOFT_RTC_MONTH;
}
}
extern void init_xuliang();
extern unsigned char tingdian_ack();
unsigned char zongqing(value,type)
unsigned int value;
unsigned char type;//==0 all
// VALUE ----COMMAND MUST 0X55AA
//TYPE ==0 ALL CLR ,=1 PROG NOT CLR(V10)
{unsigned char a,l;
unsigned int i;
showcomm;
if(value==0x55aa)
{
qingqiuduishi_rtc=1;
//ram clr
for(i=R_KWH_F_BAKA;i<R_PROG_NUM;i++)
RAM[i]=0;
if(type==0)
{
for(i=R_PROG_NUM;i<R_BATTERY_V;i++)
RAM[i]=0;
}
for(i=R_ALLLOSTV_NUM;i<R_BATTERY_WORKTIME;i++)
RAM[i]=0;
for(i=R_PASSWORD_LOCK_TIME_0;i<R_SOFT_SECOND;i++)
RAM[i]=0;
for(i=R_CUOFENG_KWH_F;i<R_TEMP;i++)
RAM[i]=0;
for(i=R_LOSTV_CURRENT_KWH_F;i<R_CURRENT_QUADRANT;i++)
RAM[i]=0;
for(l=0;l<6;l++)
RAM[R_CURRENT_KW+l]=0;
RKWH_F_COUNT=0;
RKWH_R_COUNT=0;
RKVARH_F_COUNT=0;
RKVARH_R_COUNT=0;
RKVARH_1_COUNT=0;
RKVARH_2_COUNT=0;
RKVARH_3_COUNT=0;
RKVARH_4_COUNT=0;
Dianliang1.byte=0;
Dianliang2.byte=0;
// RFLAG_DEMANGCLR_LOCK=0;
// RTIMER_DEMANGCLR_LOCK=0;
watchdog();
//fm KW clr
for(a=0;a<200;a++)
wr_data[a]=0;
data_addr.addri=FM_KW_F;
write(FM,70);
data_addr.addri=FM_KVAR_F;
write(FM,70+28);
watchdog();
if(1==tingdian_ack())
// return 0;
//FM LOSTV clr
data_addr.addri=FM_LOSTV_NUM;
write(FM,108);
data_addr.addri=FM_LOSTV_AB_NUM ;
write(FM,102);
watchdog();
if(1==tingdian_ack())
// return 0;
//FM CUTV clr
data_addr.addri=FM_CUTV_NUM;
write(FM,108);
data_addr.addri=FM_CUTV_AB_NUM;
write(FM,102);
if(1==tingdian_ack())
// return 0;
//GUO ZAI
data_addr.addri=FM_OVER_KW_NUM;
if(type==0)// all clr
write(FM,13);
else// clr except prog
write(FM,9);
data_addr.addri=FM_ALLLOSTV_NUM;
write(FM,27);
//MIMA
data_addr.addri=FM_PASSWORD_LOCK_TIME_0;
write(FM,31);
data_addr.addri=FM_CUOFENG_KWH_F;
write(FM,58);
watchdog();
data_addr.addri=FM_FUHE_POINT1;
write(FM,37);// ------------ may changed yu yue cuo feng
if(1==tingdian_ack())
// return 0;
data_addr.addri=FM_YIJIAOSHI_MINUTE;
write(FM,23);// l124
// point clr--------------START
data_addr.addri=FM_POINT_TWOTABLE;
read(FM,80);// WR_DATA[] CHANGED
for(a=0;a<5;a++)
wr_data[a]=0;// kwh kw clrkw biaogai duanniu gai
if(type==0)
{
for(a=5;a<7;a++)
wr_data[a]=0;//yuyue shi jian,cuofeng yuyue,
}
for(a=7;a<9;a++)
wr_data[a]=0;
if(type==0)
{
for(a=9;a<14;a++)
wr_data[a]=0;//yougong wu gong bian cheng,shitao bian cheng ,fu he qi bian cheng,jie jia ri bian cheng
}
for(a=14;a<27;a++)
wr_data[a]=0;
if(type==0)
wr_data[27]=0;
for(a=28;a<34;a++)
wr_data[a]=0;
if(type==0)
{
for(a=34;a<41;a++)
wr_data[a]=0;//yougong wu gong bian cheng,shitao bian cheng ,fu he qi bian cheng,jie jia ri bian cheng
}
for(a=41;a<80;a++)
wr_data[a]=0;
data_addr.addri=FM_POINT_TWOTABLE;
write(FM,80);
// point clr--------------END
/*Start of lzh on 2009-2-27 17:12 山东烟台0902*/
for(a=0;a<200;a++)
wr_data[a]=0; // WR_DATA[] CLR--->0
data_addr.addri=FM_CURRENT_CHAOBIAORI;
write(FM,19);
//dianliang zhuangtai
data_addr.addri=FM_STATUS_ZHUANCUN;
write(FM,3);
// add by zhanglong ---->start
data_addr.addri=FM_STATUS_ZHUANCUN+5;
write(FM,13);
data_addr.addri=FM_CHAOBIAORIPROGRAM23_RECORD_BLOCKADDR;
write(FM,70);
// add by zhanglong ---->end
/*End of lzh on 2009-2-27 17:12 山东烟台0902*/
/*********************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -