//消抖后更新按键状态
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后大括号