📄 global_function.h
字号:
addr=current_twobiaofm_block_addr(TYPE_EP1_BESPOKENPRICE_RECORD,0);
if(addr!=0xffff)
{
data_addr.addri=FM_PRICE_SWITCH;
read(FM,6);
for(l=6;l>0;l--)
wr_data[10+l-1]=wr_data[l-1];
time_to_wrdata();
for(l=0;l<4;l++)
wr_data[l+6]=0;
data_addr.addri=addr;
write(EP1,16);
}
}
}
}
void set_cuofengyuyue_envent_end(unsigned char a)
{unsigned char l;
unsigned int addr;
if(a==0)
{//cuo feng
next_point(TYPE_EP1_BESPOKENCUOFENG_RECORD,4);
addr=current_twobiaofm_block_addr(TYPE_EP1_BESPOKENCUOFENG_RECORD,0);
if(addr!=0xffff)
{
data_addr.addri=FM_MAIN_CUOFENG_START_1;
read(FM,56);
for(l=0;l<12;l++)
wr_data[38+l]=wr_data[44+l];
for(l=50;l>0;l--)
wr_data[10+l-1]=wr_data[l-1];
time_to_wrdata();
for(l=0;l<4;l++)
wr_data[l+6]=0;
data_addr.addri=addr;
write(EP1,60);
}
}
else
{// yuyue
addr=current_twobiaofm_block_addr(TYPE_EP1_BESPOKENPRICE_RECORD,0);
if(addr!=0xffff)
{
data_addr.addri=FM_PRICE_SWITCH;
read(FM,6);
data_addr.addri=addr+16;
write(EP1,6);
}
}
}
// l2003-7-7 add
unsigned char come_setdate_yesno_byfm(unsigned int addr)
// yu yue ,cuofeng shi duan switch
{unsigned char time[6],l;
unsigned int l1,l2;
data_addr.addri=addr;
read(FM,5);
for(l=5;l>0;l--)
wr_data[l]=wr_data[l-1];
wr_data[0]=0;// kuo chong--->second
if(0==testsecond_minute_hour_day_month_year(&wr_data[0],&wr_data[3]))
return 0;
else
{
l2=num_day_form_date(&wr_data[3]);
l1=num_day_form_date(&RSOFT_RTC_DAY);
if(l1>l2)
return 1;
else
if(l1==l2)
{
l2=wr_data[1]+256*wr_data[2];
l1=RSOFT_RTC_MINUTE+256*RSOFT_RTC_HOUR;
if(l1>=l2)
return 1;
else
return 0;
}
else
return 0;
}
}
void gdisplay_auto_key_comm()
// auto key display set yes or no
{unsigned int l;
data_addr.addri=EP1_AUTO_NUM;
read(EP1,2);
l=value_hex_from_bcd(wr_data[0])+100*value_hex_from_bcd(wr_data[1]);
if((l==0)||(l>0x80))
RFLAG_DISPLAY_AUTO_SET=0;
else
RFLAG_DISPLAY_AUTO_SET=1;
data_addr.addri=EP1_KEY_NUM;
read(EP1,2);
l=value_hex_from_bcd(wr_data[0])+100*value_hex_from_bcd(wr_data[1]);
if((l==0)||(l>0x80))
RFLAG_DISPLAY_KEY_SET=0;
else
RFLAG_DISPLAY_KEY_SET=1;
}
void move_int_to_fm(value,addr)
unsigned int value,addr;
{
wr_data[0]=value%256;
wr_data[1]=value/256;
data_addr.addri=addr;
write(FM,2);
}
void shuangxiang_kvarh()// return ----->bcdaddbuffer[0---4]
{unsigned char i;
data_addr.addri=R_KWH_F_BAKA+40; // zhen xiang wu gong
read(RRAM,4);
bcdaddbuffer[0]=0;
for(i=0;i<4;i++)
bcdaddbuffer[i+1]=wr_data[i];
data_addr.addri=R_KWH_F_BAKA+60; // fan xiang wu gong
read(RRAM,4);
bcdaddbuffer[5]=0;
for(i=0;i<4;i++)
bcdaddbuffer[i+5+1]=wr_data[i];
byte5_bcdadd_byte5();
}
unsigned char gmima_function(mima_okerr,mima_denji)
// fei an quan ren zhen
unsigned char mima_okerr,mima_denji;
{unsigned char l,l1,l2;
unsigned int addr;
l=mima_okerr;
l1=mima_denji;
if(l1<10)
{
addr=R_PASSWORD_LOCK_TIME_0+2*l1;
if((RAM[addr]==0)&&(RAM[addr+1]==0))
{
if(l==0)
{
RAM[R_PASSWORD_LOCK_NUM_0+l1]=RAM[R_PASSWORD_LOCK_NUM_0+l1]+1;
if(RAM[R_PASSWORD_LOCK_NUM_0+l1]>4)
{
RAM[R_PASSWORD_LOCK_NUM_0+l1]=0;
addr=R_PASSWORD_LOCK_TIME_0+2*l1;// time 60*48 lock48 hour
RAM[addr]=0x40;
RAM[addr+1]=0xb;
copy_ram_to_fm(addr,2,addr);
}
data_addr.addri=FM_PASSWORD_LOCK_NUM_0+l1;
wr_data[0]=RAM[R_PASSWORD_LOCK_NUM_0+l1];
write(FM,1);
}
else
{
for(l2=l1;l2<10;l2++)
{
RAM[R_PASSWORD_LOCK_NUM_0+l2]=0;
// ram------>fm
for(l2=0;l2<10;l2++)
wr_data[l2]=RAM[R_PASSWORD_LOCK_NUM_0+l2];
data_addr.addri=FM_PASSWORD_LOCK_NUM_0;
write(FM,10);
// x----->9 time=0,
addr=R_PASSWORD_LOCK_TIME_0+2*l1;
l1=10-l1;
for(l2=0;l2<2*l1;l2++)
RAM[addr+l2]=0;
copy_ram_to_fm(addr,2*l1,addr);
}
}
}
else
l=0;
}
else
l=0;
return l;
}
void clr_4_dot()
// an quan ren zhen chong dian
{
renzhen_imax=0;
renzhen_ib=0;
renzhen_imax5l=0;
renzhen_ib5l=0;
status_renzhen_use=0;
}
void copyrunstatus()
{
data_addr.addri=FM_STATUS_RUN;
wr_data[0]=RSTATUS_RUN;
write(FM,1);
}
void g_errmima_function()
// an quan ren zheng mima suo ding
{
RAM[R_SECURITY_LOCK_NUM]=RAM[R_SECURITY_LOCK_NUM]+1;
if(RAM[R_SECURITY_LOCK_NUM]>2)
{
RAM[R_SECURITY_LOCK_NUM]=0;
clr_4_dot();
RSTATUS_RUN=LOCK_DEED;
copyrunstatus();
}
data_addr.addri=FM_SECURITY_LOCK_NUM;
wr_data[0]=RAM[R_SECURITY_LOCK_NUM];
write(FM,1);
}
unsigned char translate_status(status,status_use,continue_time,value,input_status)
unsigned char *status,*status_use,*continue_time,value,input_status;
{
if(*status_use!=input_status)
{
*status_use=input_status;
*continue_time=0;
}
else
{
if(*continue_time<=value)
*continue_time=*continue_time+1;
if(*continue_time>=value)
{
*continue_time=0;
if(*status!=input_status)
{
*status=input_status;
return 1;
}
}
}
return 0;
}
unsigned char price_fuhe_judge(num,point)
unsigned char num,*point;
// num num of the price or fuhe
// point date_addr
{unsigned int y1,y2;
unsigned char *pointuse;
unsigned char a,l;
a=0;
for(l=0;l<(num-1);l++)
{
pointuse=point+3*l;
y1=256*(*(pointuse+1))+(*(pointuse));
y2=256*(*(pointuse+1+3))+(*(pointuse+3));
if(y1==y2)
a=a+2;
else
if(y1>y2)
a=a+1;
}
if(a==0)
return 1;
if(a==1)
{
y1=256*(*(point+1))+(*point);
pointuse=point+3*(num-1);
y2=256*(*(pointuse+1))+(*pointuse);
if(y1>y2)
return 1;
}
return 0;//err
}
unsigned char set_price_ok(num,point)
unsigned char num,*point;
{unsigned char l,nump,i,i1,n,n0;
unsigned char *pointuse;
if(num<2)
return 1;
nump=num;
n0=0;
for(i=1;i<nump;i++)
{
pointuse=point+3*i;
if(((*(point))==(*pointuse))&&((*(point+1))==(*(pointuse+1))))
{
if((*(point+2))!=(*(pointuse+2)))
return 0;//err
for(i1=0;i1<i;i1++)
{
if((*(point+3*i1+2))>3)
{
return 0;//err
}
}
if(i<(nump-1))// if closedloop,next must be zero
{
for(i1=(i+1);i1<nump;i1++)
{
pointuse=point+3*i1;
if((0!=(*pointuse))||(0!=(*(pointuse+1)))||(0!=(*(pointuse+2))))
{
return 0;
}
}
}
nump=i;
n0=1;
}
}
if(n0==0)// if no closedloop
{
// pricevalue must be ok
//if empty ,next must be empty
n=0;
for(i=0;i<num;i++)
{
if((*(point+3*i+2)>3)&&(n==0))
{
n=1;
nump=i;
}
else
{
if((*(point+3*i+2)<4)&&(n==1))
{
return 0;//err
}
}
}
}
if(nump<2)
return 1;
return price_fuhe_judge(nump,point);
}
//fu he gai
//must test
unsigned char set_fuhe_ok(num,point)
unsigned char num,*point;
{unsigned char value,l,a,nump,i,n;
unsigned int y1,y2;
unsigned char *pointuse;
value=0;
if(num<1)//l2
return 1;
nump=num;
n=0;
for(i=(num-1);i>0;i--)// judge closedloop
{
pointuse=point+3*i;
if((0==(*(pointuse+2)))&&(0==(*(pointuse+1)))&&(0==(*pointuse)))
{
nump--;
}
else
{
if(((*point)==(*pointuse))&&((*(point+1))==(*(pointuse+1))))
{
if((*(point+2))==(*(pointuse+2)))
{
nump--;
break;
}
else
{
return 0;//value;// =0
}
}
break;
}
}
for(i=0;i<nump;i++)//judge date ok
{
pointuse=point+3*i;
if((0==(*(pointuse+2)))&&(0==(*(pointuse+1)))&&(0==*pointuse)&&(nump==1))
{
break;
}
if((0==testdaymonth(pointuse))||(0==*(pointuse+2))||(*(pointuse+2)>5))
return 0;//value//=0
}
return price_fuhe_judge(nump,point);
}
unsigned char thevalueisbcd1to60(unsigned char value)
{
if((1==testbcd(value))&&(value!=0)&&(value<0x61))
return 1;
else
return 0;
}
void displayalloroff(unsigned char value)
{unsigned char *dn12,dn11;
dn12=&lram0;
for(dn11=0;dn11<24;dn11++)
{
(*dn12)=value;
dn12++;
}
}
unsigned char envent_clr()
// shi jian qing ling
{unsigned char l;
unsigned int i;
showcomm;
qingqiuduishi_rtc=1;
//ram
for(i=R_LOSTV_NUM;i<R_PROG_NUM;i++)
RAM[i]=0;
for(i=R_ALLLOSTV_NUM;i<R_YONGHUHAO_L;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;
// RFLAG_DEMANGCLR_LOCK=0;
// RTIMER_DEMANGCLR_LOCK=0;
for(l=0;l<6;l++)
RAM[R_CURRENT_KW+l]=0;
//fm
for(l=0;l<200;l++)
wr_data[l]=0;
//FM LOSTV
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
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;
write(FM,9);
data_addr.addri=FM_ALLLOSTV_NUM;
write(FM,30);
data_addr.addri=FM_CUOFENG_KWH_F;
write(FM,58);
data_addr.addri=FM_TIMER_DEMANGCLFM_LOCK;
write(FM,2);
data_addr.addri=FM_LAST_CUTV_START_DATE;
write(FM,12);
if(1==tingdian_ack())
return 0;
data_addr.addri=FM_CUOFENG_BUFFER;
write(FM,128);
if(1==tingdian_ack())
return 0;
data_addr.addri=FM_CUOFENG_BUFFER+128;
write(FM,128);
if(1==tingdian_ack())
return 0;
for(l=0;l<16;l++)
{
watchdog();
data_addr.addri=FM_LOSTV_RECORD_BLOCKADDR+85*l;
write(FM,85);
if(1==tingdian_ack())
return 0;
}
for(l=0;l<8;l++)
{
watchdog();
data_addr.addri=FM_ALLLOSTV_RECORD_BLOCKADDR+112*l;
write(FM,112);
if(1==tingdian_ack())
return 0;
}
//EP1
for(l=0;l<16;l++)
{
watchdog();
data_addr.addri=EP1_BIAOGAI_RECORD_BLOCKADDR+16*l;
write(EP1,16);
if(1==tingdian_ack())
retur
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -