我在写程序的时候把while(1)注释了灯还能闪烁
书上说加while(1)是无限循环,不加就是执行一次
从程序上分析,
点亮
延时
熄灭
延时
如果只执行一次,那么应该是亮→灭 永远的灭
如果无限循环就是亮灭亮灭永远的
可是加不加while(1)都能亮灭亮灭的循环,不解
附上//程序
#include<reg51.h> //包含单片机寄存器的头文件
/****************************************
函数功能:延时一段时间
*****************************************/
void delay()
{
unsigned int a;
for(a=0;a<5000;a++);
}
/*******************************************************
函数功能:主函数 (C语言规定必须有也只能有1个主函数)
********************************************************/
void main()
{
//while(1) //就是此处加不加都能无限循环
{
P1=0x00; //P1=1111 1110B, P1.0输出低电平
delay(); //延时一段时间
P1=0xff; //P1=1111 1111B, P1.0输出高电平
delay(); //延时一段时间
}
}
51单片机加不加while(1) 都能无限循环?不是说不加不循环吗?_百度...
1、首先回答你,这个while(1)必须加,这点不用怀疑;2、为什么去掉还能运行,你检查下屏蔽后是否有重新编译重新烧录程序,如果没有那么现运行的还是以前的程序。3、不加while(1)的危害,在执行完第二个delay()函数后,pc指针(程序运行指针)即跳出了main函数,此刻程序指针就进入了一个未知的非法地址...
为什么单片机程序总要加一个 while(1) ?
循环系统,如果不加,系统就成了 单次系统,执行一次就OVER 了
...想让其转一圈。为什么停不下来,没有while(1),求解答
单片机的程序,本身就是无限循环的。加上语句:while(1);,它才会停下来。
...这段代码可以在51单片机中无限循环,我没加循环语句啊,而且还是十 ...
是代码重复执行的原因,你的代码执行完毕后,单片机继续读取后续空白存储单元内容(空内容),全部执行完毕后,再从地地址为0处开始执行,所以才会重复执行以上代码。
单片机执行完程序不停下来?
这个不是死循环,不过51单片机执行完main函数后会自动重来,就像循环一样,不过还是有一点差别的,不要利用这点来无限循环,,有时会出错的。想程序停下来就在最后加一句while(1); void main (void) { int a; for(a=0;a<5000;a++) P1_6=0; for(a=0;a<5000;a++) ; P1_6=1; ...
单片机点亮一个二极管 led=0以后 加不加while(1) 二极管都是一直亮...
有区别,加上无限循环,程序一直在无限循环里面运行,否则程序会跑飞,跑到没有代区还好,要是跑到代码区就造成代码混乱了!代码运行不按照你理想的那样运行了,这在程序设计中是不允许出现的情况!
51单片机少写了一个循环语句,为什么还能执行循环,错在哪里呢?程序如下...
因为程序容量不大,运行速度又很快,人还没有感觉出停顿,程序就又从头执行了。只要有电源,复位正常,有时钟,PC指针就会按照时钟的振荡而不停的自加,除非程序中有改变PC指针的值的指令。所以当给一个内部没有程序的单片机上电,复位并供上时钟时,单片机不是静止的,而是一直在运行的,运行的方式是...
用proteus7.5仿真51单片机为啥我的for循环退不出来d1始终闪烁d2不亮
在程序的末尾加上一个while(1);就可以了。单片机程序的运行机制,你MAIN函数运行最后一条后,没有给它停住。单片机是会一直无限的循环整个ROM空间,也就会一直重复执行你的程序。这个用文字表达也不好说清楚。
单片机C语言中的while(1)是什么意思
while(1);意义:这是一个死循环,代码不再向下执行。用途:1. 一般在调试代码时,为了检测一部分代码是否OK,防止后面的代码干扰执行结果,会在观测点加上while(1);2. 有些代码检测到运行错误时,会抛出错误(打印、设置错误码),然后进入while(1);3. 机器需要复位时,停止喂看门狗,进入while(1...
单片机一条语句只在执行的时候执行一次完之后,只保持该值一个指令周期...
这是C语言的程序,对于单片机的主程序必须有while(1)语句,应该是由while(1)语句构成主循环结构。而你这个主程序只有一个语句,LED=0; 那就必须保留while(1); 一行,这是一个无限循环语句,单片机才能在这个语句上无限循环下去,相当于停止在这一行上。如果没有这一行,编译时就当成子程序,执行...