#include<reg52.h>
sbit P20 = P2^0;
sbit P21 = P2^1;
sbit P22 = P2^2;
sbit ENLED = P1^1;
sbit KEY4 = P2^3;
sbit KeyOut4 = P2^7;
unsigned char code LedChar[] = { //真值表
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,
0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E
};
bit KeySta = 1; //当前按键状态
void main()
{
bit backup = 1;
unsigned char cnt = 0;
P20 = 1; //DS5进行显示
P21 = 0;
P22 = 1;
ENLED = 0;
TMOD = 0x01; //定时器0定时2ms
TH0 = 0xEA;
TL0 = 0x66;
TR0 = 1;
EA = 1;
ET0 = 1;
KeyOut4 = 0; //KeyOut4输出低电平
P0 = LedChar[cnt];
while (1)
{
if(KeySta != backup)
{
if(backup == 0)
{
cnt++;
if(cnt >= 10)
{
cnt = 0;
}
P0 = LedChar[cnt];
}
backup = KeySta;
}
}
}
void InterruptTime0() interrupt 1 //TO中断
{
static unsigned char keybuf = 0xFF;
TH0 = 0xEA;
TL0 = 0x66;
keybuf = (keybuf<<1)|KEY4;
if(keybuf == 0x00)
{
KeySta = 0;
}
else if(keybuf == 0xFF)
{
KeySta = 1;
}
else
{}
}
|