//消抖后更新按鍵狀態
for (i=0;i<4;i++)//每行4個按鍵,所以循環4次
{
if ((keybuf[keyout][i]&0x0f)==0x00)
{ //連續4次掃描值為0,即4*4ms內都是按下狀態時,可認為按鍵已穩定的彈起
keysta[keyout][i]=1;
}
}//外層循環大括號
//執行下一次的掃描輸出
keyout++;
keyout=keyout&0x03;//索引值加到4即歸零
switch(keyout)
{
case 0:key_out_4=1;key_out_1=0;break; //key_out_1低電平的時候,開始探測第一行按鍵。順便把上次低電平的拉高。
case 1:key_out_1=1;key_out_2=0;break; //
case 2:key_out_2=1;key_out_3=0;break;
case 3:key_out_3=1;key_out_4=0;break;
default:break;
}//switch后大括號