⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xlbh.c

📁 基于C51体系结构实现的电路保护的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
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 + -