*** * C51 为什么都要加一个while(1)?******

while(1)的作用:

while(1) 是一个死循环 为了不让代码继续向下执行。

单片机中使用while(1),大部分:为了防止程序跑飞;

程序执行完之后 单片机的程序计数器 PC(程序指针) 并不会停止 而是会继续从ROM(总存储内存) 继续读取指令并执行,这样就会出现不确定的情况,导致程序跑飞的可能性增加。

加上while(1) 就会让程序停在原地,防止跑飞。

原则上讲,如果程序中没有加结尾的话,程序计数器会一直累加,继续执行 正常程序之后的 ROM空间里面的指令;ROM里面的指令一般都为0xFF, 若不是此时就需要看该条指令的含义;

如果是空的话,就会一直执行到最后 直至程序计数器溢出;

但程序计数器溢出之后的状态无法判断 有可能复位 有可能让单片机直接卡死在这里工作不了,此时就需要看单片机的具体设计了。

所以在主程序中 加上while(1) 是非常必要的。

出自:CSDN code_snow

单片机的主程序中为什么都要加一个while(1)?的更多相关文章

  1. java和C#中 定义变量,加一个小括号是什么意思。。。

    在群里灌水发现,有人这样定义字符串,感觉很好奇..又问了群友,群友说这样定义没问题.. String strtemp = ("test"); 我自己试了下,java和C#都可以,C ...

  2. POJO类中的任何布尔类型的变量,都不要加is

    POJO类中的任何布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误. 定义为基本数据类型boolean isSuccess:的属性,它的方法也是isSuccess(),HSF框架在反向解 ...

  3. 在Unity3D的网络游戏中实现资源动态加载

    用Unity3D制作基于web的网络游戏,不可避免的会用到一个技术-资源动态加载.比如想加载一个大场景的资源,不应该在游戏的开始让用户长时间等待全部资源的加载完毕.应该优先加载用户附近的场景资源,在游 ...

  4. (转)在Unity3D的网络游戏中实现资源动态加载

    原文:http://zijan.iteye.com/blog/911102 用Unity3D制作基于web的网络游戏,不可避免的会用到一个技术-资源动态加载.比如想加载一个大场景的资源,不应该在游戏的 ...

  5. EF如何操作内存中的数据以及加载相关联表的数据:延迟加载、贪婪加载、显示加载

    之前的EF Code First系列讲了那么多如何配置实体和数据库表的关系,显然配置只是辅助,使用EF操作数据库才是每天开发中都需要用的,这个系列讲讲如何使用EF操作数据库.老版本的EF主要是通过Ob ...

  6. R中一切都是vector

    0.可以说R语言中一切结构体的基础是vector! R中一切都是vector,vecotor的每个component必须类型一致(character,numeric,integer....)!vect ...

  7. 在SQL存储过程中给条件变量加上单引号

    在SQL存储过程中给条件变量加上单引号,不加语句就会出问题,以下就是在存储过程中将条件where设置成了动态变化的,给where赋完值再和前面的语句拼接,再execute(SQL) ), )), )+ ...

  8. RadioGroup+Fragment 使用Fragment的add()方法,防止使用replace每次都重新加载页面,造成资源浪费

    radiogroup+fragment是很常用的主页导航控件,之前为了代码简便一直使用的replace()替换fragment,代码如下: getSupportFragmentManager().be ...

  9. 51,PIC,AVR单片机它们的优点缺点都有哪些?

    我有幸接触了几款单片机,并用它们做了一些项目.现在想做个小总结,谈一下自己用各种单片机的感受.仅是个人意见,仁者见仁智者见智. 传统51,我想我就不多说了,适合菜鸟入门,容易上手,价格一般(从性价比方 ...

  10. JVM中java类的加载时机(转载:http://blog.csdn.net/chenleixing/article/details/47099725)

    Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的加载机制.类从被加载到虚拟机内存中开始,到卸载出内 ...

随机推荐

  1. Machine Learning Week_6 Adjust the Model.

    目录 0 Advice for Applying Machine Learning 1 Evaluating a Learning Algorithm 1.1 Deciding What to Try ...

  2. JS 转盘抽奖效果

    阅读原文,微信扫描二维码, 手机关注公共号酒酒酒酒,搜索 JS 转盘抽奖效果 效果图 前置条件: 开发环境:windows 开发框架:js 编辑器:HbuilderX 正文开始 <!DOCTYP ...

  3. Dbeaver24.2.2安装和使用教程(免费的数据库管理工具)

    前言 DBeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具. DBeaver 通过 JDBC 连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL.PostgreSQL. ...

  4. Classical wave-optics analogy of quantum-information processing

    量子信息处理的经典波-光模拟(Spreeuw 2002 PRA) <经典波光学.pdf> 核心: 1. 只有'局域纠缠' 有经典模拟! 基于经典波光学的模拟模型系统,应用于3个涉及到3qu ...

  5. 弱口令、子域名、md5、伪随机数、目录爆破与CTF实战

    web 21--弱口令爆破&custom iterator 进去要求输入账号密码,账号输入admin,一般来说管理员用户名都会是这个,密码随便输,然后burpsuite抓包 可以看到账号密码在 ...

  6. 6.Kubernetes集群管理工具kubectl

    Kubernetes集群管理工具kubectl 概述 kubectl是Kubernetes集群的命令行工具,通过kubectl能够对集群本身进行管理,并能够在集群上进行容器化应用的安装和部署 命令格式 ...

  7. 超实用的SpringAOP实战之日志记录

    本文主要以日志记录作为切入点,来讲解Spring AOP在实际项目开发中怎样更好的使项目业务代码更加简洁.开发更加高效. 日志处理只是AOP其中一种应用场景,当你掌握了这一种场景,对于其它应用场景也可 ...

  8. 网站免费https加密教程

    为网站实现HTTPS加密可以大大提高网站的安全性和用户信任度.以下是一个详细的免费HTTPS加密教程: 一.选择免费SSL证书提供商 JoySSL:这是目前国内为数不多的国产CA服务商打造的自主品牌S ...

  9. token、cookie、session的区别

    token是验证用户身份的令牌,通常是用于接口的身份验证,一般获取之后放在请求头中 cookie和session的区别: cookie是服务器发送到客户端然后存储在客户端的,可以用来保持用户的登录信息 ...

  10. 功能齐全的 WPF 自定义控件资源库(收藏版)

    前言 推荐一款界面美观.功能齐全的 WPF 自定义控件资源库.这款资源库通过封装一系列常用的控件,简化开发流程,加快项目交付速度. 控件介绍 资源库封装了一些常用的控件,将其整合到一个自定义的控件库中 ...