程序没循环led灯为什么还一直闪

2019-07-16 02:20发布

#include <reg51.h>
  void delay(unsigned int i);
  main()
  {
    while(1)
  {
  P2=0x00;
  delay(600);
  P2=0xff;
  delay(600);
  }
  }
   
  void delay(unsigned int i)
  {
    unsigned char j;
for(;i>0;i--)
   for(j=255;j>0;j--);
  }
和另一个程序
#include <reg51.h>
  void delay(unsigned int i);
  main()
  {
   
  P2=0x00;
  delay(600);
  P2=0xff;
  delay(600);
  }

   
  void delay(unsigned int i)
  {
    unsigned char j;
for(;i>0;i--)
   for(j=255;j>0;j--);
  }
为什么;俩个程序烧录到单片机的结果是一样的呢 led灯一直闪  没有循环的不应该只闪一次吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
闲闲道人
1楼-- · 2019-07-16 07:41
 精彩回答 2  元偷偷看……
woerwo
2楼-- · 2019-07-16 13:13
你的主程序就是一个顺序,当执行完一次后,它会从头再执行的,而不是停在最后的位置的。如果你要停在最后的位置,就加一句while (1);
wangguoqingcumt
3楼-- · 2019-07-16 14:44
程序1中可以把while语句放在如下位置:
main()
  {
  P2=0x00;
  delay(600);
  P2=0xff;
  delay(600);
while(1)
  {
  }
  }
程序2把第二行语句去掉!
wangguoqingcumt
4楼-- · 2019-07-16 18:07
程序2应该改成main()
  {
  P2=0x00;
  delay(600);
  P2=0xff;
  delay(600);
while(1)
  {
  }
  }
因为不加while语句 main函数中的语句带动led会跑飞  导致程序跳出 按已记住的动作执行!!
独孤辉二
5楼-- · 2019-07-16 22:07
woerwo 发表于 2013-3-1 22:36
你的主程序就是一个顺序,当执行完一次后,它会从头再执行的,而不是停在最后的位置的。如果你要停在最后的 ...

为什么会从头再执行呢?
独孤辉二
6楼-- · 2019-07-16 22:27
 精彩回答 2  元偷偷看……

一周热门 更多>