0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单片机的主程序是如何执行的

h1654155282.3538 来源:电子及工控技术 作者:电子及工控技术 2020-10-30 17:28 次阅读

我们从单片机工作原理可以看出单片机是执行程序来完成我们所要求的任务的,在单片机中有很多子程序,单片机根据外部的不同执行条件去调用不同的子程序,因而就完成了不同的任务了。

单片机的工作过程

由于单片机的工作过程是比较复杂的,为了说明问题,下面我们先来简单了解一下单片机的工作过程,单片机在执行我们给它的命令时是按照三步走的方法去执行的,它先是从它的记忆存储“容器”ROM中取出要执行的一条命令,接收到命令后就要分析这条命令的具体内容,然后按照命令的具体内容去完成相应的任务。这有点和我们人类接收任务是一样的。

单片机主程序的执行过程

下面我们举出一个大家非常熟悉而又简单的交通灯的程序,来说明主程序是如何执行的。我们知道交通灯有红绿黄灯的交替转换,还有数显的倒计时。那么主程序的主要任务是根据条件是不是满足来调用各个子程序进行工作,主程序有点像乐队的指挥,当需要哪种乐器发出声音,指挥就去引导乐手去执行演奏,指挥可以一遍又一遍地不停重复地执行下去。那么单片机的主程序也这种情况差不多,当电源一但开启其,单片机复位完毕后就先执行主程序,当条件满足后就不停地调用各个子程序。在交通灯程序中,主程序要不停地调用亮灯子程序和数码管倒计时子程序。只有这样交通灯才能周而复始地不断重复循环运行着,这就是主程序的功能。如果在主程序没有死循环的话,交通灯只会运转一遍亮灯闪烁和倒计时,一但执行完一遍后就不会有下文了。所以我们要把这些子程序放在主程序的死循环语句里,使整个程序周而复始地运行着。

不但交通灯程序是这样工作的,其它程序也是如此,不管是分支结构还是顺序结构的程序,都要把这些子程序放在主程序的死循环当中,然后根据所执行的条件去调用执行子程序。

单片机子程序与主程序的关系

在主程序中是可以调用子程序的,子程序之间也是可以相互调用的。但是在子程序中有一种程序我们不用主程序调用,它就是中断程序或者中断定时程序。这个中断子程序一般是主程序执行的条件,一但触发中断了,主程序就会立马去执行这个中断子程,当中断程序完成后,主程序必须还要回到刚才所执行的程序当中。所以子程序是在主程序中的,它要由主程序不断地调用去执行。


责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43973

    浏览量

    620821
  • 程序
    +关注

    关注

    114

    文章

    3631

    浏览量

    79540
