用一个按键控制蜂鸣器开关

以下是c51代码的一部分,目的是让有源蜂鸣器在按键key5按下后改变状态(响或不响),但执行结果是只想一声过后蜂鸣器关闭,按键无作用。错在哪里了啊~~~求大侠指导bitl... 以下是c51代码的一部分,目的是让有源蜂鸣器在按键key5按下后改变状态(响或不响),但执行结果是只想一声过后蜂鸣器关闭,按键无作用。错在哪里了啊~~~求大侠指导

bit load=1; //按键按下未被处理
……
if(key5==0); //如果按下key5
{
for(i=0;i<20;i++) //延时并且不影响led数码管显示
{
delay(1);
display(d); //数码管显示,与蜂鸣器无关
}
if(load) //如果按键按下未被处理
{
spk=!spk;
load=0;
}
else load=1;
}
展开
 我来答
仰瞻丞相祠堂e
推荐于2018-09-24 · TA获得超过157个赞
知道答主
回答量:140
采纳率:0%
帮助的人:76万
展开全部
bit load=1; //按键按下未被处理
……
if(key5==0); //如果按下key5
{
for(i=0;i<20;i++) //延时并且不影响led数码管显示,这是软件去抖
{
delay(1);
display(d); //数码管显示,与蜂鸣器无关
load=0;//你应该在这里加一句表示按键按下且未被处理
}
if(load) //如果按键按下未被处理
{
spk=!spk;
load=0;
}
else load=1;
}
匿名用户
2018-09-20
展开全部
#include sbit KEY=P1^0; sbit LED=P2^0; void main(void) { if(KEY==1) LED=0; if(KEY==0) LED=1; while(1); } 如果KEY==1;LED灯则灭,KEY==0;LED灯则点亮
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1132259611
2010-08-09
知道答主
回答量:16
采纳率:0%
帮助的人:0
展开全部
if(load) //如果按键按下未被处理
{
spk=!spk;
load=0;
}
else load=1;
}
这一部分很奇怪啊,if里面的条件是什么啊,还是应该写key5==0这个啊?
我写了一个
if(key==0) //按键按下

{
beep=0; //蜂鸣器响,我的蜂鸣器负极是直接接在io口上的
}
else
beep=1;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
huangjiangfu
2010-08-09 · TA获得超过143个赞
知道小有建树答主
回答量:350
采纳率:0%
帮助的人:117万
展开全部
写这个 太麻烦了 没必要那么多循环的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式