最近在看原子的战舰板,感觉很好用。现在做到按键输入实验,key.c中有个函数不是很明白
[mw_shl_code=c,true]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;
}
[/mw_shl_code]
这个函数中,哪里能体现出mode:1支持连按和mode:0不支持连按?
main函数中这样调用,MODE=0;KEY_Scan(MODE).
我是这样理解的:无论MODE为何值,每一次调用,执行到
[mw_shl_code=c,true]if(key_up&&(KEY0==0||KEY1==0||KEY2==0||KEY3==1))[/mw_shl_code]
[mw_shl_code=c,true]这一行,key_up总是为1,子函数也没有循环,所以两种模式根本体现不出来,求指教。。。[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
[mw_shl_code=c,true]
[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
如果mode =0 的话 ,第一次扫描按键时,就把key_up置0 了,那么下次就进入不了按键判断了
一周热门 更多>