|
yxh1999 發(fā)表于 2020-3-7 13:46
static BYTE last_io=0xff;
static BYTE last_delay=0;
void keyscan()
我是初學(xué)者你加的這句有點(diǎn)似懂非懂
static BYTE last_io=0xff;
static BYTE last_delay=0;
void keyscan()
{
if(last_io!=P1)
{
last_io=P1;
last_delay=10;
}
else
{
if(P1!=0xff)
{
if(last_delay>0)
{
last_delay--;
if(last_delay==0)
意思是不是將指針定位到P1端口,然后檢測(cè)P1端口電位是否發(fā)生變化,如果發(fā)生變化,則進(jìn)行10ms延時(shí)。是這個(gè)意思嗎?
我想了下,我直接這樣加
if(P1!=0xff) //P1端口電平發(fā)生變化,表示有按鍵按下
{
delay10ms(); //延遲10ms
switch(P1)//再次檢測(cè)是哪位選手按下?lián)尨鸢粹o
{
case 0xfe://1號(hào)
beep = 1; //蜂鳴器響
delay50ms(20);
beep = 0;
break;
case 0xfd://2號(hào)
case 0xfb://3號(hào)
case 0xf7://4號(hào)
case 0xef://5號(hào)
case 0xdf://6號(hào)
case 0xbf://7號(hào)
case 0x7f://8號(hào)
}
}
如果P1端口電位發(fā)生變化,則延時(shí)10ms,然后再檢測(cè)是哪個(gè)引腳電平發(fā)生了變化,然后開(kāi)始對(duì)應(yīng)指令。這樣能達(dá)到防抖效果嗎? |
|