永发信息网

单片机的流水灯一个不亮,程序有问题吗?

答案:4  悬赏:80  手机版
解决时间 2021-02-16 01:43
  • 提问者网友:王者佥
  • 2021-02-15 12:11
#include<reg51.h>
#define uint unsigned int
uint i,j;
void main()
{
{ while(0)
P2=0x80;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x40;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x20;
for(i=1000;i>0;i--)
P2=0x10;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x08;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x04;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x02;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x01;

}

}
为啥我的第七盏灯不亮啊,流水灯,还有就是为什么第二个for语句嵌套的时候都要最后有分号,而第一个没有,是因为第二个是作为第一个的命令吗,那要回有第三个是不是也要加呢
最佳答案
  • 五星知识达人网友:笑迎怀羞
  • 2021-02-15 12:43
第二个for语句嵌套的时候都要最后有分号,而第一个没有,是因为第二个是作为第一个的循环体。
程序小改一下就好了:
void main()
{
while(1) { // { while(0) 改这行
P2=0x80;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x40;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x20;
for(i=1000;i>0;i--)
P2=0x10;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x08;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x04;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x02;
for(i=1000;i>0;i--)
for(j=100;j>0;j--);
P2=0x01;
for(i=1000;i>0;i--) // 加这行 ,没这两行 P2=0x01不延时,一晃而过看不到亮
for(j=100;j>0;j--); // 加这行

}

}
全部回答
  • 1楼网友:等灯
  • 2021-02-15 15:19
不亮是不是io口没加上拉电阻,io口驱动能力不够。关于for其实是这样: for(i=1000;i>0;i--) { for(j=100;j>0;j--); }
  • 2楼网友:長槍戰八方
  • 2021-02-15 14:58
sbit led_bit = p1 ^ 6 是将p1口的第6位用led_bit 定义,这样就可以在程序中引用led_bit来操作p1.6这一位了。 p0 = led_stu 中的led_stu 可能是预定义的一个值或一个变量,把它赋给p0; led_bit = 1 说是锁存数据 ,你要对应电路路,电路图上可能有74hc之类的数字电路芯片,比如串入并出,串行8位后在芯片一个控制端使能使8位数据并行输出并锁存。
  • 3楼网友:狂恋
  • 2021-02-15 14:10
while(0)改成while(1) 循环执行的语句只有一条时就不用加{}了,分号表示一句语句的结束,循环体内两条语句以上就得加。 而你的循环体内只是一个循环(嵌套)就不用加了,加了更好。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