为什么有了if(mode)key_up=1; 这个语句 ,就支持连按了?
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;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
分开,成
if(mode)
key_up=1;
就知道了,这就是个条件判断语句。如果mode是0,就不会执行这个if语句。如果mode是1,每次key_up会被还原成1
我来大概哦总结一下吧,我也刚看这个程序:
1)mode是函数接口,调用的时候mode可以选择:a)mode=0,每次只能读取一次按键值,需要KE3复位才能再次读取;b)mode=1,此时key_up每次均为1,可以连续读取(不管是否KEY3);
2)mode=0时,是static使得key_up保持上次调用时的状态,例如,第一次是KEY1,则key_up会变成0,再次调用函数时候,key_up还是0,函数返回值为0,表示无变化。
---------------------------------
static u8 key_up = 1;//按键松开标志位
if (mode) key_up = 1;//支持连续按键
你好,这样的话,不管mode是1还是0,key_up都是1,那这样的话没有区别啊,请教了,谢谢!
一周热门 更多>