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

📄 xlbh.c

📁 基于C51体系结构实现的电路保护的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
{s1=((long)tr[2]-tr[3]);    s2=((long)tx[2]-tx[3]) ;         
 s4=s1*s1+s2*s2;
 s1=((long)tr[3]-tr[4]);    s2=((long)tx[3]-tx[4]);           
 s5=s1*s1+s2*s2;
 s1=((long)tr[4]-tr[2]);    s2=((long)tx[4]-tx[2]);           
 s6=s1*s1+s2*s2;
 if(s4>s5&&s4>s6) s1=s4;
 else if(s5>s4&&s5>s6) s1=s5;
 else s1=s6;
 
 if((PT_mark1==0)&&(s1<e[15]) && (i5&0x03) == 0x01 )//
  {if(jjj=time_counter-rt[5],jjj > et[11] )
      { P1_3=1; P1_5=0;o1=o1|0x20; XBYTE[OUT1]=o1; o2=o2|0x41;//进线低电压
	k5=1; w1=w1|0x4000;trip=trip0=1;thdz_mark=1; recval[14]=s1;}
  }
 else
   if(s1>= (e[15]+(e[15]>>4))&&(i5&0x03) == 0x02)
     { rt[5] = time_counter;k5=0;  w1=w1&0x40ff;} 
 }



#endif


temp1=(i5&0x01)<<1;
temp2=(i5&0x02);
if(temp1!=temp2) qqdd_mark=0;
if(temp1==temp2 && qqdd_mark==0 )
 {if(jjj=time_counter-rt[10],jjj>3000)
      { /*xk3=1;*/o2=o2|0x82;w1=w1|0x80;qqdd_mark=1;trip0=1;}}
else {/*xk3=0;xk33=0;*/rt[10]=time_counter;w1=w1&0xff7f;}

if(thdz_mark==1) 
{if(jjj=time_counter-rt[13],jjj > 1200)
    {	if(((i4&0x03)==(((unsigned char)i5)&0x03))&&qqdd_mark==0  )	{o2=o2|0x82;w1=w1|0x2000;trip0=1;}
	thdz_mark=0;rt[13]=time_counter;
    } 
 
  else if (!((i4&0x03)==(((unsigned char)i5)&0x03) ) ) {thdz_mark=0;rt[13]=time_counter;}
}
else {rt[13]=time_counter;w1=w1&0xdfff;}

i4=(unsigned char)i5;



/*
if( k1==1 && k11==0 ) { k=1; k11=1;xj2=1; }
if( k2==1 && k22==0 ) { k=1; k22=1;xj2=1; }
if( k3==1 && k33==0 ) { k=1; k33=1;xj2=1; }
if( k8==1 && k88==0 ) { k=1; k88=1;xj2=1; }
if( k9==1 && k99==0 ) { k=1; k99=1;xj2=1; }
if( k6==1 && k66==0 ) { k=1; k66=1;xj2=1; }
if( k4==1 && k44==0 ) { k=1; k44=1;xj3=1; }
if( k5==1 && k55==0 ) { k=1; k55=1;xj2=1; }
if( kk1==1 && kk11==0 ) { k=1; kk11=1;xj3=1; }
if( xk3==1 && xk33==0 ) { k=1; xk33=1; xj3=1;  }
*/
#if FOUT
if( k1==0 && k2==0 && k3==0 &&k7==0&& k8==0 &&k9==0 && (o1&0x04)==0x04&&o1_flag==0)
  { o1=o1&0xfb; XBYTE[OUT1]=o1;}
 #endif

#if FIN
if( k1==0 && k2==0 && k3==0 &&k7==0&& k8==0 &&k9==0 && (o1&0x04)==0x04&&o1_flag==0)
  { o1=o1&0xfb; XBYTE[OUT1]=o1;}
  if(k5==0&&(o1&0x20)==0x20&&o1_flag==0)
   { o1=o1&0xdf; XBYTE[OUT1]=o1;}
#endif
 } /* protection */

#endif




/* jilu protection  */


