单片机的主程序为什么是死循环?
单片机的主程序为什么是死循环?
-----
网友解答:
-----
任何计算机系统的顶层主程序都是一个无限循环,退出这个循环就需要关机了。
应用程序退出主循环就回到上一层系统程序,继续运行其他程序或等待操作者命令。
Windows的主程序也是无限循环,退出这个循环就是关机,休眠和待机并不退出主循环,只是停止在循环中的一个点,唤醒后可以从这个点继续运行。
-----
网友解答:
-----
单片机程序是从上到下执行的,到底了需要从头开始
单片机集成了CPU、RAM、ROM、GPIO、定时器、中断等等,是一个“微型的小电脑”。我们编写的程序经过编译后,需要下载到单片机的ROM。上电后,单片机就可以读取并执行ROM中的程序了。我们编写的程序经过编译后,其实就是一些单片机可以识别和执行的指令,单片机的CPU只有一个线程,一次只能执行一条指令,指令从上到下执行,到了最后需要跳回最前面才可以生新执行,所以单片机的主程序是一个死揗环。
单片机程序是怎么样的?
单片机上电后,需要进行初始化,初始化只需要执行一次就可以了,所以初始化程序一般不会放入主程序的死循环中。主程序需要不断的连续执行的,所以会放入到一个死循环中去。
由此可见,单片机的程序是从上到下顺序执行的,需要一个一个任务排队运行。单片机还有一个中断系统,如果发生需要即时响应的事件,可以把主程序暂停打断,先把中断事件处理完,再返回主程序继续执行。就像你正在开会的时候,突然老板来电话了,您就需要把会议暂停,先接完老板电话,然后继续会议。当然中断事件也是可以屏蔽的,就像开会的时候来了一个骚扰电话,您可以不理它,或者挂断它。
欢迎关注@电子产品设计方案,一起享受分享与学习的乐趣!关注我,成为朋友,一起交流一起学习
记得点赞和评论哦!非常感谢!-----
网友解答:
-----
任何一个可用程序都必然是死循环程序,这不仅仅是指单片机程序。因为任何微处理器系统一旦开机,系统都在处理内部事件和外设响应,这个过程是一个循环过程,除非关机才能结束这个死循环程序。因此,对于单片机编程必须注意以下几点:
一、主函数main必须是一个死循环程序。例如,一个恒温系统,其主程序必须判断当前温度是否在设定温度上,如果不在设定温度,就必须调整,调整完了再判断。一直进行这个循环以便使温度达到设定范围之内。
二、主程序必须反映系统的主要执行过程, 从主程序的流程图上要很容易理解系统是如何运行的。把一些具体的事务交给子程序和中断去完成。
三、可通过主程序流程图和中断流程图反映一个系统的运行过程。不能把主程序流程图和中断流程图混为一谈。这是许多初学者、本科生、甚至研究生最容易出错的地方。
四、主程序是一个死循环程序,但不能简单到就是一句while(1); 而把所有的事情都塞进中断里面去做。因此单片机程序一定要做好规划,中断程序越简单越好,主程序要反映主思路、主流程。
-----
网友解答:
-----
朋友们好,我是电子及工控技术,我来回答这个问题。我们从单片机的工作原理可以看出单片机是执行程序来完成我们所要求的任务的,在单片机中有很多子程序,单片机根据外部的不同执行条件去调用不同的子程序,因而就完成了不同的任务了。下面我通过具体的实例来说明单片机的主程序是如何执行的。
单片机的工作过程
由于单片机的工作过程是比较复杂的,为了说明问题,下面我们先来简单了解一下单片机的工作过程,单片机在执行我们给它的命令时是按照三步走的方法去执行的,它先是从它的记忆存储“容器”ROM中取出要执行的一条命令,接收到命令后就要分析这条命令的具体内容,然后按照命令的具体内容去完成相应的任务。这有点和我们人类接收任务是一样的。
单片机主程序的执行过程
下面我们举出一个大家非常熟悉而又简单的交通灯的程序,来说明主程序是如何执行的。我们知道交通灯有红绿黄灯的交替转换,还有数显的倒计时。那么主程序的主要任务是根据条件是不是满足来调用各个子程序进行工作,主程序有点像乐队的指挥,当需要哪种乐器发出声音,指挥就去引导乐手去执行演奏,指挥可以一遍又一遍地不停重复地执行下去。那么单片机的主程序也这种情况差不多,当电源一但开启其,单片机复位完毕后就先执行主程序,当条件满足后就不停地调用各个子程序。在交通灯程序中,主程序要不停地调用亮灯子程序和数码管倒计时子程序。只有这样交通灯才能周而复始地不断重复循环运行着,这就是主程序的功能。如果在主程序没有死循环的话,交通灯只会运转一遍亮灯闪烁和倒计时,一但执行完一遍后就不会有下文了。所以我们要把这些子程序放在主程序的死循环语句里,使整个程序周而复始地运行着。
不但交通灯程序是这样工作的,其它程序也是如此,不管是分支结构还是顺序结构的程序,都要把这些子程序放在主程序的死循环当中,然后根据所执行的条件去调用执行子程序。
单片机子程序与主程序的关系
在主程序中是可以调用子程序的,子程序之间也是可以相互调用的。但是在子程序中有一种程序我们不用主程序调用,它就是中断程序或者中断定时程序。这个中断子程序一般是主程序执行的条件,一但触发中断了,主程序就会立马去执行这个中断子程,当中断程序完成后,主程序必须还要回到刚才所执行的程序当中。所以子程序是在主程序中的,它要由主程序不断地调用去执行。
以上就是我对这个问题的看法。欢迎朋友们参与讨论,敬请关注电子及工控技术,感谢点赞。
-----
网友解答:
-----
单片机是可编程器件,在使用时需要编写满足需求的程序。其C语言程序在各个端口、配置初始化完成后,会进入一个死循环,一般用while(1){;}的形式。初始化完成后,单片机就在死循环内一遍又一遍的执行程序逻辑。复位后,就从头开始,初始化完成后,再次进入死循环。
单片机在执行程序是从上到下一条一条语句执行的,对于定时器的配置、端口的初始化等内容,只需要执行一次就可以,所以初始化内容放在while(1)循环之外,而对于任务之类需要实时检测的逻辑就需要放在死循环内,让单片机不停的去执行。
单片机的程序分为查询式和中断式。所谓查询,就是需要不停的去扫描,比较耗费资源;而中断具有中断标志位,只有中断标志位置位后才去处理中断内容,比较节省资源。所以,查询就是通过while(1)循环来保证的。
单片机在执行主程序时,如果发生了中断,则会优先处理中断内容,处理完成后再从刚才的断点处继续执行,如果发生了多个中断,则先执行中断优先级较高的中断。
以上就是这个问题的回答,如果您有其他的观点,可以在评论区留言讨论,如果您想获取更多的科技方面的前言技术,可以关注本头条号:玩转嵌入式。如果文章对您有所帮助,希望您点个赞转发一下。谢谢。
------------------
推荐阅读:
上一篇:如果项羽穿越到现在会怎么样?
下一篇: 巴基斯坦和伊朗,哪个国家更成功?