|
源程序
#include<reg52.h>
#define N 20
unsigned char code Tab[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};
unsigned char int_time;
unsigned char second;
unsigned char num;
char flag1=0;
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit K7=P1^6;
sbit K8=P1^7;
sbit B0=P3^6;
sbit KA=P3^0;
void delay(void)
{
int i;
for(i=0;i<3000;i++)
;
}
void DisplaySecond(unsigned char k)
{
P2=0xf7;
P0=Tab[k%10];
delay();
P0=0xff;
P2=0xfb;
P0=Tab[k/10];
delay();
P0=0xff;
P2=0xfd;
P0=Tab[10];
delay();
P0=0xff;
P2=0xfe;
P0=Tab[num];
delay();
P0=0xff;
}
void _reset()
{
while(1)
{
if(KA==0)
{
delay();
if(KA==0)
flag1=1;
}
if(flag1)
{
//flag1=0;
break;
}
}
}
void key()
{
if(K1==0)
{
delay();
if(K1==0)
{
//void _stop();
num=1;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K1);
_reset();
}
}
if(K2==0)
{
delay();
if(K2==0)
{
//void _stop();
num=2;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K2);
_reset();
}
}
if(K3==0)
{
delay();
if(K3==0)
{
num=3;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K3);
_reset();
}
}
if(K4==0)
{
delay();
if(K4==0)
{
num=4;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K4);
_reset();
}
}
if(K5==0)
{
delay();
if(K5==0)
{
num=5;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K5);
_reset();
}
}
if(K6==0)
{
delay();
if(K6==0)
{
num=6;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K6);
_reset();
}
}
if(K7==0)
{
delay();
if(K7==0)
{
num=7;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K7);
_reset();
}
}
if(K8==0)
{
delay();
if(K8==0)
{
num=8;
B0=1;
DisplaySecond(N-second);
P2=0xfe;
P0=Tab[num];
while(!K8);
_reset();
}
}
}
void main(void)
{
while(1)
{
num=0;
TMOD=0x01;
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
EA=1;
ET0=1;
TR0=1;
int_time=0;
second=0;
while(1)
{
key();
DisplaySecond(N-second);
if(flag1){flag1=0;break;}
}
}
}
void interserve(void)interrupt 1 using 1
{
TR0=0;
int_time++;
if(int_time==20)
{
int_time=0;
second++;
if(second==N)
{
EA=0;
ET0=0;
TR0=0;
_reset();
return;
}
}
TH0=(65536-46083)/256;
TL0=(65536-46083)%256;
TR0=1;
}
|
|