初级会员

- 积分
- 103
- 金钱
- 103
- 注册时间
- 2020-2-26
- 在线时间
- 36 小时
|
1金钱
在按键输入实验对KEY-Scan返回的值作判断来翻转LED灯或者蜂鸣器,以下两个程序有什么差别?
使用switch响应效果很好,但使用if蜂鸣器有杂音,LED响应时行时不行,求大神解答下这两个程序有什么区别?
/****************************************************************
while(1)
{
key=KEY_Scan(0); //得到键值
if(key)
{
switch(key)
{
case WKUP_PRES: //控制蜂鸣器
BEEP=!BEEP;
break;
case KEY1_PRES: //控制LED1翻转
LED1=!LED1;
break;
case KEY0_PRES: //同时控制LED0,LED1翻转
LED0=!LED0;
LED1=!LED1;
break;
}
}else delay_ms(10);
/******************************************************************************
******************************************************************************
while(1)
{
key=KEY_Scan(1);
if(key==KEY0_PRES)
{
LED0=!LED0;
LED1=!LED1;
}
else if(key==KEY1_PRES)
{
LED0=!LED0;
}
else if(key==WKUP_PRES)
{
BEEP=!BEEP;
}
else
{
delay_ms(10);
}
*******************************************************************
|
最佳答案
查看完整内容[请看2#楼]
switch语句里,你用的是“不支持连按”,相当于按键按一次,LED及蜂鸣器动作只响应一次,现象当然对了;
if语句里,你用的是“支持连按”,只要按键按下,每10ms就响应一次动作,当然蜂鸣器 led状态会每10ms变一次,这不就是你看到的现象
|