微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 点亮Led深入研究,主程序为什么一直循环?

点亮Led深入研究,主程序为什么一直循环?

时间:10-02 整理:3721RD 点击:
在51单片机执行完(第一次)主程序为什么还会循环,并没有循环语句,为什么?
主程序就是简单的四句话如下:
   Void main(void)

   Led=0;
   延时;
  led=1;
  延时;

正常现象应该是灯亮一次灭掉,但是此程序为什么灯会一闪一闪,闪说明单片机再一次又一次的执行主函数在循环,为什?

mark,没注意过。

是没有循环,但是重新运行了主函数啊。就你这个程序,看起来就像循环一样了

LED=0;延时;
这个延时就表明这个LED亮的时间,当亮完这个时间后,就会执行
LED=1;延时;
这个延时就表明LED灭的时间,你这个程序会在亮灭之间不断地循环

那应该是亮一次,灭掉就完事了,怎么还会不停地闪动呢?

在c99标准中,main函数是不能定义为空反回值的,其反回值必须为int型,也就是说你定义是不标准的,标准应为int main(void),在程序结束应加上return 0,表明程序正常结束,这样就不会循环了

#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint a)
{
uchar b;
for(;a>0;a--)  for(b=110;b>0;b--);
}
void main()
{while(1)
{
led=0;delay(500);led=1;delay(500);
}
}
这样的LED是无限循环的,
{
led=0;delay(500);led=1;delay(500);while(1);
}
这样只能亮一次。

while(1)放在后面就可只执行一次了。

单片机主程序本来就重复执行啊,运行完再重头开始运行

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top