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

📄 xlbh.c

📁 基于C51体系结构实现的电路保护的源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
 a[4]=n1;a[6]=n2;a[7]=n3;
 }
 }

/*/////////////////////////////////////////////////////////////////////////*/
void writeset()
{
 unsigned char a0,a1;
 unsigned int  aa;
 long aaa;
 a0=a[0];
 aaa=(long)a[2]*10000+(int)a[3]*1000+(int)a[4]*100+a[6]*10+a[7];
 if((a[0]==37)||(a[0]==38))
 aaa=(int)a[2]*1000+(int)a[3]*100+a[4]*10+a[5];
 if( a0==0 )
 {
  if((int)aaa != 100 && (int)aaa != 200 && (int)aaa != 300) aaa=100;
  sett[0]=(int)aaa;
  *(pee+2)=*psett; delay(25); *(pee+3)=*(psett+1); delay(25);
  load_eep();
 }
 else
 if(aaa>=0 && aaa<=32000)
 {
   sett[a0]=(int)aaa; 
   for(a1=0;a1<3;a1++)
   {
   aa=(int)(sett[0]/100-1)*76 + a0*2+(int)a1*250;
   *(pee+ 2 + aa )=*(psett + a0*2);   delay(25);
   *(pee+ 3 + aa )=*(psett + a0*2+1);  delay(25);
   }
 }
if(a0==37) passwd1=sett[37];
if(a0==38) passwd2=sett[38];

}
/*
void writeeepfirst()
{ unsigned char i;
 unsigned int  aa;
 long aaa;
 for(i=1;i<=7;i++)
 {if(i==1)aaa=1450;
  if (i==2) aaa=14000;
  if(i==3)aaa=1480;
  if(i==4)aaa=10000;
  if(i==5)aaa=100;
  if(i==6||i==7) aaa=0;
  sett[i]=(int)aaa; 
   aa=i*2;
   *(pee+ 2 + aa )=*(psett + i*2);   delay(25);
   *(pee+ 3 + aa )=*(psett + i*2+1);  delay(25);
  
 }	
}
*/

/*/////////////////////////////////////////////////////////////////////////*/
void writep(char wkk)
{   *(lepq+wkk)=epq[wkk];    }

void writeeram()
{
 int t2;
 XBYTE[IDT+0x60]=0;
 for(t2=0; t2<EE_num; t2++)
 {
  p=(unsigned char *)(&epq[t2]);
  XBYTE[IDT+0x60+t2*4+1]=*(p+3); XBYTE[IDT+0x60+t2*4+2]=*(p+2);
  XBYTE[IDT+0x60+t2*4+3]=*(p+1); XBYTE[IDT+0x60+t2*4+4]=*p;
 }
 XBYTE[IDT+0x60]=0x55;
}


/*/////////////////////////////////////////////////////////////////////////*/
void delay(int ww)
{
 int b;
 unsigned char c;
 ww=ww+ww;
 for(b=0;b<ww;b++)    for(c=0;c<0xc0;c++)  ;
 /*  for(c=0;c<0xff;c++) ;   */
}

/*/////////////////////////////////////////////////////////////////////////*/
void writeout()
{
 io1_7=a[1]; io1_6=a[2]; io1_5=a[3]; io1_4=a[4];
 io1_3=a[5]; io1_2=a[6]; io1_1=a[7]; io1_0=a[8];
 if( a[0]==1 )
 { o1=io1;P1_3=1;P1_5=0;
   if( (o1&0x0f)!=0x00 )
     { ch_counter=0; js_mark=1; sh_t=time_counter; }
    o1_flag=1;XBYTE[OUT1]=o1;thdz_mark=1;
    delay(1500);o1_flag=0; /* o1=o1&0xf0; */
    o1=0x00; XBYTE[OUT1]=o1;
  }
 if( a[0]==2 )
 { o2=io1; XBYTE[OUT2]=o2;}
}

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

void write_eep(char wk)
{
 unsigned int t1,t2,t3,t4;
 unsigned char ttt;
 t2=((sett[0]/100)-1)*76;
 if( wk<=38 )
 {
  if(wk==0) { t3=2;t4=73; }  else { t3=wk*2; t4=wk*2+1; }
  for(t1=t3; t1 <= t4; t1++)
  {
     ttt=*(psett+t1);
     if( *(pee+t2+2+t1) !=ttt )
     { *(pee+t2+2+t1)=ttt;            delay(25); }
     if( *(pee+t2+2+t1+250) !=ttt )
     { *(pee+t2+2+t1+250)=ttt;        delay(25); }
     if( *(pee+t2+2+t1+500) !=ttt )
     { *(pee+t2+2+t1+500)=ttt;        delay(25); }
  }
 }
}

