产品概述

单片机的中断是什么 单片机的中断现象是什么?他又为什么会中断呢?怎样解决就是关键

小编 2024-11-24 产品概述 23 0

单片机的中断现象是什么?他又为什么会中断呢?怎样解决就是关键

先来卖个关子, 什么是中断呢

在我们的日常生活中,经常会遇到这样的情况:我们正在看书,突然客厅的电话响了,这时往往会停止看书,转而去接电话,接完电话后又接着看书。这种停止当前工作,转而去做其他工作,做完后又返回来做先前工作的现象称为中断。所以

单片机虽然是个机器,它也有类似的中断现象,当单片机正在执行某程序时,如果突然出现意外情况,它就需要停止当前正在执行的程序,转而去处理意外情况,处理完后又接着执行原来的程序。

我们先看看中断的有关概念

1.中断源

要让 CPU 中断当前的程序去做其他事情,需要向它发出请求信号,CPU 接收到中断请求信号后才能产生中断。让CPU产生中断的信号称为中断源(又称中断请求源)。

MCS-51系列单片机的中断源包括:两个外部中断源、两个定时器/计数器中断源和一个串行通信口中断源,如果它们向 CPU 发出中断请求信号,CPU 就会产生中断,停止执行当前的程序,转而去执行指定的程序(又称中断服务程序或中断子程序),执行完后又返回来执行原来的程序。

2.中断的优先级别

单片机内的CPU在工作时,如果一个中断源向它发出中断请求信号,它就会产生中断;如果同时有两个或两个以上的中断源发出中断请求信号,CPU会怎么办呢?CPU会先接受优先级别高的中断源请求,然后再接受优先级别低的中断源请求。

MCS-51系列单片机5个中断源的优先级别顺序见表

明天我们继续分享中断后怎样处理,有兴趣的朋友烦请点点关注,点点转发,点点赞!

干货|一文读懂单片机里面的“中断”优先级

中断优先级的内容,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,今天先简单介绍一下相关寄存器,不做例程说明。

中断的产生背景,实际生活当中还有更复杂的,比如我正在看电视,这个时候来电话了,我要进入接电话的“中断”程序当中去,就在接电话的同时,听到了水开的声音,水开的“中断”也发生了,我们就必须要放下手上的电话,先把煤气关掉,然后再回来听电话,最后听完了电话再看电视,这里就产生了一个优先级的问题。

还有一种情况,我们在看电视的时候,这个时候听到水开的声音,水开的“中断”发生了,我们要进入关煤气的“中断”程序当中,而在关煤气的同时,电话声音响了,而这个时候,我们的处理方式是先把煤气关闭,再去接听电话,最后再看电视。

从这两个过程中,我们可以得到一个结论,就是最最紧急的事情,一旦发生后,我们不管当时处在哪个“程序”当中,我们必须先去处理最最紧急的事情,处理完毕后再去解决其它事情。

在我们的单片机程序当中有时候也是这样的,有一般紧急的中断,有特别紧急的中断,这取决于具体的系统设计,这就涉及到中断优先级和中断嵌套的概念,今天先简单介绍一下相关寄存器,不做例程说明。

中断优先级有两种,一种是抢占优先级,一种是固有优先级,先介绍抢占优先级。来看表1和表2。

表1: IP——中断优先级寄存器的位分配(地址0xB8、可位寻址)

表2: IP——中断优先级寄存器的位描述

IP 这个寄存器的每一位,表示对应中断的抢占优先级,每一位的复位值都是 0,当我们把某一位设置为 1 的时候,这一位的优先级就比其它位的优先级高了。

比如我们设置了 PT0位为 1 后,当单片机在主循环或者任何其它中断程序中执行时,一旦定时器 T0 发生中断,作为更高的优先级,程序马上就会跑到 T0 的中断程序中来执行。

反过来,当单片机正在 T0中断程序中执行时,如果有其它中断发生了,还是会继续执行 T0 中断程序,直到把 T0 中的中断程序执行完毕以后,才会去执行其它中断程序。

当进入低优先级中断中执行时,如又发生了高优先级的中断,则立刻进入高优先级中断执行,处理完高优先级级中断后,再返回处理低优先级中断,这个过程就叫做中断嵌套,也称为抢占。

所以抢占优先级的概念就是,优先级高的中断可以打断优先级低的中断的执行,从而形成嵌套。当然反过来,优先级低的中断是不能打断优先级高的中断的。

