if(key_sr1==1)//IO是高电平,说明按键没有被按下,这时要及时清零一些标志位
{
ucKeyLock1=0; //按键自锁标志清零
uiKeyTimeCnt1=0;//按键去抖动延时计数器清零,此行非常巧妙,是我实战中摸索出来的。
uiKeyCtntyCnt1=0; //连续累加的时间间隔延时计数器清零
}
else if(ucKeyLock1==0)//有按键按下,且是第一次被按下
{
uiKeyTimeCnt1++; //累加定时中断次数
if(uiKeyTimeCnt1>const_key_time1)
{
uiKeyTimeCnt1=0;
ucKeyLock1=1; //自锁按键置位,避免一直触发
ucKeySec=1; //触发1号键
}
}
else if(uiKeyTimeCnt1<const_time_1s) //按住累加到1秒
{
uiKeyTimeCnt1++;
}
else //按住累加到1秒后仍然不放手,这个时候进入有节奏的连续触发
{
uiKeyCtntyCnt1++; //连续触发延时计数器累加
if(uiKeyCtntyCnt1>const_time_0_25s) //按住没松手,每0.25秒就触发一次
{
uiKeyCtntyCnt1=0; //
ucKeySec=1; //触发1号键
}
}
大师,还在吗?这个程序在第一个 else if中已经将案件触发 锁住了 第三个else if 如何能继续执行呢?
初学者 很疑惑,望解答,谢谢 |