📄 pinlvji.txt
字号:
#include <stdio.h>
#include <reg51.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
#define del 200
sbit p10=P1^0;
sbit p11=P1^1;
sbit p12=P1^2;
sbit p13=P1^3;
sbit p14=P1^4;
sbit p15=P1^5;
sbit p16=P1^6;
sbit p17=P1^7;
sbit p34=P3^4;
//uchar code pianxuan[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar code zhixing[]={0x03,0x9F,0x25,0x0D,0x99,0x49,0x41,0x1F,0x01,0x09,0xFD,0x02};
//数码管输出字型0.1.2.3.4.5.6.7.8.9.0..-
uchar temp[]={0,0,0,0,0,0,0,0};
uchar a;
//uchar a,b,c,d,e,f,g,h,i,j;
uchar i;
uint t0c=0;
uint t1c=0;
uint t1c1=0;
uchar f;
ulong pinlv;
void xianshi(ulong x);
void delay(uint de);
void mk(void);
void pl(void);
void main(void)
{ while(1)
{
if(p10==1)
pl();
else if(p10==0)
mk();
}
}
void mk() //maikuai
{ unsigned int highlevel,m;
TMOD=0x09;
while(p34==1);
TH0=0;
TL0=0;
while(p34==0);
TR0=1;
while(p34==1);
TR0=0;
highlevel=TH0*256+TL0;
/* c=highlevel%10;
SBUF=zhixing[c];
while(!TI);
TI=0;
d=highlevel/10%10;
SBUF=zhixing[d];
while(!TI);
TI=0;
e=highlevel/100%10;
SBUF=zhixing[e];
while(!TI);
TI=0;
f=highlevel/1000%10;
SBUF=zhixing[f];
while(!TI);
TI=0;
g=highlevel/10000%10;
SBUF=zhixing[g];
while(!TI);
TI=0;
h=highlevel/100000%10;
SBUF=zhixing[h];
while(!TI);
TI=0;
i=highlevel/1000000%10;
SBUF=zhixing[i];
while(!TI);
TI=0;
j=highlevel/10000000%10;
SBUF=zhixing[j];
while(!TI);
TI=0;*/
//delay(1000)
xianshi(highlevel);
for(m=0;m<50000;m++);
}
void pl()
{
TMOD=0x15;
SCON=0x00;
TH0=0; //To初始化
TL0=0;
TH1=0xf0; ////T1初始化
TL1=0x60;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1; //开中断
while(1)
{
if(f==1)
{
f=0;
pinlv=TH0*256+TL0; //总脉冲数t0c*65536+
// pinlv=(uint)(x/(0.004*t1c1));
pinlv=(uint)(998*pinlv/1000);
xianshi(pinlv);
t0c=0;
TH0=0;
TL0=0;
TH1=0xf0; //定时预置数
TL1=0x60;
TR0=1;
TR1=1;
}
}
}
void t0(void) interrupt 1 using 0
{
t0c++; //脉冲计数
}
void t1(void) interrupt 3 using 0
{
TH1=0xf0; //定时预置数
TL1=0x60;
t1c++;
if(t1c==250) //定时时间调整
{
TR0=0; //先关定时器
TR1=0;
t1c1=t1c;
t1c=0;
f++; //计数完成位
}
}
void xianshi(ulong x) {
uchar i,a;
for(i=0;x/10;i++){
temp[i]=x%10;
x=x/10;
}
temp[i]=x;
for(a=0;a<8;a++){
SBUF=zhixing[temp[a]];
temp[a]=0;
while(!TI);
TI=0;
}
}
void delay(uint de){
uint a;
while(de--)
for(a=100;a>0;a--);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -