假设堆栈下面是:0000,就返回到开头,程序就会重头开始,一般程序的开始部分是开机的时候才执行的(初始化代码),这样一来,程序就会不停地初始化,单片机的工作,永远只是个开头.............
while(1)
原创
©著作权归作者所有:来自51CTO博客作者henoch的原创作品,请联系作者获取转载授权,否则将追究法律责任
关于死循环
没有死循环while(1),编译后会产生一条RET返回,这是一个没有LCALL的返回,返回到什么地方去了?
假设堆栈下面是:0000,就返回到开头,程序就会重头开始,一般程序的开始部分是开机的时候才执行的(初始化代码),这样一来,程序就会不停地初始化,单片机的工作,永远只是个开头.............
假设堆栈下面是:0000,就返回到开头,程序就会重头开始,一般程序的开始部分是开机的时候才执行的(初始化代码),这样一来,程序就会不停地初始化,单片机的工作,永远只是个开头.............
还有更严重的,,如果堆栈下面不是0000,是什么呢?可能是什么变量,值是变化的,谁也不知它会返回到什么地方....完蛋了..........
下一篇:我的友情链接
![](https://ucenter.51cto.com/images/noavatar_middle.gif)
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Android编译解决:Missing classes detected while running R8.
Android编译相关问题解决
Android 代码混淆 配置文件 -
python用while编写8进制 python while(1)
python中使用while循环的实例python中for循环用于针对集合中的每个元素的一个代码块,而while循环能实现满足条件下的不断运行。使用while循环时,由于while只要满足条件就会执行代码,故必须指定结束条件,否则会形成死循环。如图,i 的初始值为1,由于没有给i 再进行赋值,导致i 一直都满足条件,进入死循环。代码示例如下:
python用while编写8进制 python中while的用法 while循环 代码示例 python