C語言判斷鍵盤按下和釋放,是通過檢測該鍵的狀態來實現的。如果是單一的一個按鍵,那么直接檢測該鍵是“1”還是“0”,就可以確定是按下還是釋放。如果是矩陣鍵盤,那么需要發送掃描碼,再檢測輸入值,來判斷鍵盤中鍵的狀態。以下舉例說明:
bitkeychk()//單一按鍵檢測
{
if(P1.0==0)//如果鍵按下
{
delay();//延時去抖
if(P1.0==0)return(1);//返回鍵狀態
}
return(0);
}
unsignedcharkbscan(void)//矩陣掃描按鍵檢測
{
unsignedcharsccode,recode;
P1=0x0f;//發0掃描,列線輸入
if((P2&0x0f)!=0x0f)//有鍵按下
{
delay(20);//延時去抖動
if((P1&0x0f)!=0x0f)
{
sccode=0xef;//逐行掃描初值
while((sccode&0x01)!=0)
{
P1=sccode;
if((P1&0x0f)!=0x0f)
{
recode=(P1&0x0f)|0xf0;
while((P1&0x0f)!=0x0f);//等待鍵抬起
return((~sccode)+(~recode));
}
else
sccode=(sccode<<1)|0x01;
}
}
}
return0;//無鍵按下,返回0
}