从单片机基础到程序框架(全集 2019pdf版).pdf - 第434页

{ Gu8LedSt atus=0; LedClose (); //LED 灭 } vGu8Single KeySec=0; //响应 按键服务处理 程序后 ,按键编号必 须清零,避免 一直触发 break; } }

100%1 / 836
{
Su8KeyLock1=1;
vGu8SingleKeySec=1; //K1 单击按键的触发
}
}
}
}
void CombinationKeyTask(void) //组合按键任务函数,放在主函数内
{
if(0==vGu8CombinationKeySec)
{
return; //按键的触发序号是 0 意味着无按键触发,直接退出当前函数,不执行此函数下面的代码
}
switch(vGu8CombinationKeySec) //根据不同的按键触发序号执行对应的代码
{
case 1: //K1 K2 的组合按键任务
vGu8BeepTimerFlag=0;
vGu16BeepTimerCnt=KEY_VOICE_TIME; //触发一次组合按键后,发出“嘀”一声
vGu8BeepTimerFlag=1;
vGu8CombinationKeySec=0; //响应按键服务处理程序后按键编号必须清零,避免一直触发
break;
}
}
void SingleKeyTask(void) //单击按键任务函数,放在主函数内
{
if(0==vGu8SingleKeySec)
{
return; //按键的触发序号是 0 意味着无按键触发,直接退出当前函数,不执行此函数下面的代码
}
switch(vGu8SingleKeySec) //根据不同的按键触发序号执行对应的代
{
case 1: //K1 击任务
if(0==Gu8LedStatus)
{
Gu8LedStatus=1;
LedOpen(); //LED
}
else
{
Gu8LedStatus=0;
LedClose(); //LED
}
vGu8SingleKeySec=0; //响应按键服务处理程序后,按键编号必须清零,避免一直触发
break;
}
}
第九十六节: 独立按键“一键两用”的短按与长按。
【96.1 “一键两用”的短按与长按。
上图 96.1.1 独立按键电路
上图 96.1.2 LED 电路
上图 96.1.3 有源蜂鸣器电路
某些项目当外部按键的资源比较少的时候,一个按键也可以“一键多用”“一键多用”有很多种玩法,
比如,谍战片的无线电通信,依赖一个按键的“不同敲击频率”就可以发送内容丰富的情报。本节“一键两