[mw_shl_code=c,true]原程序:[/mw_shl_code]
[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||WK_UP==1))
{
delay_ms(10);//去抖动
key_up=0;
if(KEY0==0)return KEY0_PRES;
else if(KEY1==0)return KEY1_PRES;
else if(WK_UP==1)return WKUP_PRES;
}else if(KEY0==1&&KEY1==1&&WK_UP==0)key_up=1;
return 0;// 无按键按下
}[/mw_shl_code]
大家好,我是初学者,基础较差,我想请问下,如果我按下KEY0,他会返回KEY0_PRES,但是这条函数在运行完if(KEY0==0)return KEY0_PRES;这条后是继续运行还是就返回完第一个值后就退出了。
为何我将程序的改成以下是不正常的?
[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||WK_UP==1))
{
delay_ms(10);//去抖动
key_up=0;
if(KEY0==0)return KEY0_PRES;
else if(KEY1==0)return KEY1_PRES;
else if(WK_UP==1)return WKUP_PRES;
}
else if(KEY0==1&&KEY1==1&&WK_UP==0)
{
key_up=1;
return 0;// 无按键按下
}
}[/mw_shl_code]
问题应该是比较低级,大家请包涵
|