// if(k!=0 && xj2==1 ) { lbbz1=1; k=0; }

 if(w1!=w1_status)
 { ttt=1;
   for(nn=0;nn<=15;nn++)
   { if((w1&ttt) != (w1_status&ttt))
       {
	 if((w1&ttt) !=0 )
	 {
	 temp1=((unsigned int)bz[1539])*6;
	 bz[temp1+0]=*((unsigned char xdata *)(TIM+9));
	 bz[temp1+1]=*((unsigned char xdata *)(TIM+8));
	 bz[temp1+2]=*((unsigned char xdata *)(TIM+7));
	 bz[temp1+3]=*((unsigned char xdata *)(TIM+4));
	 bz[temp1+4]=*((unsigned char xdata *)(TIM+2));
	 bz[temp1+5]=*((unsigned char xdata *)TIM);
	 sjpp=(unsigned char *)(&ms) ;
	 bz[temp1+6]=*(sjpp+1); bz[temp1+7]=*sjpp;
	 bz[temp1+8]=nn+25;
	 /* if((w1&ttt)==0) bz[temp1+9]=0; else */ bz[temp1+9]=1;
	 w1_status=(w1_status&(0xffff^ttt))|(w1&ttt);
	 w1_mem=(w1_mem&(0xffff^ttt))|(w1&ttt);
	 w1_position[p0]=nn;p0++;
	 sjpp=(unsigned char *)(&w1_status);
	 bz[temp1+11]=*(sjpp+1); bz[temp1+12]=*sjpp;
	  sjpp=(unsigned char *)(&recval[nn]);
	 bz[temp1+13]=*(sjpp+3); bz[temp1+14]=*(sjpp+2);
	 bz[temp1+15]=*(sjpp+1); bz[temp1+16]=*sjpp;
	 bz[1539]+=4;
	
	 }
	 else  {w1_status=(w1_status&(0xffff^ttt))|(w1&ttt);
	        }
       }
     ttt=ttt<<1;
   }
 }

/*
 if((lbbz1==1)&&(lbbz2==1))
 {
   ii=i-23;  temp1=256*LB_firstch;  ttt=LB_zbnum*12;
   for(j=0;j<24;j++)
   { jjj=0; LB[j]=D[temp1+ii]; temp2=temp1;
     for(jj=1;jj<LB_chnum;jj++)
     { jjj=jjj+ttt; temp2=temp2+256;
       LB[jjj+j]=D[temp2+ii];}
   ii++;
   }
   lk=24;lbbz2=0;
 }
*/
/*  operate order */

 temp3=*((unsigned char xdata *)(IDT+0x00c0));
 temp4 = *((unsigned char xdata *)(IDT+0x00c0+1));
 if((temp3==0x55)&&(temp4==0x55))
 {
  temp3=*((unsigned char xdata *)(IDT+0x00c0+4));
  temp4=*((unsigned char xdata *)(IDT+0x00c0+5));
  if( (temp3 == 0xaa) && (temp4 == 0xaa ) )
  {
   o1=o1 | *((unsigned char xdata *)(IDT+0x00c0+2));
/*   o2=o2 | *((unsigned char xdata *)(IDT+0x00c0+3));*/


#if BB35  //my
if( (o1&0x0f)!=0x00 ) {ch_counter=0;bisuo_mark=1;}
#endif

  { P1_3=1; P1_5=0; XBYTE[OUT1]=o1;} 
   oply=1;thdz_mark=1;
  }
   XBYTE[IDT+0x00c0]=0;
   XBYTE[IDT+0x00c0+1]=0;
   XBYTE[IDT+0x00c0+4]=0;
   XBYTE[IDT+0x00c0+5]=0;
 }

 temp3=*((unsigned char xdata *)(IDT+0x0251));
