c51单片机,keil纠下错误,很简单的。 20

下载到开发板上和仿真软件上,实际情况如下a=1,b=1,2灯大亮(对应put1),1灯不亮a=0,b=1,2灯变暗,1灯不亮a=1,b=0,2灯大亮,1灯亮a=0,b=0... 下载到开发板上和仿真软件上,实际情况如下a=1,b=1, 2灯大亮(对应put1),1灯不亮a=0,b=1, 2灯变暗,1灯不亮a=1,b=0, 2灯大亮,1灯亮a=0,b=0, 2灯变暗,1灯亮
反正2灯就是不灭
展开
 我来答
帐号已注销
2017-01-05 · TA获得超过2061个赞
知道小有建树答主
回答量:342
采纳率:0%
帮助的人:337万
展开全部
具体来说,这程序中有一个致命的错误和一个书写的错误和一个不必要

1、中间那个判断语句中,a和b的值都是1,这就是为什么2灯常亮的致命原因
2、判断语句if,在使用的时候应将if的执行语句用方括号括起来,这是书写错误
3、判断语句中不需要那么多小括号,这是没必要的一项

因为单片机的P3端口,是具有内部上拉电阻的端口,其默认电平就是高电位,表示方法就是1,第二个判断语句a和b都为1的时候,put1=0,这就是无按键被按下的时候点亮了led,第二个灯

解决后的代码如下:
void main(void)//主函数
{
while(1)
{
if(a==0&&b==0){put0=0;put1=0;}
if(a==0&&b==1){put0=1;put1=0;}
if(a==1&&b==0){put0=0;put1=1;}
}
}
烟火夜空
2017-01-02 · TA获得超过6622个赞
知道大有可为答主
回答量:1678
采纳率:93%
帮助的人:557万
展开全部
简单来讲,就是 你的每个 if 内容,都缺少 {}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式