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灯就是不灭 展开
反正2灯就是不灭 展开
2个回答
展开全部
具体来说,这程序中有一个致命的错误和一个书写的错误和一个不必要
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;}
}
}
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;}
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询