中级会员
 
- 积分
- 432
- 金钱
- 432
- 注册时间
- 2016-6-23
- 在线时间
- 66 小时
|
发表于 2020-7-31 16:12:01
|
显示全部楼层
可以设置一个变量使按键带有自锁功能。
void KeySan(void)
{
static unsigned char Su8KeyLock1; //1 号按键的自锁
static unsigned int Su16KeyCnt1; //1 号按键的计时器
static unsigned char Su8KeyTouchCnt1; //1 号按键的次数记录
static unsigned int Su16KeyIntervalCnt1; //1 号按键的间隔时间计数器
if(0!=KEY_INPUT1)//IO 是高电平,说明按键没有被按下,这时要及时清零一些标志位
{
Su8KeyLock1=0;
Su16KeyCnt1=0;
}
if(Su8KeyTouchCnt1>1)
{
Su16KeyIntervalCnt1++;
if(Su16KeyIntervalCnt1>=KEY_INTERVAL_TIME)
{
Su16KeyIntervalCnt1=0;
Su8KeyTouchCnt1=0;
}
}
}
else
{
if(0==Su8KeyLock1)//有键按下
{
Su16KeyCnt1++;
if(Su16KeyCnt1>=KEY_FILTER_TIME)
{
Su8KeyLock1=1; //按键的自锁,避免一直触发
Su16KeyIntervalCnt1=0; //按键有效间隔的时间计数器清零
Su8KeyTouchCnt1++; //记录当前单击的次数
if(1==Su8KeyTouchCnt1)
{
vGu8SingleKeySec=1;
}
else if(Su8KeyTouchCnt1>=2)
{
Su8KeyTouchCnt1=0; //统计按键次数清零
vGu8SingleKeySec=1; //单击任务
vGu8DoubleKeySec=1; //双击任务
}
}
|
|