#include<reg51.h>
unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//êyÂë1üÏÔê¾·û
sbit k1=P3^2;
sbit k2=P3^6
bit keysta=1
void main(){
bit backup=1;
unsigned char cnt=0;
TMOD=0X01;
TH0=0XF8;
TL0=0XCD;
ET0=1;
TR0=1;
EA=1;
P2=seg[cnt];
while(1){
if(keysta!=backup){
if(backup==0){
cnt++;
if(cnt>=10){
cnt=0;
}
P2=seg[cnt];
}
backup=keysta;
}
}
}
void tm()interrupt 1
{
static unsigned char keybuf=0xff;
TH0=0XF8;
TL0=0XCD;
keybuf=(keybuf<<1)| k1;
if(keybuf==0xfe){
keysta=0;
}
else if(keybuf==0xff){
keysta=1;
}
}
如果在這個程序下變成二個按鍵是不是要:
1.二個備份值
2.定時器中斷那里也要添加keybuf=(keybuf<<1)|k2
這個樣子的話覺得好繁瑣~不智能。希望大家提醒一下~
|