此部分为网上找到的代码。。逻辑关系没搞懂,希望有大神帮解释
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; //按键松开后进入等待按键状态
}
}
else
{
if((key_io & 0x07) != 0x07) //按键按下
key_value ++;
else
key_value =0;
if(key_value >= 5) //按键按下消抖
{
key_value = 0;
key_new = 0; //按键松开后进入等待松开按键状态
}
}
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;
}
|