表3: 中断查询序列

那么既然有抢占优先级,自然就也有非抢占优先级了,也称为固有优先级。在表3中的最后一列给出的就是固有优先级,请注意,在中断优先级的编号中,一般都是数字越小优先级越高。

从表3中可以看到一共有 1~6 共 6 级的优先级,这里的优先级与抢占优先级的一个不同点就是,它不具有抢占的特性,也就是说即使在低优先级中断执行过程中又发生了高优先级的中断,那么这个高优先级的中断也只能等到低优先级中断执行完后才能得到响应。既然不能抢占,那么这个优先级有什么用呢?

答案是多个中断同时存在时的仲裁。比如说有多个中断同时发生了,当然实际上发生这种情况的概率很低,但另外一种情况就常见的多了,那就是出于某种原因我们暂时关闭了总中断,即 EA=0,执行完一段代码后又重新使能了总中断,即 EA=1,那么在这段时间里就很可能有多个中断都发生了,但因为总中断是关闭的,所以它们当时都得不到响应,而当总中断再次使能后,它们就会在同时请求响应了,很明显,这时也必需有个先后顺序才行,这就是非抢占优先级的作用了——如表3中,谁优先级最高先响应谁,然后按编号排队,依次得到响应。

抢占优先级和非抢占优先级的协同,可以使单片机中断系统有条不紊的工作,既不会无休止的嵌套,又可以保证必要时紧急任务得到优先处理。在后续的学习过程中,中断系统会与我们如影随形,处处都有它的身影,随着学习的深入,相信你对它的理解也会更加的深入。

相关问答

单片机中断 和暂停的区别?

在于:中断是实时处理系统内部事件,比如外部设备信号、定时器溢出等。当这些事件发生时,单片机会停止当前的程序执行,保存现场,跳转到指定的中断服务程序(IS...

简述89c51 单片机中断 多概念?

51单片机有5个中断,分别是外部中断0、定时器中断0、外部中断1、定时器中断1、串口中断。51单片机有5个中断,分别是外部中断0、定时器中断0、外部中断1、定时...

8051 单片机 提供了几个中断源?它们的 中断 标志 是什么 ?又如何清除陈这些中断标志?各?

共有5个中断源:(发生中断后,进入中断服务函数,执行玩中断服务函数后又硬件自动清零标志位)外部中断0,interrupt0,中断标志位IE0;定时器0,interrupt1...

51系列 单片机 提供了哪几种 中断 源在 中断 管理上有什么特点?

51系列单片机提供了外部中断、定时器中断和串口中断三种中断源。其中,外部中断和定时器中断都是硬件中断,由硬件触发和处理,而串口中断则是软件中断,需要通过...

C51 单片机中断 系统的工作过程?

c51单片机中断系统包括请求、响应、执中断服务程序和退出4个工作过程。中断请求需要在程序中事先设置允许/禁止、优先级、请求模式等。响应中断时,单片机会在...

80C51 单片机的 五个 中断的中断 标志位分别 是什么 ?中断又是如何产生的?

MCU会在每个机器周期的S6查询每个中断请求的中断标志位,所以本质上是轮询。举个例子,51单片机有5个中断源,p3.2引脚触发INT0中断,中断请求标志位IE0=1,CPU...

中断 服务程序入口地址的形成?

要形成中断服务程序入口地址,您需要按照以下步骤操作:1.首先,确定您要中断的服务程序的入口点。这通常是一个函数或方法,用于启动服务程序并处理请求。2.在...

51系列 单片机中断 响应条件?

51系列单片机中断响应的条件是:无同级或高级中断正在服务。现行指令执行到最后1个机器周期且已结束。若现行指令为RETI或需访问特殊功能寄存器IE或IP的指令...

单片机中断 初始化程序?

voidINT_init()//初始化{IT0=0;//外部中断0低电平触发IT1=1;//外部中断1低电平触发PX0=1;//外部中断0分配高优先级PX1=0;IE=0x85;//使能全局中断,外部...

" 单片机 外部 中断 0由数据信号线的下降沿触发" 是什么 意思?

以单片机引脚输入中断为例:边沿触发,只会在电平变化时出现一次中断。电平触发,只要电平为触发电平,会一直触发中断,即使清零了,还会再次进入。以单片机引脚输...

猜你喜欢