此部分為網(wǎng)上找到的代碼。。邏輯關(guān)系沒搞懂,希望有大神幫解釋
void key()
{
static uchar key_new = 0,key_old = 0,key_value = 0;
if(key_new == 0) //按鍵松開 ,key=0時,按鍵是沒有按下去的
{
if((key_io & 0x07) == 0x07)
key_value ++;
else
key_value = 0;
if(key_value >= 5) //按鍵松開松手檢測
{
key_value = 0;
key_new = 1; //按鍵松開后進入等待按鍵狀態(tài)
}
}
else
{
if((key_io & 0x07) != 0x07) //按鍵按下
key_value ++;
else
key_value =0;
if(key_value >= 5) //按鍵按下消抖
{
key_value = 0;
key_new = 0; //按鍵松開后進入等待松開按鍵狀態(tài)
}
}
key_can = 20;
if((key_new == 0) && (key_old == 1))
{
switch(key_io & 0x07)
{
case 0x06: key_can = 1; break; //得到按鍵值
case 0x05: key_can = 2; break; //得到按鍵值
case 0x03: key_can = 3; break; //得到按鍵值
}
}
key_old = key_new;
}
|