/*/////////////////////////////////////////////////////////////////////////*/
void load_eep()
{
 unsigned char cc1,cc2,cc3;
 unsigned int tt1,tt2;
   if(*(pe+1)==300 || *(pe+1)==200 || *(pe+1)==100) sett[0]=*(pe+1);
   else
   {
    sett[0]=100;
    *(pee+2)=*psett; delay(25); *(pee+3)=*(psett+1); delay(25);
   }
   tt2=((sett[0]-100)/100)*76;
   for(tt1=4;tt1<=79;tt1++)
   {
    cc1=*(pee+tt2+tt1);
    cc2=*(pee+tt2+tt1+250);
    cc3=*(pee+tt2+tt1+500);
    if(cc1 == cc2 && cc1 == cc3) goto l1;
    if(cc1==cc2 && cc1 != cc3 ) { *(pee+tt1+tt2+500)=cc1; delay(25); }
    else {
	  if(cc1==cc3 && cc1 != cc2 ) { *(pee+tt1+tt2+250)=cc1; delay(25); }
	  else {
	       if(cc2==cc3 && cc2 != cc1 ) { *(pee+tt1+tt2)=cc2; delay(25); }
		else {
		     *(pee+tt1+tt2+250)=cc1; delay(25);
		     *(pee+tt1+tt2+500)=cc1; delay(25);
		     sck2=1; w2=w2|0x0002;
		    /* goto l2;  */
		     }
		  }
	    }
l1:
   sck2=ck2=0; w2=w2&0xfffd;
 }
 for(tt1=1;tt1<=38;tt1++)
 {
  tt2=*(pe + 1 + tt1+((sett[0]-100)/100)*38);
  if(tt2>=0 && tt2<=32000) sett[tt1]=tt2;
  else sett[tt1]=32000;
 }
 passwd1=sett[37];
 passwd2=sett[38];
//passwd1=1000;passwd2=1000;
}


/*/////////////////////////////////////////////////////////////////////////*/
void writetram()//从E2ROM中取字写到RAMZHONG *?
{
 unsigned int t1,t2,t3;
  ppp=(unsigned char *)(&sett[0]);
	XBYTE[IDT+0x0150+1]=*(ppp+1);/*XIE SHUANGKOU RAM*/
	XBYTE[IDT+0x0150+2]=*ppp;
  for(t1=0;t1<=2;t1++)
   {
     for(t2=1;t2<=36;t2++)
      {
	t3=*(pe + t1*38 + t2 + 1);
	if(t3<0 || t3>32000) t3=32000;
	ppp=(unsigned char *)(&t3);
	XBYTE[IDT+0x0150+t2*2+t1*72+1]=*(ppp+1);
	XBYTE[IDT+0x0150+t2*2+t1*72+2]=*ppp;
       }
      XBYTE[IDT+0x0150]=0x55;
   }
}


/*char disjs( long ttv1,int ttv2)
{
  return((unsigned char)(ttv1-(long)ttv2*10)+0x30);
}
*/

/* set chang function */


