📄 电网测量.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 + -