// if(temp3==0x55) { o2=o2&0x00;XBYTE[OUT2]=o2; w1=0;  XBYTE[IDT+0X251]=0;}
 if(temp3==0x55) { o2=o2&0x00;XBYTE[OUT2]=o2; XBYTE[IDT+0X251]=0;xhfg();}//2000-11-01


 if( oply == 1)
 {
  if( jjj=time_counter-op_relay,jjj > 1200 )
  {
    o1=o1 & ~(*((unsigned char xdata *)(IDT+0x00c0+2)));
   /* o2=o2 & ~(*((unsigned char xdata *)(IDT+0x00c0+3)));*/
    XBYTE[OUT1]=o1;
   oply=0;  /*ji dianqi fugui*/
  }
 }
 else op_relay=time_counter;
/* IO selfcheck */
/*
 chk_num++;
 if( (*((unsigned char xdata *)IN2)&0x80) == 0x00 && chk_num >= 720000)
 {
  chk_num=err=0;
  for(temp3=0;temp3<7;temp3++)
  {
   temp4=0x01<<temp3;
   XBYTE[OUT1]=temp4;  for(temp1=0;temp1<25;temp1++) ;
   if( (*((unsigned char xdata *)IN2)&0x80) == 0x00 )  err++;
   XBYTE[OUT1]=0x00;  for(temp1=0;temp1<25;temp1++) ;
   if( (*((unsigned char xdata *)IN2)&0x80) != 0x00 )  err++;
   XBYTE[OUT2]=temp4;  for(temp1=0;temp1<25;temp1++) ;
   if( (*((unsigned char xdata *)IN2)&0x80) == 0x00 )  err++;
   XBYTE[OUT2]=0x00;   for(temp1=0;temp1<25;temp1++) ;
   if( (*((unsigned char xdata *)IN2)&0x80) != 0x00 )  err++;
  }
  if(err>=5)
  { sck1=1; w2=w2|0x0001; }
  else
  { sck1=ck1=0; w2=w2&0xfffe; }
 }
 if(err>=1 && sck1==1) chk_num=720000;
*/              
/*
#if FT
if(prun==0)
{
 Et1=(*((unsigned char xdata *)IN2))&0xf0;
 for(nn=0;nn<EE_num;nn++)
 {
  mm=0x08<<(nn+1);
 if( (Et2[nn]&mm)==(Et1&mm) )  En1[nn]++;  else { Et2[nn]=Et1; En1[nn]=0; }
 if( En1[nn]>=3 ) {
 if( (Et2[nn]&mm) && !(Ei[nn]&mm) ) {
  *(eee+nn)=*(eee+nn)+1; 
 //if( *(eee+nn) >= et[6] )//
 if(((nn==1||nn==0)&&*(eee+nn) >= et[6])||((nn==2||nn==3)&&(*(eee+nn) >=et[6]*4)))//{}
 { *(eee+nn)=0; epq[nn]++; if(epq[nn]>999999) epq[nn]=0;}
    // writep(nn);		                   
                                     }
 Ei[nn]=Et2[nn];  En1[nn]=0;
		  }
 }
}
#endif
*/
#if EE/mai chong*/
if(prun==0)
{
 Et1=(*((unsigned char xdata *)IN2))&0xF0;
 for(nn=0;nn<EE_num;nn++)
 {
  mm=0x10<<nn;
 if( (Et2[nn]&mm)==(Et1&mm) )  En1[nn]++;  else { Et2[nn]=Et1; En1[nn]=0; }
 if( En1[nn]>=2 ) 
  {
    if( (Et2[nn]&mm) && !(Ei[nn]&mm) ) 
    {
      *(eee+nn)=*(eee+nn)+1; 
      if( *(eee+nn) >= et[6] )//if(nn==0&&*(eee+nn) >= et[6]||((nn==1||nn=2||nn=3)&&(*(eee+nn) >=et[6]*4))){}
          { *(eee+nn)=0; epq[nn]++; if(epq[nn]>999999) epq[nn]=0;}
    // writep(nn);		                   
    }
      Ei[nn]=Et2[nn];  En1[nn]=0;
  }
 }
}
#endif

if((o2&0x40)==0x40)
      { jjj=time_counter-rt[11]; if(jjj>=6000)
      { o2=o2&0xbf; xj2=0; } }/*gu zhang quan liang*/