/*/////////////////////////////////////////////////////////////////////////*/
void chang_set()
{
long tt;//,tt1,tt2;
char t ;
 writetram();

 prun=1; delay(40);  /* forbid protection */

/* load setting */


#if BB35
 Kv=sett[3];
 Kic=sett[4];
 Kib=sett[5];
 Kv1=(long)sett[1]*10;
 Ki1=(long)sett[2]*10;
 Kv0=(long)sett[30];
 Ki0=(long)sett[31];
 
 if(sett[29]>=100) Kpq=-(sett[29]-(sett[29]/100)*100);
 else Kpq=sett[29];
 if(Kpq>30||Kpq<(-25))  Kpq=0;

 pro1=(unsigned char)(sett[6]/100);
 pro2=(unsigned char)(sett[7]/100);
 for(t=0;t<3;t++)
  { tt=(long)sett[t+8]*Kib*12/10000;
    e[t]=tt*tt*2;
  }

 tt=(long)sett[14]*Kv*12/10000;
 e[5]=tt*tt*2;   //Udz
 e[3]=166666666/(long)sett[16]; // 20M 
 tt=(long)sett[12]*Ki0*12/10000;
 e[6]=tt*tt*2;
 et[0]=sett[20]*6-sett[20]/40;
 et[1]=sett[21]*6-sett[21]/40;
 et[2]=sett[25]*6-sett[25]/40;
 et[3]=sett[27]*6-sett[27]/40;
 et[8]=sett[23]*6-sett[23]/40;
 et[7]=sett[26]*6-sett[26]/40;
// et[9]=sett[22]*6-sett[22]/40;
 et[10]=sett[24]*6-sett[24]/40;
 
 et[11]=sett[33]*6-sett[33]/40;
 tt=(long)sett[32]*Kv*12/10000;
 e[15]=tt*tt*2;

 et[5]=500*6;
 et[6]=sett[28];//2003-7-5
 //et[10]=sett[4]/5;
 et[4]=sett[34]/5; 
  tt=(long)sett[17]*Kv*9/10000;
  e[7]=tt*tt/2;
  tt=(long)sett[18]*Kv*12/10000;
  e[8]=tt*tt*2;
  tt=(long)sett[19]*Kib*12/10000;
  e[9]=tt*tt*2;
   tt=(long)sett[15]*Kib*12/10000;
   e[11]=tt*tt*2;
   tt=(long)sett[11]*Kv*12/10000;
   e[12]=tt*tt/2;
   tt=(long)sett[22]*Kv*12/10000;
   e[10]=tt*tt/2;



e[13]=166666666/(long)sett[13]; // 20M 
//  tt=(long)sett[13]*Ki0*12/10000;   
//   e[13]=tt*tt*2;
   if(Kv0<=0) Kv0=10000; if(Ki0<=0) Ki0=10000;
   if(Kv1<=0) Kv1=10000; if(Ki1<=0) Ki1=10000;
   if(Kic<=0) Kic=10000; if(Kv<=0) Kv=10000;
   if(Kib<=0) Kib=10000;
e[14]=sett[36]/100;

 if(sett[35]<=1000)                  t=5;  /* t=17;   2sin5=.17 */
 if(sett[35]>1000 && sett[35]<=1500) t=4;  /* t=26;   2sin7.5=.26  */
 if(sett[35]>1500 && sett[35]<=2000) t=3;  /* t=34;   2sin10=.34  */
 if(sett[35]>2000 && sett[35]<=2500) t=2;  /* t=43;   2sin12.5=.43 */
 if(sett[35]>2500)                   t=2;  /* t=51;   2sin15=.51 */
 e[4]=t*t;




#endif

 prun=0;
}


/*/////////////////////////////////////////////////////////////////////////*/
void di_chang()
{
unsigned char t;
long ttt1,ttt2;

#if EE
 for(t=0;t<EE_num;t++)
 {
  ttt1=epq[t] - *(lepq+t);
  ttt1= ttt1>0 ?  ttt1 : -ttt1;
  if( ttt1 >= 1) { writep(t); writeeram(); }
 }
#endif

#if BB35
   if((DI2[0]<123333)||DI2[0]>150000) DI2[0]=133333;
   up1[0]=66666666/DI2[0];                             // f 
   for(t=1;t<=7;t++)
   {up1[t]=(int)((long)srqt(DI2[t]>>5)*1000/(3*Kv)); }
    
    for(t=8;t<=9;t++)
   {up1[t]=(int)((long)srqt(DI2[t]>>5)*10000/(3*Kic)); }
/***************   
   up1[1]=(int)((long)srqt(DI2[1]>>5)*1000/(3*Kv));    // Uab 
   up1[2]=(int)((long)srqt(DI2[2]>>5)*1000/(3*Kv));    // Ubc 
   up1[3]=(int)((long)srqt(DI2[3]>>5)*1000/(3*Kv));    // Uca 
   up1[4]=(int)((long)srqt(DI2[4]>>5)*1000/(3*Kv));    // Ua 
   up1[5]=(int)((long)srqt(DI2[5]>>5)*1000/(3*Kv));    // Ub 
   up1[6]=(int)((long)srqt(DI2[6]>>5)*1000/(3*Kv));    // Uc 
   up1[7]=(int)((long)srqt(DI2[7]>>5)*1000/(3*Kv));    // 3U0 
 
   up1[8]=(int)((long)srqt(DI2[8]>>5)*10000/(3*Kic));    // Ia 
   up1[9]=(int)((long)srqt(DI2[9]>>5)*10000/(3*Kic));    // Ic 
************************/
  ttt1=DI2[10];  ttt2=DI2[11];
  DI2[10]=ttt1-(ttt2*Kpq/100);  DI2[11]=ttt2+(ttt1*Kpq/100);

   ttt1=((long)Kic*9*Kv)/10000;
   up1[10]=(int)(DI2[10]/ttt1);                /* P w   */
   up1[11]=(int)(DI2[11]/ttt1);                /* Q var */
up1[12]=(int)((long)up1[10]*100/(long)srqt((long)up1[10]*up1[10]+(long)up1[11]*up1[11]));
					      /*  cos%*100  */
up1[12]=up1[12] > 0 ? up1[12] : -up1[12];
for(t=12;t<16;t++)	/* ib,Ia,Ib,Ic*/
{
 if(t==12) {up1[t+1]=(int)((long)srqt(DI2[t]>>5)*10000/(3*Kic));}
 else {up1[t+1]=(int)((long)srqt(DI2[t]>>5)*10000/(3*Kib));}
 }
   DI2[1]=((long)srqt(DI2[1]>>5))*Kv1/(Kv*3);
   DI2[2]=((long)srqt(DI2[2]>>5))*Kv1/(Kv*3);
   DI2[8]=((long)srqt(DI2[8]>>5))*Ki1*10/(Kic*3);
   DI2[9]=((long)srqt(DI2[9]>>5))*Ki1*10/(Kic*3);

   ttt1=(((long)Kic*9000/Ki1)*Kv)/Kv1;
   if(ttt1==0) ttt1=1000000000;
   for(t=10;t<12;t++)   DI2[t]=DI2[t]/ttt1;

#endif


}

/*/////////////////////////////////////////////////////////////////////////*/
void page()                                 
{  uchar i;
      for(i=0;i<15;i++)
      {gwrite_hz(0,2*i,STR[0]);gwrite_hz(38,2*i,STR[0]);}
      for(i=0;i<20;i++)
      {gwrite_hz(2*i,0,STR[0]);gwrite_hz(2*i,28,STR[0]);}
    writesag(5,8,name_n);writesag(11,8,name_a); writesag(17,8,name_n); writesag(23,8,name_z);
      writesag(29,8,name_i);
      gwrite_hz(5,25,STR[32]);gwrite_hz(27,25,&(STR[28][5]));
     
}

/*/////////////////////////////////////////////////////////////////////////*/
void page00()
{unsigned char i;
 figure();
 #if BB35
 gwrite_hz(18,18,STR[9]);writedata(23,18,11);  
 //writedata(27,18,0);writedata(28,18,1);//dizhi 01
 i=e[14]/100;writedata(27,18,i);
 i=(e[14]%100)/10;writedata(28,18,i);
 i=e[14]%10;writedata(29,18,i);
 gwrite_hz(18,21,STR[10]);//baohuyaban
 
 gwrite_hzzf(10,24,promain[0],(pro1&0x01)^0x01);
 gwrite_hzzf(15,24,promain[1],(pro1&0x02)^0x02);
 gwrite_hzzf(20,24,promain[2],(pro1&0x04)^0x04);
 gwrite_hzzf(25,24,promain[3],(pro1&0x08)^0x08);
 gwrite_hzzf(30,24,promain[10],(pro2&0x08)^0x08);
  
 gwrite_hzzf(10,27,promain[5],(pro2&0x40)^0x40);
 gwrite_hzzf(15,27,promain[7],(pro1&0x80)^0x80);
 gwrite_hzzf(20,27,promain[8],(pro2&0x01)^0x01);
 gwrite_hzzf(25,27,promain[9],(pro2&0x02)^0x02);
 gwrite_hzzf(30,27,promain[4],(pro2&0x20)^0x20);
 #endif
#if BB35
writedata(16,1,21);writedata(17,1,17); writedata(18,1,24); writedata(20,1,10);//Uab=
writedata(16,3,21);writedata(17,3,24);writedata(18,3,26);  writedata(20,3,10);//Ubc=
writedata(16,5,22);writedata(17,5,17); writedata(20,5,10);//Ia=
writedata(16,7,22);writedata(17,7,26); writedata(20,7,10);//Ic=
writedata(16,9,23);writedata(20,9,10);//P=
writedata(16,11,25);   writedata(20,11,10);//Q=
writedata(16,13,27);   writedata(20,13,10);//f=
writedata(29,1,33);writedata(30,1,31);//kv
writedata(29,3,33);writedata(30,3,31);//
writedata(29,5,35);
writedata(29,7,35);
writedata(29,9,33);writedata(30,9,32);
writedata(29,11,33);writedata(30,11,15);writedata(31,11,17);writedata(32,11,18);
writedata(29,13,37);writedata(30,13,38);
 #endif
}


/*/////////////////////////////////////////////////////////////////////////*/
void page0()
{uchar i,ii,m,ij,x,xx,in, viewstr0[7];
unsigned int t1; long v=0;ij=m=0; 
if(trip0==1)
{ 
 x=bz[1539]-4; t1=(unsigned int)x*6;
   x=bz[t1+8];
 if(x>24){in=0;x=x-25;}
   else in=1; 
#if BB35
  writeblank(16,21,24);
   if(in==0)
 {if(x>=0&&x<16) {gwrite_hz(18,21,rec[x]);} }
  if(in==1)
      {if(bz[t1+9]==1)  {gwrite_hz(16,21,&rec[16][0]); 
                         gwrite_hz(24,21,&rec[16][4]);
                         xx=x/10;writedata(22,21,xx);
                          xx=x-(x/10)*10;writedata(23

⌨️ 快捷键说明

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