普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 839|回复: 2

新手刚学51,不太懂为什么要有while(1),求前辈解惑

[复制链接]

1

主题

1

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2024-2-22 20:03:40 | 显示全部楼层 |阅读模式
我看有的代码即使没有while(1);也可以运行起来,但是为什么大家都在最后加个while(1);呢?
感觉这个空循环从逻辑上也没什么用啊??
但是有的时候我不加最后这个while(1);,然后单片机显示的结果也确实不太对。
求前辈大佬们解惑,到底while(1);是干啥用的?
回复

使用道具 举报

14

主题

48

帖子

258

积分

中级会员

Rank: 3Rank: 3

积分
258
发表于 2024-3-3 20:58:19 | 显示全部楼层
哈哈,这个确实是从C语言编程学习后进入C51学习时需要转变一下思维的地方,简单说是使用的场景不同:C语言编程是编译后执行一下看结果是否正确就可以了,执行后退出,需要再执行的话可以重新执行。

而C51单片机的程序可以看作是一个电器或设备的程序,加电后就反复运行,执行一次后应该再次进入待命状态,满足条件就立即执行。举个生活中的例子就明白了- 大家都用过微波炉吧,加电后就进入待命状态,按键后就开始加热工作,到时间停止再次进入待命状态。此时程序就可以看作是在一个while(1)循环中,假如没有这个while(1)循环,则意味着我们加热一次后需要断电后再重新上电执行下一次加热,那就太麻烦了,对不对?

C51课程中的程序也是这样,是与C语言编程课上面的例子不同,C语言编程课的程序通常是printf()看结果,打印一遍就知道是否正确了,并不需要一直打印下去。这样对比一下就明白差异了。如果对于程序执行方面还有更多的思考,可以参考我之前的一个帖子- http://prechin.net/thread-41839-1-7.html
回复 支持 反对

使用道具 举报

2

主题

5

帖子

19

积分

新手上路

Rank: 1

积分
19
发表于 2024-3-22 22:37:14 | 显示全部楼层
while(1)其实就是死循环
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-27 17:03 , Processed in 0.091292 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表