📄 xlbh.c
字号:
void circle(uchar x,uchar y);
//void writeeepfirst();//new
////////////////////////////////////////////////////////
void dissets();
void itoview(long);
void fsjs(char t1,char t2);
char key();
void writeset();
void writeout();
void delay(int ww);
void load_eep();
void write_eep(char wk);
void chang_set();
void di_chang();
void writep(char wkk);
void writeeram();
void writetram();
long srqt( long tt );
long fzjs(int ttr,int ttx);
void change_pro(); //bao hu tou tui cai dan
void page_pro(char n,unsigned int proword);//bao hu tou tui jie mian
void gwrite_hzzf(uchar x,uchar y,uchar *hz, uchar n );//zheng fan xian shi han zi
//char disjs(long ttv1,int ttv2);
/*////////////////////////////////////////////////////////////////////////////////*/
/*/////////////////////////////// main /////////////////////////////////////*/
/*///////////////////////////////////////////////////////////////////////////////*/
main()
{
unsigned char t1,t3,ti;
unsigned int t2,t4;//my
int tttt,tttr,tttx;
long ltemp1,ltemp9;
/* RAM selfcheck */
/*
for(s1=0;s1<=0x7fff;s1++)
{
XBYTE[s1]=0xff;
if( *((unsigned char xdata *)s1) !=0xff ) { XBYTE[OUT1]=0x80; }
XBYTE[s1]=0x00;
if( *((unsigned char xdata *)s1) !=0x00 ) { XBYTE[OUT1]=0x80; }
}
for(t1=0;t1<10;t1++) for(t3=0;t3<0xc0;t3++) ;
*/
/* INIT */
pe=0x2a000L;/*2是一个偏移量 ZHE SHI DIZHI */
pee=0x2a000L;
pebz=0x2a300L;/*koulingzi deng*/
lepq=0x2c030L;
eee=0x2c020L;
oo2=0x2c01eL;
psett=(unsigned char *)sett;
k=m=o1=o11=0;//times=0;
viewfirst=1;iii=0;back=0;trip=0;trip0=0;o1_flag=0;
w1_position[0]=w1_position[1]=w1_position[2]=0xff;
if((*(oo2+1))==0x55) o2=*oo2;
else { o2=0; *oo2=0; *(oo2+1)=0x55; }
mark1=mark2=mark3=mark4=mark5=mark6=mark7=mark8=mark9=0;
w1=w2=w1_status=value=fj_num=ring=0;
f=2778; fl=0x25; fh=0xf5; /* 20M f=2778; fl=0x25; fh=0xf5; */
prun=1; chk_num=0;
selfcheck=ch_counter=k_counter=p_counter=in_num=w_i=M_num=op_relay=edelay=0;
f1=f2=0;f4=33333; /* 20M f4=33333; */
passed=0; select_mark=0; PT_mark=0;dz_mark=0;
st=st1=st2=st3=0;
ws1=ws2=ws3=ws4=0;
ch_num=0;
P1_3=0; P1_5=1; /* QDJ bei sou */
XBYTE[OUT1]=0x00;/*继电器复位*/
XBYTE[OUT2]=0x00;/*继电器复位,灯灭*/
XBYTE[IDT]=0; XBYTE[IDT+1]=0;
XBYTE[IDT+0x0040]=0;
XBYTE[IDT+0x0060]=0;
XBYTE[IDT+0x0090]=0;
XBYTE[IDT+0x00c0]=0;
XBYTE[IDT+0x0300]=0;
XBYTE[IDT+0x0150]=0;
XBYTE[IDT+0x0250]=0;
XBYTE[IDT+0x0251]=0;
XBYTE[IDT+0x0260]=0;/*初始化双口RAM*/
////////////////////////////////////////// for PSD954
csioport[PAGE]=0;csioport[VM]=0x12;
csioport[PORTA_Control]=0xff;
csioport[PORTA_Direction]=0xff;
////////////////////////////////////////////////////
/* INT */
IP=0x02; IE=0x8a;//定时器中断
T2CON=0x0d; /* 定时器2初始化 /* set p1.1 */
//EA=1;ET0=1;
/* set Time0,Time1 */
TMOD=0x11;
TL0=0x25;TH0=0xf5; TL1=0x01;TH1=0;
TR0=1; TR1=1; /* start Time0,1 */
qd_begin=1;/* begin=1;*/ begin_t=time_counter; i=0; /* for L110 */
/* set Watchdog */
CKCON=CKCON|0x80;/*计数器,指令的对应的机器周期*/
TA=0xaa;TA=0x55; //////
RWT=1; /*内部软件狗重置启动*/ ///////
TA=0xaa;TA=0x55;
EWT=1;/*软件狗重置允许*/
CKCON=CKCON&0xf8;
/*time chip energe pulse*/
*(lepq+4)=*(lepq+4)+1;
if(*(lepq+4)>256) *(lepq+4)=0;
for(t4=0; t4<4; t4++)
{
if(*(lepq+t4)<0 || *(lepq+t4)>999999 ) *(lepq+t4)=0;
En1[t4]=0;
Ei[t4]=(*((unsigned char xdata *)IN2))&0xf0;
}
for(t4=0; t4<5 ;t4++) epq[t4]=*(lepq+t4);
/*end*/
for(t1=0;t1<12;t1++)
/*rt[t1]=*/et[t1]=DI1[t1]=DI2[t1]=DI3[t1]=e[t1]=up1[t1]=0;
for(t1=12;t1<17;t1++)et[t1]=0;
for(t1=0;t1<18;t1++)
rt[t1]=0;
for(t1=0;t1<4;t1++)Tch[t1]=0;
//qda=qdb=qdc=qd2=0;
disinit(); /* display init */
page();/*xian shi zhu jiemian*/
t1=*(pee);t3=*(pee+1); /*读PEEROM,SHE DING JIAOZHENG ZI */
if((t1!=0xaa)||(t3!=0x55)||(*(pee+750)!=0xaa)||(*(pee+751)!=0x55))
{
*(pee)=0xaa;delay(25);
*(pee+1)=0x55;delay(25);
*(pee+750)=0xaa;delay(25);
*(pee+751)=0x55;delay(25);
p_counter=0;
for(t1=37;t1<=38;t1++)
{
for(t2=0;t2<3;t2++)
{
*(pee+t1*2+2+t2*76)=0x03;delay(25); *(pee+t1*2+3+t2*76)=0xe8;delay(25);
*(pee+t1*2+2+250+t2*76)=0x03;delay(25); *(pee+t1*2+3+250+t2*76)=0xe8;delay(25);
*(pee+t1*2+2+500+t2*76)=0x03;delay(25); *(pee+t1*2+3+500+t2*76)=0xe8;delay(25);
p_counter=0;
}
}
}
if(t1=*(pebz+1539),t1 != ((t1/4)*4) ) *(pebz+1539)=0; delay(25);
p_counter=0;
for(t2=0;t2<=1539;t2++) bz[t2]=*(pebz+t2); /* load record form EEPROM */
k_bz1=k_bz2=bz[1539];
#if 0
writeeepfirst();
#endif
load_eep(); /* load set from EEPROM */
chang_set();/* change the set*/
writeeram();
bz1[0]=bz1[8]=bz1[16]=bz1[24]=bz1[32]=bz1[40]=0;
bz1[48]=bz1[56]=bz1[64]=bz1[72]=bz1[80]=bz1[88]=0;
t4=i3=i4=*((unsigned char xdata *)IN1);
t2=*((unsigned char xdata *)IN2);
i5=t4+(t2<<8);
in_k=1;
lbbz1=0; lbbz2=1; lbtxn=0;
/*xun huan*/
l1: ;
if((P1_2==0)&&((time1_counter-dis_t)>=36000)) {P1_2=1;disinit();page00();}/*到了时间就关闭背光灯*/
k_counter=p_counter=key_no=0;
/* set order */
if( (*((unsigned char xdata *)(IDT+0x0300))) == 0x55
&&(*((unsigned char xdata *)(IDT+0x0300+219))) == 0x55 )
{
/* for(t4=0;t4<36*3;t4++)
{
ppp=&se[t4];
*ppp=*((unsigned char xdata *)(IDT+0x0300+t4*2+4));
*(ppp+1)=*((unsigned char xdata *)(IDT+0x0300+t4*2+3));
}*/
for(t4=0;t4<3;t4++)
{
sett[0]=(t4+1)*100;
for(t2=0;t2<36;t2++)
{
ppp=(unsigned char *)(&sett[t2+1]);
*ppp =*((unsigned char xdata *)(IDT+0x0300+t4*72+t2*2+4));
*(ppp+1)=*((unsigned char xdata *)(IDT+0x0300+t4*72+t2*2+3));
}/*sett[] init*/
write_eep(0);
}
ppp=(unsigned char *)(&sett[0]);
*ppp=*((unsigned char xdata *)(IDT+0x0300+2));
*(ppp+1)=*((unsigned char xdata *)(IDT+0x0300+1));
*(pee+2)=*psett; delay(25);
*(pee+3)=*(psett+1); delay(25);
load_eep();
chang_set();
XBYTE[IDT+0x0300]=0; XBYTE[IDT+0x0300+219]=0;
}
if(*((unsigned char xdata *)(IDT+0x0251))==0x55)
{ o2=o2&0x00;XBYTE[OUT2]=o2; xhfg();}/*turn off the lamp,and the relay*/
#if EE
/* setting E */
if( (*((unsigned char xdata *)(IDT+0x0090))) == 0x55 )
{
for(t4=0;t4<EE_num;t4++)
{
ppp=(unsigned char *)(&epq[t4]);
*ppp=*((unsigned char xdata *)(IDT+0x0091+t4*4+3));
*(ppp+1)=*((unsigned char xdata *)(IDT+0x0091+t4*4+2));
*(ppp+2)=*((unsigned char xdata *)(IDT+0x0091+t4*4+1));
*(ppp+3)=*((unsigned char xdata *)(IDT+0x0091+t4*4+0));
writep(t4);
*(eee+t4)=0;/*清双口RAM 中的某一位 */
}
/* writeeram(); */
XBYTE[IDT+0x0090]=0;
}
writeeram();
#endif
/* jilu selfchek fault */
/*
if( sck1==1 && ck1==0 ) { selfcheck=1; ck1=1; }
if( sck2==1 && ck2==0 ) { selfcheck=1; ck2=1; }
if( sck3==1 && ck3==0 ) { selfcheck=1; ck3=1; }
if( sck4==1 && ck4==0 ) { selfcheck=1; ck4=1; }
if( sck5==1 && ck5==0 ) { selfcheck=1; ck5=1; }
if( sck6==1 && ck6==0 ) { selfcheck=1; ck6=1; }
if( sck7==1 && ck7==0 ) { selfcheck=1; ck7=1; }
if( sck8==1 && ck8==0 ) { selfcheck=1; ck8=1; }
if(sck1==1 || sck2==1 || sck3==1 || sck4==1 ||
sck5==1 || sck6==1 || sck7==1 || sck8==1 )
{ o1=o1|0x80; XBYTE[OUT1]=o1; }
else
{ o1=o1&0x7f; XBYTE[OUT1]=o1; }
if( selfcheck == 1 )
{
t2=((unsigned int)bz[1539])*6;
bz[t2+0]=*((unsigned char xdata *)(TIM+9));
bz[t2+1]=*((unsigned char xdata *)(TIM+8));
bz[t2+2]=*((unsigned char xdata *)(TIM+7));
bz[t2+3]=*((unsigned char xdata *)(TIM+4));
bz[t2+4]=*((unsigned char xdata *)(TIM+2));
bz[t2+5]=*((unsigned char xdata *)TIM);
mss=(ms*5)/ms_1; pp=&mss;
bz[t2+6]=*(pp+1); bz[t2+7]=*pp;
bz[t2+8]=2;
pp=&w2;
bz[t2+9]=*(pp+1); bz[t2+10]=*pp;
bz[1539]+=4;
selfcheck=0;
}
*/
/* jilu protect and switch operate */
t3=bz[1539];
if(t3 != k_bz1)
{
if(++edelay < 25) goto ll3;
edelay=0;
*(pebz+1539)=t3; delay(25);
l3:
t2=(unsigned int)k_bz1*6;
for(t4=0;t4<17;t4++) { *(pebz+t2+t4)=bz[t2+t4]; delay(25); }
k_bz1+=4;
if(k_bz1 != t3 ) goto l3;
}
ll3:
chn=i-12;
#if BB35
DI1[0]=f4; //ia,ic,ua,ub,uc,ib f4=3333
fsjs(0,7);fsjs(9,9);
tttr=(trr[2]-trr[3]); tttx=(txx[2]-txx[3]);
DI1[1]=fzjs(tttr,tttx); /* Uab */
tttr=(trr[3]-trr[4]); tttx=(txx[3]-txx[4]);
DI1[2]=fzjs(tttr,tttx); /* Ubc */
tttr=(trr[4]-trr[2]); tttx=(txx[4]-txx[2]);
DI1[3]=fzjs(tttr,tttx); /* Uca */
DI1[4]=fzjs(trr[2],txx[2]); //ua
DI1[5]=fzjs(trr[3],txx[3]); //ub
DI1[6]=fzjs(trr[4],txx[4]); //uc
DI1[7]=fzjs(trr[9],txx[9]); /* 3U0 */
DI1[8]=fzjs(trr[0],txx[0]); //ia
DI1[9]=fzjs(trr[1],txx[1]); //ic
trr[12]=(int)(-(long)trr[0]-(long)trr[1]);
txx[12]=(int)(-(long)txx[0]-(long)txx[1]); /* ib */
/* S=P+jQ=U*I^ */
DI1[10]=((long)trr[0]*trr[2] + (long)txx[0]*txx[2] //p
+(long)trr[12]*trr[3] + (long)txx[12]*txx[3]
+(long)trr[1]*trr[4] + (long)txx[1]*txx[4])>>7;
DI1[11]=((long)trr[0]*txx[2] - (long)txx[0]*trr[2] //q
+(long)trr[12]*txx[3] - (long)txx[12]*trr[3]
+(long)trr[1]*txx[4] - (long)txx[1]*trr[4])>>7;
/************************************************************************/
/*********pt duan xian***********/
if(prun == 0 &&( DI1[4]<e[15] || DI1[5]<e[15]|| DI1[6]<e[15]))
{
fsjs(12,12); //fu xu dian ya
ltemp1=(long)trr[12] * trr[12] + (long)txx[12] * txx[12];
if((DI1[1]>=DI1[2])&&(DI1[1]>=DI1[3])) {ltemp9=DI1[1];} //bi jiao xian dian ya
else {if((DI1[2]>=DI1[1])&&(DI1[2]>=DI1[3])) {ltemp9=DI1[2];}
else {ltemp9=DI1[3];}}/*zhao zui da zhi*/
/////////ptduanxian
if( (pro2&0x04)==0x04 && ((ltemp1 > e[7] )||((ltemp9 < e[8])&&(s7> e[9]))))
{ PT_mark1=1;ti=0;
if(jjj=time_counter-rt[3],jjj > 6000 )
// { if(kk1==0){ kk1=1; o2=o2|0x80; w1=w1|0x1000;trip0=1;} }
{{k4=1; o2=o2|0x82; w1=w1|0x0200;trip0=1;} }
}
else
{if((ltemp1<(e[7]-(e[7]>>3)))&&((ltemp9>(e[8]+(e[8]>>3)))||(s7<(e[9]-(e[9]>>3)))))ti++;
if(ti>10){ti=10; PT_mark1=0;rt[3] = time_counter; k4=0; k44=0; w1=w1&0xfdff; }
}
}
/*************************************************************************/
#endif
DI1[12]=fzjs(trr[12],txx[12]); //ib
DI1[13]=fzjs(trr[5],txx[5]); //Ia
DI1[14]=fzjs(trr[6],txx[6]); //Ib
DI1[15]=fzjs(trr[7],txx[7]); //Ic
// DI1[16]=fzjs(tr[8],tx[8]); //Ic
/* gong yong cheng xu */
for(t1=0; t1 < Num_dp; t1++) MSC[t1][M_num]=DI1[t1];
M_num++;
if(M_num==8 )
{ /* for Num_pin==4 */
M_num=0;
for(t3=0; t3 < Num_dp; t3++)
{DI2[t3]=0;for(t1=0; t1 < 8; t1++)DI2[t3] =DI2[t3] + (MSC[t3][t1]>>1);
}
di_chang();
/* begin for UPdata */
if( *((unsigned char xdata *)(IDT+1)) == 0 )
{ t3=bz[1539];
if(t3 != k_bz2) {
t2=(unsigned int)k_bz2*6;
mss=bz[t2+6]+(bz[t2+7]<<8);
mss=mss*5/3; p=(unsigned char *)(&mss);
XBYTE[IDT+0x0041+6]=*(p+1); XBYTE[IDT+0x0041+7]=*p;
for(t4=0;t4<11;t4++)
{
if( t4!=6 && t4!=7 )
XBYTE[IDT+0x0041+t4]=bz[t2+t4];
}
k_bz2+=4;
XBYTE[IDT+0X40]=0X55;
XBYTE[IDT+1]=0x55; /* shang chuan SOE */
}
}
XBYTE[IDT]=0; XBYTE[IDT+3]=Num_up1;
p=(unsigned char *)(&i5);
XBYTE[IDT+4]=*(p+1); XBYTE[IDT+5]=*p; XBYTE[IDT+6]=0; /*kai ru*/
/* t2=w1-24; */
if(XBYTE[IDT+55]==0x00)
{p0=0;w1_mem=0x00; XBYTE[IDT+55]=0x55;}
p=(unsigned char *)(&w1_mem);
XBYTE[IDT+7]=*(p+1); XBYTE[IDT+8]=*p;
p=w1_position;
XBYTE[IDT+50]=*(p); XBYTE[IDT+51]=*(p+1);XBYTE[IDT+52]=*(p+2);//XBYTE[IDT+53]=*(p+3);XBYTE[IDT+54]=*(p+4);
w1_position[0]=w1_position[1]=w1_position[2]=0xff;//=w1_position[3]=w1_position[4]=0xff;
for(t1=0; t1<Num_up1; t1++)
{
t3=t1*2+9; p=(unsigned char *)(&up1[t1]);
XBYTE[IDT+t3]=*(p+1); XBYTE[IDT+t3+1]=*p; /*mo ru*/
}
XBYTE[IDT+0x3e]=pro1;XBYTE[IDT+0x3f]=pro2;
XBYTE[IDT]=0x55;
/*
t1=LB_chnum<<1; t4=(int)(LB_zbnum*6);
if(*((unsigned char xdata *)(IDT+0x0800))==0)
{
if((lbtx==1)&&(lbtxn<t1))
{
XBYTE[IDT+0x0801]=LB_chnum; XBYTE[IDT+0x0802]=LB_zbnum;
XBYTE[IDT+0x0803]=lbtxn;
for(t2=0;t2<t4;t2++)
{
ppp=&LB[t2+lbtxn*t4];
XBYTE[IDT+0x0804+t2*2]=*(ppp+1);
XBYTE[IDT+0x0805+t2*2]=*(ppp);
}
lbtxn++; XBYTE[IDT+0x0800]=0x55;
}
else { lbtx=0;lbtxn=0;}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -