回复【3楼】 六画玄辉 :
---------------------------------
额。。。只是写了个代码给你一个思路。看来你是源码不动的套进去思考了。
[mw_shl_code=c,true]unsigned char key_fun(void)
{
static unsigned int key0_cnt = 0;
if(key0 == 0) // 如果此时检测到按键按下
{
delay_ms(10); // 延时消抖
if(key0 == 0) // 如果确认是按键按下
{
key0_cnt++;
}
}
else //如果此时检测到按键未按下
{
if(key0_cnt >= 100) // 如果是长按(大于等于10ms*100 = 1s)
{
key0_cnt = 0;
return L_PRESS; // 长按状态值
}
else if(key0_cnt > 0 && key0_cnt < 100) //如果是短按(小于10ms*100 = 1s)
{
key0_cnt = 0;
return key0_press; // 短按状态值
}
else
{
return 0; // 未按状态值
}
}
}[/mw_shl_code]
|