收藏 人收藏

    评论

    相关推荐

    51单片机打开串口通信是否会主程序运行速度?

    51单片机打开串口通信是否会主程序运行速度?我发现打开,主程序的的死循环运行超慢,是串口的问题吗?
    发表于 06-21 13:28

    关于单片机C语言编程中,中断函数对主程序的影响

    具体问题的描述:倘若我使用ADC0809作为模数转换的芯片,我们知道这种AD芯片是要提供时钟信号的,倘若我通过单片机计时中断的方式提供时钟,那么在主程序执行的时候或者AD芯片转换的时候,这个提供时钟信号的中断对正在运行的
    发表于 10-13 09:28

    关于单片机C语言编程中,中断函数对主程序的影响(重新发)

    具体问题的描述:倘若我使用ADC0809作为模数转换的芯片,我们知道这种AD芯片是要提供时钟信号的,倘若我通过单片机计时中断的方式提供时钟,那么在主程序执行的时候或者AD芯片转换的时候,这个提供时钟
    发表于 10-13 09:33

    单片机 定时器 中断

    在51单片机中,使用定时器。定时时间到后,执行主程序。在执行主程序的过程中,定时器是不是又开始计时,还是停止计时,等待
    发表于 08-10 22:42

    一款新型单片机介绍,多核单片机

    用处?首先,LS53C可以同时运行多道主程序,每道主程序之间均以单片机的最高速率运行,程序之间互不干扰。主程序之间可以交换数据,启动或结束对
    发表于 12-08 22:18

    单片机C语言的主程序为什么要加一个while(1)语句

    单片机C语言的主程序,通常要用一个while(1)语句来让程序进入一个无限循环,目的是为了让程序一直保持在我们需要运行的情况下。  虽然这种做法毋庸置疑,在网上还是有不少朋友有疑问,如
    发表于 07-15 09:40

    单片机C语言的主程序如果不加while(1)会出现什么情况

    单片机C语言的主程序,通常要用一个while(1)语句来让程序进入一个无限循环,目的是为了让程序一直保持在我们需要运行的情况下。  虽然这种做法毋庸置疑,在网上还是有不少朋友有疑问,如
    发表于 07-15 10:16

    51单片机矩阵键盘C程序主程序

    51单片机矩阵键盘C程序主程序1:void main(){uchar i,j,ki=0;j=0;while(1){i=key();//键盘循环扫描,其值赋给变量数组tableif(i!=0)//键盘子
    发表于 07-20 06:01

    STM32单片机DEBUG进入不了主程序的原因

    STM32单片机DEBUG进入不了主程序1.上电不运行,DEBUG还进入不了主程序2.总结2.1 STM32单片机Flash分类2.2 关于boot脚的设置3.其他DEBUG模式不能进
    发表于 11-29 06:52

    如何使得单片机的LED灯闪烁又不影响主程序运行?

    51单片机问题,紧急求助! 怎样使得单片机的LED灯闪烁又不影响主程序运行??? 我想通过单片机接收串口命令让一个LED灯闪烁,但同时又不影响其他
    发表于 11-06 07:18

    单片机的中断程序如何运行

    单片机的中断就是类似的一个过程,发生中断时,就会打断正在执行主程序,先处理完中断任务,返回主程序继续运行,当然在执行中断函数之前,
    的头像 发表于 01-27 17:11 1w次阅读
    <b class='flag-5'>单片机</b>的中断<b class='flag-5'>程序</b>如何运行

    单片机主程序和中断程序是怎么样运行的

    的一个过程,发生中断时,就会打断正在执行主程序,先处理完中断任务,返回主程序继续运行,当然在执行中断函数之前,单片机需要把关键的数据保存下
    的头像 发表于 01-04 10:11 1.3w次阅读
    <b class='flag-5'>单片机</b>的<b class='flag-5'>主程序</b>和中断<b class='flag-5'>程序</b>是怎么样运行的

    【51单片机】有关单片机执行中断无法恢复主程序探讨

    Author: Manba Cople专业:IOT说明:记录和输出学习内容文章目录问题思考修改进阶声明问题  最近在给小伙伴培训单片机中断时,小伙伴写了一段中断的代码(代码如下),出现每次执行完中断
    发表于 11-22 12:06 12次下载
    【51<b class='flag-5'>单片机</b>】有关<b class='flag-5'>单片机</b><b class='flag-5'>执行</b>中断无法恢复<b class='flag-5'>主程序</b>探讨

    单片机程序是如何执行的?指令数据写哪了?

    单片机的运行需要执行程序,同时硬件也是必不可少的,二者缺一不可。大家都知道单片机的运行需要执行写好的程序,但是
    发表于 11-23 17:51 9次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>程序</b>是如何<b class='flag-5'>执行</b>的?指令数据写哪了?

    单片机程序是如何执行的:指令数据写哪了

    单片机的运行需要执行程序,同时硬件也是必不可少的,二者缺一不可。大家都知道单片机的运行需要执行写好的程序,但是
    发表于 12-01 16:06 7次下载
    <b class='flag-5'>单片机</b><b class='flag-5'>程序</b>是如何<b class='flag-5'>执行</b>的:指令数据写哪了