void keyscan()
{
P3=0xff;
temp=P3&0xff;
if(temp!=0xff)
{
TR0=1;
}
}
void timer0() interrupt 1
{
uchar keytemp;
TH0 = 0xF8;
TL0 = 0x30;
keybit=1;
if(1==keybit)
{
if(temp!=0xff)
keytemp=temp;
keybit=0;
P3=0xff;
temp=P3&0xff;
if(0xff==temp)
{
switch(keytemp)
{
case 0xfe : num++;break;
case 0xfd : num=2;break;
case 0xfb : num=3;break;
case 0xf7 : num=4;break;
case 0xff : num=9;break;
default : num=5; break;
}
if(10==num) num=0;
keytemp=0;
TR0=0;
}
}
}
以上通过测试,用于数码管动态扫描,最初的消抖,一直按住,数码管显示会不正常
这种办法是我自己想出来的..不知道能否用于实际应用.....