#include <reg52.h>
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit key5=P1^4;
sbit key6=P1^5;
typedef unsigned char uchar;
typedef unsigned int uint;
unsigned int i;
unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char x;
unsigned int aj=0;
uchar time;
void delay(int a)
{
for(;a>0;a--)
for(i=0;i<62;i++);
}
void UsartInit()
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0X50; //Method 1, ALLOW REN
TH1 = 0xFD;
TL1 = 0xFD;
REN = 1;
EA = 1;
ES = 1;
TR1 = 1;
}
void Show_Init()
{
key1=1;
key2=1;
key3=1;
key4=1;
key5=1;
key6=1;
}
void send(unsigned char cc)
{
SBUF = cc;
while(TI==0);
TI = 0;
}
void key()
{ if(!aj)
{
if(!key1)
{
delay(1);
if(!key1)
{
send('1');
aj=1;
x=1;
}
}
else if(!key2)
{
delay(1);
if(!key2)
{
send('2');
aj=1;
x=2;
}
}
else if(!key3)
{
delay(1);
if(!key3)
{
send('3');
aj=1;
x=3;
}
}
else if(!key4)
{
delay(1);
if(!key4)
{
send('4');
aj=1;
x=4;
}
}
else if(!key5)
{
delay(1);
if(!key5)
{
send('5');
aj=1;
x=5;
}
}
else if(!key6)
{
delay(1);
if(!key6)
{
send('6');
aj=1;
x=6;
}
}
}
if(key1==1 && key2==1 && key3==1 && key4==1 && key5==1 & key6==1)
aj=0;
}
void main()
{
Show_Init();
UsartInit();
while(1)
{
P2=0xFD;
P0=tab[(int)time/0x10];delay(2);
P2=0xFB;
P0=tab[(int)time%0x10];delay(2);
P2=0xFE;
P0=tab[x];delay(2);
key();
}
}
void usart() interrupt 4
{
if(RI) //接收到数据进入if
{
RI=0; //重置串口接收状态
time = SBUF ; //time放到缓存区发送
}
}
|