谁能用具体实例说明死循环while(1)的必要性
字体:
小
中
大 |
打印
发表于: 2008-7-13 09:41 作者: fzpxp 来源: proteus仿真社区
用C编写单片机程序时常用到while(1),目的是让程序死循环。
一点质疑:
我现在编写的较简单程序比如流水灯、控制LED的循环亮灭等不加while(1)实际效果和加while(1)是一样的,那么这个while(1)有无必要呢?
还有传说中的没有while(1)程序跑飞是怎么回事?
谁能用具体实例说明while(1)的必要性?就是说,不加while(1)显示结果是错误的
最新回复
ybzjllj (2008-7-13 09:57:55)
你想一下,一段代码瞬间执行完毕,然后单片机会做什么呢?
有了while(1),单片机永远有事可做,我们心理也明白它接下来干什么.
驱动几个发光管,没有这个循环,好像也正常,哪是因为程序存贮器空间的代码极少,绝大多数空间都存放的是00或FF,程序跑飞后,也干不了什么坏事,代码一多,那就死了...............
fzpxp (2008-7-13 10:18:16)
ybzjllj (2008-7-13 10:20:32)
是否添加while()汇编后的差异.JPG
ybzjllj (2008-7-13 10:29:28)
假设堆栈下面是:0000,就返回到开头,程序就会重头开始,一般程序的开始部分是开机的时候才执行的(初始化代码),这样一来,程序就会不停地初始化,单片机的工作,永远只是个开头.............
还有更严重的,,如果堆栈下面不是0000,是什么呢?可能是什么变量,值是变化的,谁也不知它会返回到什么地方....完蛋了................
fzpxp (2008-7-13 11:54:12)
bj301 (2008-7-15 17:11:09)
tianwen09 (2008-7-27 20:04:21)
谢谢
forpeople (2008-7-28 12:53:58)
太好了!
谢谢!!!!