#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit wei1=P2^0;
sbit wei2=P2^1;
sbit wei3=P2^2;
sbit wei4=P2^3;
unsigned char i=0;timecount=0;displayOK=0,rate=0,aa=0;
unsigned int time[6]={0};
uchar code table[]={0xc0,0xcf,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
void DelayMs(unsigned int z)
{
unsigned int x;
for(;z>0;z--)
for(x=110;x>0;x--);
}
void display(uchar bai,uchar shi,uchar ge)
{
wei1=0;
P0=bai;
DelayMs(1);
wei1=1;
P0=0xff;
wei2=0;
P0=shi;
DelayMs(1);
wei2=1;
P0=0xff;
wei3=0;
P0=ge;
DelayMs(1);
wei3=1;
P0=0xff;
}
void main()
{
TCON=0x01;
EX0=1;
TMOD=0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
TR0=0;
EA=1;
while(1)
{
if(displayOK==1)
{
rate=60000/(time[1]/5+time[2]/5+time[3]/5+time[4]/5+time[5]/5);
while(1)display(table[rate/100],table[rate/10%10],table[rate%10]);
}
DelayMs(300);
}
}
void ex0() interrupt 0
{
EX0=0;
if(timecount<8)
{
TR0=1;
}
else
{
time[i]=timecount*50+TH0*0.256+TL0/1000;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
timecount=0;
i++;
if(i==6)
{
i=1;
displayOK=1;
}
}
EX0=1;
}
void et0() interrupt 1
{
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
timecount++;
if(timecount>25)
{
i=0;
timecount=0;
displayOK=0;
TR0=0;
TH0=0;
TL0=(65536-50000)%256;
TH0=(65536-50000)/256;
}
}
|