if((o2&0x40)==0) rt[11]=time_counter;

if((o2&0x80)==0x80)
     { jjj=time_counter-rt[12]; if(jjj>=6000)
     { o2=o2&0x7f; xj3=0; }  }
if((o2&0x80)==0)  rt[12]=time_counter;
//o2=o2&0x00;
XBYTE[OUT2]=o2;    XBYTE[OUT1]=o1;

*oo2=o2;

/* *(oo2+1)=0x55; */

if(o1==0x00 && o11 != 0x00)
{ BSFG=1;BSFGT=time_counter;}/*zhuang zhi qing kuang liang hao*/
if(BSFG==1)
  { if( jjj=time_counter-BSFGT,jjj>100) { P1_3=0; P1_5=1;BSFG=0; } }
o11=o1;

//if((P1_2==0)&&((time1_counter-dis_t)>=9000)) {P1_2=1;disinit();}

P1_0=1;

TR1=0; TL1=0xfa; TH1=0xf2; TR1=1; /* set Time1 20M- 1ms f97d; 2ms f2fa;*/
//TR1=0; TL1=0x95; TH1=0xf5; TR1=1; /*  set Time1 16M- 1ms faca; 2ms f595;*/
}
/*////////////////////////////////////////////////////////////////////////////*/
 /* //////////////////////////end for time1 */////////////////////////////////*/
/*///////////////////////////////////////////////////////////////////////////*/

void fsjs(char k1,char k2)
{
unsigned char t1,t3;
unsigned int  t2,t4;
int tttt;
  t1=chn;
  for(t2=k1;t2 <=k2;t2++)
  {
  t4=t2*256;
tttt=(int)((long)D[t3=t1+2,t4+t3] - D[t3=t1+8,t4+t3]
	       + D[t3=t1+4,t4+t3] - D[t3=t1+10,t4+t3]);
trr[t2] = (int)((long)D[t3=t1+1,t4+t3] - D[t3=t1+7,t4+t3] + D[t3=t1+5,t4+t3]
		 - D[t3=t1+11,t4+t3]) + ((int)((long)D[t3=t1+3,t4+t3] - D[t3=t1+9,t4+t3])<<1)
  +((tttt<<1)-(tttt>>2));

tttt=(int)((long)D[t3=t1+1,t4+t3] - D[t3=t1+7,t4+t3]
		 + D[t3=t1+11,t4+t3] - D[t3=t1+5,t4+t3]);

txx[t2] = (int)((long)D[t3=t1+2,t4+t3] - D[t3=t1+8,t4+t3] + D[t3=t1+10,t4+t3]
		 - D[t3=t1+4,t4+t3]) + ((int)((long)D[t3=t1+12,t4+t3] - D[t3=t1+6,t4+t3])<<1)
  +((tttt<<1)-(tttt>>2));
  }
}

/*////////////////////////////////////////////////////////////////////*/

char key()
{
 unsigned char ke;
 if(L110==1) { if( k_counter > 10000 ) { key_no=1; }}
 else    if( k_counter > 18000 ) { key_no=1; }
 if(key_no==1) return(QUE);
 if((P1&0x10)==0x10) key_mark2=1; else key_mark2=0;
 ke=(P3&0x38)>>3;
 if(key_mark2 == 0) { key_mark1=0; return(7); }/*no key*/
 if( key_mark1==0 && key_mark2 == 1 && ke >= 0 && ke < 7 )
    { key_mark1=1; k_counter=key_no=0; p_counter=0;
      if(P1_2==1){P1_2=0;P1_2=0;P1_2=0;delay(10);back=1;}/*liht the realy*/
      dis_t=time1_counter; return(ke); }
 else return(7);
}

/*/////////////////////////////////////////////////////////////////////////*/

long fzjs(int tr,int tx)
{
 long ttt;
 ttt=(long)tr*tr+(long)tx*tx;
 return((long)ttt>>2);
}

