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

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

3天内不再提示

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    关注

    6034

    文章

    44547

    浏览量

    634369
  • 中断
    +关注

    关注

    5

    文章

    898

    浏览量

    41462
  • 函数
    +关注

    关注

    3

    文章

    4325

    浏览量

    62552
收藏 人收藏

    评论

    相关推荐

    单片机外部中断程序下载

    单片机外部中断程序和电路图,通过按键控制计数和清零操作
    发表于 05-21 10:57 0次下载
    <b class='flag-5'>单片机</b>外部<b class='flag-5'>中断</b><b class='flag-5'>程序</b>下载

    51单片机中断程序资料免费下载

    本文档的主要内容详细介绍的是51单片机中断程序资料免费下载。
    发表于 04-08 08:00 22次下载
    51<b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b><b class='flag-5'>程序</b>资料免费下载

    51单片机中断程序免费下载

    本文档的主要内容详细介绍的是51单片机中断程序免费下载。
    发表于 08-26 17:30 8次下载
    51<b class='flag-5'>单片机</b>的<b class='flag-5'>中断</b><b class='flag-5'>程序</b>免费下载

    Arduino中的中断函数详细说明

    单片机中断可概述为:由于某一随机事件的发生,单片机暂停原程序运行,转去执行另一程序(随机事件
    发表于 08-20 17:31 1次下载
    Arduino中的<b class='flag-5'>中断</b>函数详细说明

    单片机中断程序如何运行

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

    为什么单片机主程序是死循环

    任何一个可用程序都必然是死循环程序,这不仅仅是指单片机程序。因为任何微处理器系统一旦开机,系统都在处理内部事件和外设响应,这个过程是一个循环过程,除非关机才能结束这个死循环
    发表于 07-15 17:38 5341次阅读

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

    我们从单片机的工作原理可以看出单片机是执行程序来完成我们所要求的任务的,在单片机中有很多子程序单片机
    的头像 发表于 10-30 17:28 1w次阅读
    <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>探讨

    MCS-51单片机中断系统

    ,CPU暂时中断当前程序而转去执行相应的处理程序,待处理程序执行完毕后,CPU再继续执行原来被中断程序
    发表于 11-23 16:20 7次下载
    MCS-51<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 4429次阅读
    <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 2716次阅读
    基于<b class='flag-5'>单片机</b>的外部<b class='flag-5'>中断</b>实验 <b class='flag-5'>中断</b>系统知识介绍

    单片机中断机制

    单片机中断机制是一种重要的处理方式,它允许单片机在执行主程序的过程中,能够暂停当前任务,转而处理外部或内部紧急事件。这种机制极大地提高了系统的响应速度和处理能力,使得
    的头像 发表于 10-17 18:03 583次阅读