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

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

3天内不再提示

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

Wildesbeast 来源:今日头条 作者:电子产品设计方案 2020-01-04 10:11 次阅读

中断用于执行优先级更高的任务

中断顾名思义是“中途打断”的意思。举一个简单的例子:您正在和部门的同事在开会,突然老板进来找你,你就得暂停会议,离开会议室,跟老板谈完重要的事情,再重新回来会议室继续会议。单片机的中断就是类似的一个过程,发生中断时,就会打断正在执行的主程序,先处理完中断任务,返回主程序继续运行,当然在执行中断函数之前,单片机需要把关键的数据保存下来,中断函数执行完成后才可以正确的恢复主函数运行。

单片机的主程序是怎么运行的?

其实单片机的主程序其实是一个主函数,我们一般命名为Main,主函数会从上住下运行的,执行到最后又返回上面继续运行。我们用C语言编写Main主函数时,会用到while(1)让主程序不断的循环。

由此可见,主程序里的各种功能是按着顺序来执行的,谁也不能插队。那怎么样来实现中途打断插队呢?这就需要用到中断了。

单片机的中断程序是怎么执行的?

单片机有着各种和样的中断功能,比如定时器中断、外部中断、串口中断等等。比如我们要实时检测一个按键的按下事件,如果在主程序中进行扫描,就会有一定的延时,需要等主程序运行到按键扫描的程序时才可以检测到按键的状态。

中断是单片机一个重要的功能,单片机会给所有中断功能分配一个中断向量(有些中断功能会共用一个中断向量)。当开启了相应的中断功能并且发生中断时,就会自动跳转到对应的中断向量运行。在中断向量处,我们就可以调用我们编写好的中断函数,处理相关的事件就可以了。如果开启了中断嵌套,在中断函数执行过程发生优先级更高的中断,还可以暂停正在运行的中断函数,去执行更高级别的中断程序。

中断函数为什么不在主函数中运行?

主函数是一个函数,中断函数也是一个函数,它们是独立的函数,所以是分开的。上面已经说得很清楚了,中断是打断正在运行的函数去执行优先级更高的函数,所以中断就是打断主函数去执行更高优先级别的中断函数的一个过程。

在发生中断时,单片机会自动跳转到对应的中断向量,在中断向量处,我们需要调用中断函数来处理中断事件,如果中断事件的处理程序放在主函数中,那么这些处理中断事件的程序就不是一个独立的函数了,就没法调用了。

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

    关注

    5992

    文章

    43910

    浏览量

    619656
  • 中断
    +关注

    关注

    5

    文章

    884

    浏览量

    40992
  • 函数
    +关注

    关注

    3

    文章

    3846

    浏览量

    61228
收藏 人收藏

    评论

    相关推荐

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

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

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

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

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

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

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

    STM32单片机DEBUG进入不了主程序1.上电不运行,DEBUG还进入不了主程序2.总结2.1 STM32单片机Flash分类2.2 关于
    发表于 11-29 06:52

    proteus单片机中断程序

    proteus单片机中断程序利用单片机的P0口做输出接8只发光二极管,P3.2引脚接独立按键产生外部中断信号。编写
    发表于 02-28 07:45

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

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

    单片机中断程序如何运行

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

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

    我们从单片机的工作原理可以看出单片机是执行程序来完成我们所要求的任务的,在单片机中有很多子程序单片机
    的头像 发表于 10-30 17:28 9577次阅读
    <b class='flag-5'>单片机</b>的<b class='flag-5'>主程序</b>是如何执行的

    三菱PLC中断程序如何触发

    一套程序可以分为主程序区,还有子程序区,中断程序区等等,主程序区的
    的头像 发表于 11-20 18:01 7038次阅读

    【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>探讨

    单片机课设-中断程序

    proteus单片机中断程序利用单片机的P0口做输出接8只发光二极管,P3.2引脚接独立按键产生外部中断信号。编写
    发表于 01-13 15:02 2次下载
    <b class='flag-5'>单片机</b>课设-<b class='flag-5'>中断</b><b class='flag-5'>程序</b>

    谨慎处理单片机中断中断等价于比主程序优先级更高的线程

     有些小伙伴喜欢在单片机中断里做任务,殊不知可能会因此遇到棘手的bug,然后查半天查不出个所以然。本文为了纠正这个不良习惯,对单片机中断进行阐述。 无
    发表于 01-14 14:54 2次下载
    谨慎处理<b class='flag-5'>单片机</b><b class='flag-5'>中断</b>,<b class='flag-5'>中断</b>等价于比<b class='flag-5'>主程序</b>优先级更高的线程

    单片机里的程序是如何运行

    我们想要理解单片机是如何运行程序的,我们首先需要了解单片机的组成,我们这里以80C51单片机为例来理解程序
    的头像 发表于 02-17 10:47 2964次阅读
    <b class='flag-5'>单片机</b>里的<b class='flag-5'>程序</b>是如何<b class='flag-5'>运行</b>?

    51单片机中断程序示例

    51单片机中断程序示例
    发表于 05-17 18:03 0次下载

    基于单片机的外部中断实验 中断系统知识介绍

    单片机中有两个重要的概念分别叫做中断中断系统,那么他们分别又代表什么意义呢?当单片机CPU正在运行
    的头像 发表于 07-26 17:23 1670次阅读
    基于<b class='flag-5'>单片机</b>的外部<b class='flag-5'>中断</b>实验 <b class='flag-5'>中断</b>系统知识介绍