📄 global_function.h
字号:
unsigned int i,j;
{unsigned char l;
if(4==testbcdnum(&RAM[i],2)+testbcdnum(&RAM[j],2))
{
l=compare_1_byte(i+1,j+1);
if(l!=2)
return l;
else
{
l=compare_1_byte(i,j);
if(l==1)
return 1;
else
return 0;
}
}
else
return 0;
}
*/
unsigned char compare_3_byte(i,j)
unsigned int i,j;
{unsigned char l;
if(6!=testbcdnum(&RAM[i],3)+testbcdnum(&RAM[j],3))
return 0;
l=compare_1_byte(i+2,j+2);
if(l!=2)
return l;
else
{
l=compare_1_byte(i+1,j+1);
if(l!=2)
return l;
else
{
l=compare_1_byte(i,j);
if(l==1)
return 1;
else
return 0;
}
}
}
// 0<= 1>
unsigned char compare_4_byte(i,j)
unsigned int i,j;
{unsigned char l;
if(8==testbcdnum(&RAM[i],4)+testbcdnum(&RAM[j],4))
{
l=compare_1_byte(i+3,j+3);
if(l!=2)
return l;
else
{
l=compare_1_byte(i+2,j+2);
if(l!=2)
return l;
else
{
l=compare_1_byte(i+1,j+1);
if(l!=2)
return l;
else
{
l=compare_1_byte(i,j);
if(l==1)
return 1;
else
return 0;
}
}
}
}
else
return 0;
}
// rr求下一个指针AAAA
unsigned char next_point(biao_type,len)
unsigned char biao_type,len;
{
unsigned char value;
value=0;
data_addr.addri=FM_POINT_TWOTABLE+biao_type;
if(1==read(FM,1))
{
if(0==wr_data[0])
wr_data[0]=len;// <-------------
else
{
wr_data[0]=wr_data[0]-1;//<---------------
if(wr_data[0]>len)
wr_data[0]=len;
}
if(1==write(FM,1))
value=1;
}
return value;
}
void time_to_point(unsigned char *point)
{ unsigned char l;
if(1==testsecond_minute_hour_day_month_year(&RSOFT_RTC_SECOND,&RSOFT_RTC_DAY))
{
*point=RSOFT_RTC_DAY;
*(point+1)=RSOFT_RTC_MONTH;
*(point+2)=RSOFT_RTC_YEAR;
*(point+3)=RSOFT_RTC_SECOND;
*(point+4)=RSOFT_RTC_MINUTE;
*(point+5)=RSOFT_RTC_HOUR;
}
else
for(l=0;l<6;l++)
*(point+l)=0;
}
// time--- wr_data
void time_to_wrdata()
{
time_to_point(&wr_data[0]);
}
void time_to_bianchengqian()
{
time_to_point(&bianchengqian[0]);
}
void biancheng_jilu_use(unsigned char a)
{unsigned char l;
time_to_wrdata();
if(a==0)
for(l=0;l<4;l++)
{
if(tongdao==comm485_1)
wr_data[l+6]=zhangjihao_485[l];
else
if(tongdao==comm485_0)
wr_data[l+6]=zhangjihao_485_0[l];
else
wr_data[l+6]=zhangjihao[l];
}
else
for(l=0;l<4;l++)
wr_data[l+6]=0;
}
// bian编程情况AAAAA
void onetime_biancheng(a,b1,b2)
unsigned char a; // 1 zhang ji 0----zhangji hao 0000
unsigned char b1,b2; // bian cheng dai ma
{unsigned char l;
byte_2_bcd_add(R_PROG_NUM);
copy_ram_to_fm(R_PROG_NUM,2,R_PROG_NUM);
if(1==next_point(TYPE_FM_PROGRAM_RECORD,9))
{// read zhi zhen
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_PROGRAM_RECORD,0);
biancheng_jilu_use(a);
wr_data[10]=b2;// b1
wr_data[11]=b1;// b2
write(FM,12);
}
}
void kwhkvarh_proguse(a,before,now,type)
unsigned char a,type; // 0 zhang ji 1---00000 quan guo
unsigned char *before,*now;
{unsigned char l;
unsigned int addr;
if(1==next_point(type,4))
{// read zhi zhen
//set_addr_by_twobiao(TYPE_EP1_KWHPROGRAM_RECORD);
data_addr.addri=current_twobiaofm_block_addr(type,0);
addr=data_addr.addri;
biancheng_jilu_use(a);
for(l=0;l<40;l++)
wr_data[10+l]=*(before+l);
for(l=0;l<40;l++)
wr_data[50+l]=*(now+l);
write(EP1,30);
for(l=0;l<30;l++)
wr_data[l]=wr_data[l+30];
data_addr.addri=addr+30;
write(EP1,30);
watchdog();
for(l=0;l<30;l++)
wr_data[l]=wr_data[l+60];
data_addr.addri=addr+60;
write(EP1,30);
}
}
// you 有功电量编程情况AAAA
void onetime_kwhp(a,before,now)
unsigned char a; // 0 zhang ji 1---00000 quan guo
unsigned char *before,*now;
{
kwhkvarh_proguse(a,before,now,TYPE_EP1_KWHPROGRAM_RECORD);
}
// WU无功电量编程情况AAAA
void onetime_kvarhp(a,before,now)
unsigned char a; // 0 zhang ji 1---00000 quan guo
unsigned char *before,*now;
{
kwhkvarh_proguse(a,before,now,TYPE_EP1_KVARHPROGRAM_RECORD);
}
void cun_from_currenttime_addri(unsigned char a)
{
switch(a)
{
case TYPE_EP1_HISTROY_KWH:
case TYPE_EP1_HISTROY_KWH2:
case TYPE_EP1_HISTROY_KWH3:
// dian liang
data_addr.addri=FM_YIZHUANCUN_DIANLIANG;
break;
case TYPE_EP1_HISTROY_KW:
case TYPE_EP1_HISTROY_KW2:
case TYPE_EP1_HISTROY_KW3:
// xuliang
data_addr.addri=FM_XULIANG_YIZHUANCUN_DATE;
break;
/*Start of lzh on 2009-2-26 15:23 山东烟台0902/
// dian liang
data_addr.addri=FM_YIZHUANCUN_DIANLIANG;
break;
// xuliang
data_addr.addri=FM_XULIANG_YIZHUANCUN_DATE;
break;
// dian liang
data_addr.addri=FM_YIZHUANCUN_DIANLIANG;
break;
// xuliang
data_addr.addri=FM_XULIANG_YIZHUANCUN_DATE;
break;
/End of lzh on 2009-2-26 15:23 山东烟台0902*/
// case 39: // cuo feng
default:
data_addr.addri=FM_CUOFENG_YICUN;
break;
}
}
void time_prog_changecun(unsigned char a)
{
cun_from_currenttime_addri(a);
wr_data[0]=0x24;
write(FM,1);
}
// shijian时间编程情况AAAA
void onetime_timedatep(a,before)
unsigned char a; // 0 zhang ji 1---00000 quan guo
unsigned char *before;
{unsigned char l;
if(1==next_point(TYPE_FM_TIMEPROGRAM_RECORD ,4))
{// read zhi zhen
data_addr.addri=current_twobiaofm_block_addr(TYPE_FM_TIMEPROGRAM_RECORD,0);
biancheng_jilu_use(a);
for(l=0;l<6;l++)
wr_data[10+l]=*(before+l);
for(l=0;l<6;l++)
wr_data[16+l]=wr_data[l];
for(l=0;l<6;l++)
wr_data[l]=wr_data[l+10];
write(FM,22);
// zhan cun
if((RSOFT_RTC_YEAR!=(*(before+2)))||(RSOFT_RTC_MONTH!=(*(before+1))))
{
time_prog_changecun(TYPE_EP1_HISTROY_KWH);
time_prog_changecun(TYPE_EP1_HISTROY_KW);
time_prog_changecun(TYPE_EP1_CUOFENGKWH_RECORD);
}
}
}
/*******************************************************************************/
void set_before(unsigned char set_type)
{unsigned char num,l;
unsigned int addr;
num=0;
switch(set_type)
{
case TYPE_EP1_PRICEPROGRAM_RECORD:
if(current_num_price_prog>4)
current_num_price_prog=0;// inside 0----4
// 0 tao
num=36;
addr=R_PRICE_NO1_1+36*current_num_price_prog;
break;
case TYPE_EP1_SEASONPROGRAM_RECORD:
// fe he
num=36;
addr=R_ONUS_1 ;
break;
case TYPE_EP1_HOLIDAYPROGRAM_RECORD:
// jie jia ri
num=90;
addr=R_HOLIDAY1;
break;
case TYPE_FM_WORKOFFPROGRAM_RECORD:
// gong xiu ri shi tao
num=2;
addr=R_WORKOFFDAY;
break;
case TYPE_FM_KVARHMODEPROGRAM_RECORD:
// wu gong zu he
num=4;
addr=R_KWHMODE_F;
break;
case TYPE_FM_CHAOBIAORIPROGRAM_RECORD:
// chao biao ri
num=2;
addr=R_CHAOBIAORI;
Set_Chaobiaori_Flag = 0;
break;
case TYPE_FM_CHAOBIAORIPROGRAM23_RECORD:
// chao biao ri
num=2;
if(Set_Chaobiaori_Flag == 2)
addr=R_CHAOBIAORI2;
else if(Set_Chaobiaori_Flag == 3)
addr=R_CHAOBIAORI3;
break;
default:
break;
}
for(l=0;l<num;l++)
bianchengqian[l]=RAM[addr+l];
}
/*************************************************************/
void set_end(set_type,a)
unsigned char set_type,a;
{unsigned char num,l,lp;
unsigned int addr,len;
unsigned int h;
unsigned char value,type_stor,block;
value=0;
num=0;
switch(set_type)
{
case TYPE_EP1_PRICEPROGRAM_RECORD:
if(current_num_price_prog>4)
current_num_price_prog=0;//inside 0---------4
// 0 tao
num=36;
addr=R_PRICE_NO1_1+36*current_num_price_prog;
value=1;
type_stor=EP1;
block=5;
break;
case TYPE_EP1_SEASONPROGRAM_RECORD:
// fe he
num=36;
addr=R_ONUS_1 ;
value=1;
type_stor=EP1;
block=3;
break;
case TYPE_EP1_HOLIDAYPROGRAM_RECORD:
// jie jia ri
num=90;
addr=R_HOLIDAY1;
value=1;
type_stor=EP1;
block=3;
break;
case TYPE_FM_WORKOFFPROGRAM_RECORD:
// gong xiu ri shi tao
num=2;
addr=R_WORKOFFDAY;
value=1;
type_stor=FM;
block=5;
break;
case TYPE_FM_KVARHMODEPROGRAM_RECORD:
// wu gong zu he
num=4;
addr=R_KWHMODE_F;
value=1;
type_stor=FM;
block=5;
break;
case TYPE_FM_CHAOBIAORIPROGRAM_RECORD:
// chao biao ri
num=2;
addr=R_CHAOBIAORI;
value=1;
type_stor=FM;
block=5;
break;
case TYPE_FM_CHAOBIAORIPROGRAM23_RECORD:
// chao biao ri
num=2;
if(Set_Chaobiaori_Flag == 2)
addr=R_CHAOBIAORI2;
else if(Set_Chaobiaori_Flag == 3)
addr=R_CHAOBIAORI3;
// Set_Chaobiaori_Flag = 0;
value=1;
type_stor=FM;
block=5;
default://TYPE_FM_CHAOBIAORIPROGRAM_RECORD
break;
}
if(1==value)
{
if(type_stor==FM)
{
if(1==next_point(set_type,block-1))
{
data_addr.addri=TABLE_TWO1[set_type].blockaddr;
len=TABLE_TWO1[set_type].lensubblock;
data_addr.addri=data_addr.addri+len*wr_data[0]+1;
biancheng_jilu_use(a);
for(l=0;l<num;l++)
wr_data[l+10]=bianchengqian[l];
for(l=0;l<num;l++)
wr_data[l+10+num]=RAM[l+addr];
write(FM,10+2*num);
}
}
else
switch(set_type)
{
case TYPE_EP1_PRICEPROGRAM_RECORD:
if(1==next_point(set_type,block-1))
{
data_addr.addri=TABLE_TWO1[set_type].blockaddr;
len=TABLE_TWO1[set_type].lensubblock;
data_addr.addri=data_addr.addri+len*wr_data[0]+1;
biancheng_jilu_use(a);
wr_data[10]=current_num_price_prog+1;///l1---5
for(l=0;l<num;l++)
wr_data[l+11]=bianchengqian[l];
for(l=0;l<num;l++)
wr_data[l+11+num]=RAM[l+addr];
h=data_addr.addri;
write(EP1,60);
watchdog();
for(l=0;l<23;l++)
wr_data[l]=wr_data[l+60];
data_addr.addri=h+60;
write(EP1,23);
}
break;
case TYPE_EP1_SEASONPROGRAM_RECORD:
if(1==next_point(set_type,block-1))
{
data_addr.addri=TABLE_TWO1[set_type].blockaddr;
len=TABLE_TWO1[set_type].lensubblock;
data_addr.addri=data_addr.addri+len*wr_data[0]+1;
biancheng_jilu_use(a);
for(l=0;l<num;l++)
wr_data[l+10]=bianchengqian[l];
for(l=0;l<num;l++)
wr_data[l+10+num]=RAM[l+addr];
h=data_addr.addri;
write(EP1,60);
watchdog();
for(l=0;l<22;l++)
wr_data[l]=wr_data[l+60];
data_addr.addri=h+60;
write(EP1,22);
}
break;
case TYPE_EP1_HOLIDAYPROGRAM_RECORD:
if(1==next_point(set_type,block-1))
{
data_addr.addri=TABLE_TWO1[set_type].blockaddr;
len=TABLE_TWO1[set_type].lensubblock;
data_addr.addri=data_addr.addri+len*wr_data[0]+1;
biancheng_jilu_use(a);
for(l=0;l<num;l++)
wr_data[l+10]=bianchengqian[l];
for(l=0;l<num;l++)
wr_data[l+10+num]=RAM[l+addr];
h=data_addr.addri;
write(EP1,60);
for(l=0;l<60;l++)
wr_data[l]=wr_data[l+60];
data_addr.addri=h+60;
write(EP1,60);
for(l=0;l<60;l++)
wr_data[l]=wr_data[l+120];
data_addr.addri=h+120;
write(EP1,60);
watchdog();
for(l=0;l<10;l++)
wr_data[l]=wr_data[l+180];
data_addr.addri=h+180;
write(EP1,10);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -