点亮Led深入研究,主程序为什么一直循环?
时间:10-02
整理:3721RD
点击:
在51单片机执行完(第一次)主程序为什么还会循环,并没有循环语句,为什么?
主程序就是简单的四句话如下:
Void main(void)
{
Led=0;
延时;
led=1;
延时;
}
正常现象应该是灯亮一次灭掉,但是此程序为什么灯会一闪一闪,闪说明单片机再一次又一次的执行主函数在循环,为什?
主程序就是简单的四句话如下:
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)放在后面就可只执行一次了。
单片机主程序本来就重复执行啊,运行完再重头开始运行
