while(1);的作用

单片机中while(1)有两种用途,
while(1);
意义:这是一个死循环,代码不再向下执行。
用途:
1. 一般在调试代码时,为了检测一部分代码是否OK,防止后面的代码干扰执行结果,会在观测点加上while(1);
2. 有些代码检测到运行错误时,会抛出错误(打印、设置错误码),然后进入while(1);
3.  机器需要复位时,停止喂看门狗,进入while(1); 迫使看门狗超时,产生硬件复位

while( 1 ) { 代码 }
意义:这里将会重复执行{}中的代码
用途:
1.  单片机在不使用操作系统时,主程序一般都使用这种架构
2. 操作系统中的进程,执行任务时,有些也会使用这种架构
3. {}中的代码不停地检测某个条件,当条件符合时,跳出该循环,继续向下执行

我们在单片机中使用while(1),大部分还是为了防止程序跑飞,因为很多时候执行完某段程序后单片机的程序指针PC(就是程序指针)并不会停止,仍然会继续从ROM中读取指令并执行,这样一来可能会出现程序跑飞的情况,进而出现不确定的结果,我们加个while(1)就能让程序在执行完后在原地循环,相当于停在原地,防止跑飞。

原则上来讲,如果程序中没有加结尾的话,程序计数器会继续累加,从而执行正常程序后面的ROM空间里面的指令,不过一般这个指令都是0XFF,这就要看这条指令的含义了,如果是空的话就会一直执行到最后,直到程序计数器溢出,只是不知道程序计数器发生溢出是一个什么状态,有可能回到复位状态值,也有可能直接就让单片机死在这里不工作,这个就要看单片机的具体设计了。

在主程序里应当有
while(1)
{
  ..;
}
否则单片机的程序会继续按地址运行下去,到0ffffh后-》00000h。
如果不加while(1)语句,单片机依然正常运行,就是后面的地址里恰好有什么东西使得程序形成死循环,没有飞跑,那也是凑巧。
### Python中`while`语句的作用和使用场景 #### 1. `while`语句的基本作用 `while`语句在Python中用于实现循环逻辑,当给定的条件为真时,循环体内的代码会被反复执行。与`for`循环不同,`while`循环依赖于一个布尔表达式的值来决定是否继续执行循环[^1]。 #### 2. 基本语法结构 `while`语句的基本语法如下: ```python while 表达式: 循环体 ``` 只要`表达式`的值为`True`,循环体会被重复执行。当`表达式`变为`False`时,循环结束[^2]。 #### 3. 带`else`子句的`while`语句 Python中的`while`语句可以带有`else`子句,这是与其他语言(如C语言)的一个显著区别。`else`子句会在`while`循环正常结束(即循环条件不再满足)时执行,但如果循环因`break`语句中断,则`else`子句不会被执行[^3]。 示例代码: ```python count = 0 while count < 5: print('当前计数:', count) count += 1 else: print('循环已结束') ``` #### 4. 使用场景 - **重复执行任务**:当需要对某个操作重复执行直到满足特定条件时,`while`循环非常适用。例如,读取用户输入直到输入有效数据。 - **未知次数的迭代**:如果事先无法确定循环的具体次数,但可以根据条件动态控制循环结束,`while`循环是理想选择。 - **结合`break`和`continue`**:通过`break`语句可以在满足特定条件时提前退出循环,而`continue`语句则可以跳过当前循环的剩余部分并进入下一次循环。 #### 5. 示例代码 以下是一个使用`while`循环计算阶乘的示例: ```python n = int(input("请输入一个正整数: ")) factorial = 1 i = 1 while i <= n: factorial *= i i += 1 print(f"{n} 的阶乘是 {factorial}") ``` #### 6. 注意事项 - 需要确保循环条件最终能够变为`False`,否则会导致无限循环。 - 在复杂逻辑中,合理使用`break`、`continue`以及`else`子句可以使代码更加清晰和高效[^3]。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值