程序没循环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条回答
D.Kity
1楼-- · 2019-07-17 01:44
在后面加一个空的循环就可以了
mrtls
2楼-- · 2019-07-17 07:03
单片机中为了能让程序受控,需要加while(1)这样的死循环,保证程序指针总是指向被编译过的指令也就是作者写的指令,否则就会一直执行ROM里指令造成跑飞,跑飞后,单片机引脚输出紊乱,所以灯在闪也不是固定频率的闪,是乱闪

一周热门 更多>