?为什么有了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条回答
心染红尘
1楼-- · 2019-07-21 07:05
回复【2楼】TinyBoy:
---------------------------------
就是if(mode)key_up=1; 这条语句不明白
TinyBoy
2楼-- · 2019-07-21 08:26
回复【3楼】心染红尘:
---------------------------------
看不明白,找C语言的书来看,还不明白,你可以自己写一个按键扫描程序出来,不用例程的,也许写完了,这个也明白了。
正点原子
3楼-- · 2019-07-21 12:46
回复【3楼】心染红尘:
---------------------------------
这就是恢复按键检测。
如果key_up,说明按键没松开。
心染红尘
4楼-- · 2019-07-21 15:26
 精彩回答 2  元偷偷看……
jermy_z
5楼-- · 2019-07-21 21:13
回复【6楼】心染红尘:
---------------------------------
去查查  static的效果吧
Jupiter
6楼-- · 2019-07-22 06:53
你把keyup改成KeyupFlag也许更好理解,其实mode就是控制了keyupflag这个标志位,mode=1会自动置位KeyupFlag,而mode=0则跳过执行这一句

一周热门 更多>