?为什么有了if(mode)key_up=1; 这个语句 ,就支持连按了??

2019-07-20 22:46发布


为什么有了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;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
43条回答
未来的风筝
2019-07-25 13:50
本帖最后由 未来的风筝 于 2017-5-24 09:34 编辑

我来大概哦总结一下吧,我也刚看这个程序:
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,表示无变化。

一周热门 更多>