【转载】while(1)的作⽤
补⼀下while(1)的作⽤:
while语句的执行流程单⽚机中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)语句,单⽚机依然正常运⾏,就是后⾯的地址⾥恰好有什么东西使得程序形成死循环,没
有飞跑,那也是凑巧。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论