/*/////////////////////////////////////////////////////////////////////////*/
long srqt( long tt )
{
 long xn0,xn1,dxn;
 char do_counter;
 if(tt<=0) return(0);if(tt==1) return(1);
 xn0=tt>>1;   do_counter=0;
 if(xn0>0) xn1=(xn0+(tt/xn0))>>1;
 do {
       xn0=xn1; do_counter++;
       if(xn0>0) xn1=(xn0+(tt/xn0))>>1;
       dxn=xn1-xn0;
       dxn=dxn>0 ? dxn : -dxn;
     }
 while( dxn>2 && do_counter<30) ;
 return(xn1);
}

/*/////////////////////////////////////////////////////////////////////////*/


void sample()
{  unsigned int x1,t;
   long x2;
  gcls();
   gwrite_hz(14,1,STR[31]);
  for(t=0;t<6;t++)
  { x1=6+3*t;
   gwrite_hz(3,x1,&(STR[6][5])); gwrite_hz(23,x1,&(STR[6][5]));
    writedata(7,x1,0);writedata(8,x1,t);  writedata(9,x1,11); 
    if(t<4){writedata(27,x1,0); writedata(28,x1,t+6);  writedata(29,x1,11);}
  }
 writedata(27,18,1); writedata(28,18,0);  writedata(29,18,11);
 writedata(27,21,1); writedata(28,21,1);  writedata(29,21,11) ;
l1:
  chn=i-12;
  fsjs(0,11);
  for(x1=0;x1< 11;x1++)
  {  DI3[x1]=fzjs(trr[x1],txx[x1]);
     if(x1==0||x1==1) x2=Kic*3 ;  
     else if(x1>=5&&x1<=7) x2=Kib*3 ;
     else  if(x1==8)   x2=Ki0*3;
     else x2=Kv*3   ;
DI3[x1]=(long)srqt(DI3[x1]>>3)*10000/x2;}
/*********
#if BB35

  x2=Kic*3 ;  
  for(t=0;t<=1;t++)
  {     
    DI3[t]=(long)srqt(DI3[t]>>3)*10000/x2;
  }
    x2=Kv*3;
   for(t=2;t<=4;t++)
  {     
    DI3[t]=(long)srqt(DI3[t]>>3)*10000/x2;
  }
  x2=Kib*3 ;
  for(t=5;t<=7;t++)
  {     
    DI3[t]=(long)srqt(DI3[t]>>3)*10000/x2;
  }
  
  x2=Ki0*3;
  DI3[8]=(long)srqt(DI3[8]>>3)*10000/x2;
  x2=Kv0*3;
  DI3[9]=(long)srqt(DI3[9]>>3)*10000/x2;
  //x2=Kv*3;
// DI3[10]=(long)srqt(DI3[10]>>3)*10000/x2;
// DI3[11]=(long)srqt(DI3[11]>>3)*10000/x2;
#endif
*******/
// for(x1=Num_ch;x1<12;x1++) 
  DI3[11]=0;

page3();

    x1=key();

    if(x1==QUE) return;
   
    goto l1;
}

/*/////////////////////////////////////////////////////////////////////////*/
void dissets()
{
 unsigned char a0,n1,n2,n3;
 unsigned int aa,aa3;
 a0=a[0];
 aa=(unsigned int)sett[a0];  aa3=aa/1000;
    n1=(unsigned char)(aa/100-aa3*10);
    n2=(unsigned char)(aa/10-(aa/100)*10);
    n3=(unsigned char)(aa-(aa/10)*10);
 if((a[0]==37)||(a[0]==38))
  { a[2]=(unsigned char)(aa3);
     a[3]=n1;a[4]=n2;a[5]=n3;
     /*
    a[3]=(unsigned char)(aa/100-aa/1000*10);
    a[4]=(unsigned char)(aa/10-(aa/100)*10);
    a[5]=(unsigned char)(aa-(aa/10)*10);
    */
  }  else
 {
 a[2]=(unsigned char)(aa/10000);
 a[3]=(unsigned char)(aa3-(aa/10000)*10);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -