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

📄 电网测量.c

📁 对电网参数的测量程序
💻 C
字号:
#pragma optimize(4)
#include "stdio.h"
#include "math.h"
#include "absacc.h"
#include "reg51j.h"
void start();
void good();
void disp();
void disppp();	
void dispee();
void dispq();	
void dispu();
void int0();
void t0int();
void t1int();
code unsigned char led[38]=
	{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
	 0x77,0x7c,0x58,0x5e,0x79,0x71,/***01...9AbcdEF***/
	 0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,
	 0xf7,0xfc,0xd8,0xde,0xf9,0xf1,/*0.1...9.A.b...F.*/
	 0x00,0xff,0x73,0x38,0x3e,0x67/***?e,áá,P,L,U,q***/};
data 	unsigned char	ld[8],i,j,l;
data 	unsigned char	v0,vi0,vv0,ms,it01,it11,t1s;
data 	unsigned char	key0,key1,key2,key3,key;
data 	unsigned char	x0,x1,x2,x3;
data	unsigned int	xx0,v,vi;
data	unsigned long	lx0;
data	unsigned int	pp,qq,vv,p;

data	float		ff0,ff1;
bdata	bit	bit0,bit1,bit2,bit3,bit4,bit5,bit6,bit7;
bdata	bit	bit8,bit9,bita,bitb,bitc,bitd,bite,bitf;
#define P8279D XBYTE[0x9fef]
#define P8279K XBYTE[0x9fff]
/*------------------INT------------------------*/
void int0() interrupt 0 using 1
{ P8279K=0x40;	key=P8279D; key=key & 0x3f ; 
 if(key<0x0a)  { key3=key2;key2=key1;key1=key0;key0=key;}
 if(key==0x0a)	{bita=bitb=bitc=bitd=bite=bitf=0,bita=1; 
                 key0=key1=key2=key3=0;vv=vv0=0;bit8=0;}
 if(key==0x0b)	{bita=bitb=bitc=bitd=bite=bitf=0,bitb=1;
 		 key0=key1=key2=key3=0;vv=vv0=0;bit8=0;}
 if(key==0x0c)	bita=bitb=bitc=bitd=bite=bitf=0,bitc=1,vi=0,vi0=0; 
 if(key==0x0d)	bita=bitb=bitc=bitd=bite=bitf=0,bitd=1,vi=0,vi0=0; 
 if(key==0x0e)	bita=bitb=bitc=bitd=bite=bitf=0,bite=1,vi=0,vi0=0; 
 if(key==0x0f)	{bita=bitb=bitc=bitd=bite=bitf=0,bitf=1,vi=0,vi0=0;
 		 bit8=1;}
 key=0xfe; 
}
void t0int() interrupt 1 using 1	/*10ms !*/
{	TL0=0xf0; TH0=0xd8; TR0=1;
	ms++;
	if(ms==50)  { bit0=1;	}
	if(ms==100) { bit0=0;t1s++;ms=0;}

	if(bit8){
	if(vi0==v0) {
	if(vi==v)   { bit8=0;bit9=1;vi0=v0;vv0=vv=0;lx0=0;}}
	if(bit8)  if(ms%10==0)  { vi0++; if(vi0==100) { vi0=0; vi++;}}
		}
}
void t1int() interrupt 3 using 2
{TR1=1; bit1=1;
}
/*---------------------------------------------*/
void start()
{TL0=0xf0; 	TH0=0xd8; /*T0=d8f0=55536=10ms*/ 
 TL1=0x9c;	TH1=0x9c; /*T1-100 */
 IE=0x8f;	IP=0x03;  /* Int0,T0 --high  */
 TMOD=0x61; 	TCON=0x05;
 P8279K=0xd1; for(i=0;i<98;i++ ){i++;}
 P8279K=0x00; P8279K=0x2f;
 P8279K=0x40; P8279K=0x90;
 i=j=l=0;
 key0=key1=key2=key3=0;
 key=0x0ff;
 ms=t1s=0x00;
 it01=it11=0x00;
 vv=0;vv0=0;p=4;
 v=2;v0=10;
 x0=x1=x2=x3=0x00;
 bit0=bit1=bit2=bit3=bit4=bit5=bit6=bit7=0;
 bit8=bit9=bita=bitb=bitc=bitd=bite=bitf=0;
 TR0=1; TR1=0;
 }
/*--------------goodl,goodm------------------*/
void good(void)
{ /*P8279K=0xd1; for(i=0;i<0x80;i++ ){i++;}*/
  P8279K=0x90;
  if(bit0){	P8279D=0x6f;P8279D=0x5c;P8279D=0x5c;P8279D=0x5e;
            	P8279D=0x40;P8279D=0x40;P8279D=0x40;P8279D=0x40; }
  else	   {	P8279D=0x6f;P8279D=0x5c;P8279D=0x5c;P8279D=0x5e;
		P8279D=0x80;P8279D=0x80;P8279D=0x80;P8279D=0x80; }
}
void disp()
{ P8279K=0x90;
  P8279D=ld[0];P8279D=ld[1];P8279D=ld[2];P8279D=ld[3];
  P8279D=ld[4];P8279D=ld[5];P8279D=ld[6];P8279D=ld[7]; }

void disppp()
{ 
  ld[0]=0x38 ;ld[1]=0x73;
  ld[2]=0x00 ;ld[3]=0x00;
  ld[4]=led[3];ld[5]=led[8];
  ld[6]=led[0x10];ld[7]=led[5];
  disp();	
}
void dispq()
{ 
  ld[0]=0x38 ;ld[1]=0x67;
  ld[2]=0x00 ;ld[3]=0x00;
  ld[4]=led[key3];ld[5]=led[key2];
  ld[6]=led[key1];ld[7]=led[key0];
  disp();	
}	
void dispv()
{ 
  ld[0]=0x38 ;ld[1]=0x3e ;
  ld[2]=0x00 ;ld[3]=0x00 ;
  ld[4]=led[key3];ld[5]=led[key2];
  ld[6]=led[key1];ld[7]=led[key0];
  disp();	
}	
void dispu()
{ xx0=vi;
  ld[0]=0x3e;               ld[1]=0x3e;  
  i=xx0/1000    ;
  if(i==0)	 ld[2]=0x00;
  else           ld[2]=led[i];
  xx0=xx0-i*1000; i=xx0/100;
  if((i==0)&&(ld[2]==0x00)) 	ld[3]=0x00;
  else  			ld[3]=led[i];
  xx0=xx0-i*100;  i=xx0/10; ld[4]=led[i];
  xx0=xx0-i*10;   i=xx0;    ld[5]=led[i+0x10];  
  i=vi0/10;		    ld[6]=led[i];
  i=vi0-i*10;		    ld[7]=led[i];
  disp();	
}
void dispee()
{ xx0=00;
  ld[0]=0x79;               ld[1]=0x79;  
  i=xx0/1000    ;
  if(i==0)	 ld[2]=0x00;
  else           ld[2]=led[i];
  xx0=xx0-i*1000; i=xx0/100;
  if((i==0)&&(ld[2]==0x00)) 	ld[3]=0x00;
  else  			ld[3]=led[i];
  xx0=xx0-i*100;  i=xx0/10; ld[4]=led[i];
  xx0=xx0-i*10;   i=xx0;    ld[5]=led[i+0x10];  
  i=vi0/10;		    ld[6]=led[i];
  i=vi0-i*10;		    ld[7]=led[i];
  disp();	
}
/*------------------------------------------------------*/
void main(void)
{aaa:	start();
	EA=1  ;
	good();
while  (key==0xff)      good();
bbb:	if(bitb)	{bita=bitb=bitc=bitd=bite=bitf=0;
			key0=key1=key2=key3=0;lx0=01;goto aaa;   }  
	if(bitc)        disppp();		
	if(bitd)	{dispq(); lx0=key3*1000+key2*100+key1*10+key0;
		                 vv=lx0/p; vv0=(lx0-vv*p)*100/4;}	
	if(bite)	{lx0=key3*1000+key2*100+key1*10+key0;
vv=lx0;vv0=0; dispv();}

	if(bitf)	{v=vv;v0=vv0;   
	key0=key1=key2=key3=0;lx0=0;	dispu();}

	if(bit9){bit9=0;bita=bitb=bitc=bitd=bite=bitf=0;
	dispee();	
		       /*******qqq,vvv,**********
			bita=bitb=bitc=bitd=bite=bitf=0;
			key0=key1=key2=key3=0;lx0=1;
	         	vv=vv0=0;************************/}	

	if(bit8){if(bit0)	P2=0x00;
		 else		P2=0xff; }
	else P2=0xff;	
	goto bbb;
/********************float************************
for (i=0;i<=49;i++){}
{for (j=i+1;j<=49;j++){if (ua[i]>ua[j]) {uu=ua[i];ua[i]=ua[j];ua[j]=uu;}}}
uul=0;
for (i=10;i<=39;i++){uu=ua[i];   uul=uul+(long)uu;}
uuf=(float)uul/30000.0;  
uuf=2.0+x0;x0++;
ff0=100.0*uuf*uuf+88.0;  ff0=sqrt(uuf);
ff0=ff0*0.1414; ff1=ff0*0.1732; 
ff1=cos(ff1);
disp(); 
**********************float************************/

goto aaa;
}

⌨️ 快捷键说明

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