u8 KEY_Scan(u8 mode)
{
static u8 key_up=1;//按键按松开标志
if(mode)key_up=1; //支持连按
if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1))
{
delay_ms(10);//去抖动
key_up=0;
if(KEY0==0)return KEY_RIGHT;
else if(KEY1==0)return KEY_DOWN;
else if(KEY2==0)return KEY_LEFT;
else if(KEY3==1)return KEY_UP;
}else if(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)key_up=1;
return 0;// 无按键按下
}
最后“else if(KEY0==1&&KEY1==1&&KEY2==1&&KEY3==0)”一句后面的执行的语句应该是“key_up=1;”,而最后的“return 0;// 无按键按下”因为没有花括号括起来,所以不受else if影响啊。所以return 0一直会执行啊。所以上面的4个return都应该失效了啊?还有那个mode=0好像没有影响吧,开头static u8 key_up=1已经定义了,mode=0的话,只是第二行的if语句不执行罢了,好像并不影响啊。求解答。
|