dibatihaonana 发表于 2024-2-22 20:03:40

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

我看有的代码即使没有while(1);也可以运行起来,但是为什么大家都在最后加个while(1);呢?
感觉这个空循环从逻辑上也没什么用啊??
但是有的时候我不加最后这个while(1);,然后单片机显示的结果也确实不太对。
求前辈大佬们解惑,到底while(1);是干啥用的?

zhong_zhiqi 发表于 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

mhf 发表于 2024-3-22 22:37:14

while(1)其实就是死循环
页: [1]
查看完整版本: 新手刚学51,不太懂为什么要有while(1),求前辈解惑