历史上的今天
返回首页

历史上的今天

今天是:2026年01月12日(星期一)

正在发生

2023年01月12日 | 51单片机中断基本概念

2023-01-12 来源:zhihu

问题引入

在了解基本概念之前,先看三个问题:

1.你想使用的中断是哪个?

2.你所希望的触发条件是什么?

3.你希望在中断之后做什么?

可以边看边思考,文章最后给出答案


中断概念

为什么引入中断?

中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。

中断系统特点:

①分时操作。CPU 可以分时为多个 I/O 设备服务,提高了计算机的利用率;

②实时响应。CPU 能够及时处理应用系统的随机事件,系统的实时性大大增强;

③可靠性高。CPU 具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性提高

中断过程

对于单片机来讲,中断是指CPU在处理某一时间A时,发生了另一事件B请求CPU立刻去处理(中断发生或中断请求);CPU暂时停止当前的工作(中断响应),转而去处理事件B(中断服务),待CPU处理事件B完成后,再回到原来事件A被中断的地方继续处理事件A(中断返回)。这一过程称为中断,注意是整个过程,而不是单一的停止一件事的意思。

举例:你打开火,烧上一壶水。然后去洗衣服,在洗衣服的过程中,突然听到水壶发出水开的报警声,这时,你停止洗衣服动作,立即去关掉火,然后将开水灌入暖水瓶中,灌完开水后,你又回去继续洗衣服。这个过程中实际上就发生了一次中断。

对照图:

程序流程图

单片机在执行程序时,中断也随时有可能发生,但无论何时发生,只要一旦发生,单片机将立即暂停当前程序,赶去处理中断程序,处理完中断程序后再返回刚才暂停处接着执行原来的程序。


中断系统:实现中断过程

中断源:请示CPU中断的请求源。微型机的中断系统一般允许多个中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在CPU 优先响应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规定每一个中断源有一个优先级别。CPU 总是先响应优先级别最高的中断请求。

中断嵌套:当单片机正在执行中断请求时,又出现了一个比正在执行的优先级更高的中断请求,则先停止正在执行的中断请求,执行优先级高的中断请求,等执行完后再执行原来优先级较低的中断请求。

拥有中断嵌套的中断系统称为多级中断系统,没有嵌套功能的为单级中断系统。

中断结构

大多数单片机共提供8个中断请求源,但是一定有最基本的5个中断。

中断:

外部中断0(INTO)、外部中断 1(INT1)、外部中断 2(INT2)、外部中断 3(INT3)、定时器 0中断、定时器 1 中断、定时器 2 中断、串口(UART)中断。

基本中断:

INT0、INT1、定时器 0,定时器1,串口中断。

中断请求标志位TCON


IT0(TCON.0),外部中断 0 触发方式控制位。

当 IT0=0 时,为电平触发方式。

当 IT0=1 时,为边沿触发方式(下降沿有效)。

IE0(TCON.1),外部中断 0 中断请求标志位。

IT1(TCON.2),外部中断 1 触发方式控制位。

IE1(TCON.3),外部中断 1 中断请求标志位。

TF0(TCON.5),定时/计数器 T0 溢出中断请求标志位。

TF1(TCON.7),定时/计数器 T1 溢出中断请求标志位。

注:外部中断0和1(IT0和IT1)为0或1时是两种触发方式,低电平触发和边沿触发,是控制位不是标志位。


中断允许控制

CPU 对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器IE 控制的。

各中断的中断允许位:

EX0(IE.0),外部中断 0 允许位;

ET0(IE.1),定时/计数器 T0 中断允许位;

EX1(IE.2),外部中断 1允许位;

ET1(IE.3),定时/计数器 T1 中断允许位;

ES(IE.4),串行口中断允许位;

EA (IE.7), CPU 中断允许(总允许)位。

注意:总中断允许位就是是总开关一样,只有总允许位有效的前提下,其它中断置允许位才能使中断有效。


中断优先级

同一优先级中的中断申请不止一个时,则有中断优先权排队问题。同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列如所示:

中断优先级三条原则:


首先响应高优先级的中断请求。

2.高优先级的中断请求可以打断低优先级的中断。

3.低优先级的中断请求不可以打断高优

先级及同优先级的中断。

中断号

中断号在编程时非常重要,当中断来临时,只有中断号正确才能进入中断。

中断响应条件

①中断源有中断请求;

②此中断源的中断允许位为 1;

③CPU 开中断(总允许位)(即 EA=1)。

以上三条同时满足时,CPU 才有可能响应中断

如图,为中断内部结构框图:

TCON为中断请求标志,其中外部中断0和外部中断1可选择控制方式低电平有效还是下降沿有效。

,IE为中断允许位,可以看到,只有EA等于1时,其他中断允许才可能有效。

从图中可以看出,一个中断过程:中断位(确定哪一个中断)->中断标志位->中断允许位->中断总允许位->中断执行功能。


问题引入及解答(中断应用举例)

回到上面的三个问题

1.你想使用的中断是哪个?

每一个中断都对应一个中断号,要想使用某一中断就选择对应的中断号。

2.你所希望的触发条件是什么?

外部中断的触发调件触发条件可分为低电平触发和下降沿触发,要明确触发条件。

3.你希望在中断之后做什么?

即中断服务函数,函数里要做什么,执行什么样的功能。

以外部中断0为例:

EA=1;//打开总中断开关

EX0=1;//开外部中断 0

IT0=0/1;//设置外部中断的触发方式


/*中断服务函数*/

void int0() interrupt 0 using 1//intterrupt表示中断,0表示中断号,using1可省略

{

//编写用户所需的功能代码

}


推荐阅读

史海拾趣

BH Electronics公司的发展小趣事

随着国内市场的饱和,BH Electronics开始寻求国际化发展的道路。公司高层经过深入调研和分析,决定进军欧洲市场。为了适应当地市场的需求和文化习惯,BH Electronics在欧洲设立了研发中心和营销团队,积极推广公司的产品和服务。通过不懈的努力,BH Electronics成功在欧洲市场打开了局面,实现了国际化发展的战略目标。

Filtran Ltd公司的发展小趣事

近年来,随着5G、物联网等技术的快速发展,电子行业面临着前所未有的挑战和机遇。Filtran Ltd深知唯有不断创新才能保持竞争力。公司加大了在研发方面的投入,建立了多个专项研究小组,专注于新技术、新材料和新工艺的探索。通过持续创新,Filtran Ltd成功推出了多款符合市场需求的新产品,进一步巩固了其在电子行业中的地位。同时,公司还积极拥抱数字化转型,利用大数据、人工智能等先进技术提升运营效率和服务水平。

倍思特(BEST)公司的发展小趣事

近年来,随着5G、物联网等技术的快速发展,电子行业面临着前所未有的挑战和机遇。Filtran Ltd深知唯有不断创新才能保持竞争力。公司加大了在研发方面的投入,建立了多个专项研究小组,专注于新技术、新材料和新工艺的探索。通过持续创新,Filtran Ltd成功推出了多款符合市场需求的新产品,进一步巩固了其在电子行业中的地位。同时,公司还积极拥抱数字化转型,利用大数据、人工智能等先进技术提升运营效率和服务水平。

Gould Fiber Optics公司的发展小趣事
可能是滤波电容老化、稳压电路故障或负载变化大。
FCI [First Components International]公司的发展小趣事
可能是滤波电容老化、稳压电路故障或负载变化大。
Frequency Management International公司的发展小趣事

作为一家有社会责任感的企业,FMI深知可持续发展和环保的重要性。公司积极响应国家环保政策,采用环保材料和生产工艺,减少对环境的影响。同时,FMI还致力于节能减排和资源循环利用等方面的研究和实践工作。这些努力不仅体现了FMI对环境保护的承诺和责任感,也为公司的长期发展奠定了坚实的基础。

综上所述,Frequency Management International公司凭借其创立与早期发展、技术创新与产品线拓展、市场拓展与国际化战略、质量管理与客户服务以及可持续发展与环保责任等方面的努力和发展历程,在电子行业中取得了显著的成就和地位。

问答坊 | AI 解惑

示波器探头原理

示波器探头原理---示波器探头工作原理   示波器探头不仅仅是把测试信号判定以示波器输入端的一段导线,而且是测量系统的重要组成部分。探头有很多种类型号各有其没的特性,以适应各种不同的专门工作的击破要,其中一类称为有源探头,探头内包含 ...…

查看全部问答>

基于MSP430 单片机高精度温度测量的补偿方法

用MSP430P315 单片机的A/D 转换器,实现阻性温度传感器的电阻检测;用查表和线性插值结合的方法,简化标度变换的算法结构。对电池电压的降低进行补偿的同时分析补偿电阻的精度对温度检测的影响。 …

查看全部问答>

CBitmapButton bug 问题!

我在使用CBitmapButton 时候出了一点问题,请给分析一下。 CBitmapButton m_BTN_F1; m_BTN_F1.AutoLoad(IDC_BTN_F1,this); m_BTN_F1.LoadBitmaps(IDB_SDCZ_F1UP, IDB_SDCZ_F1DOWN, IDB_SDCZ_F1UP,IDB_SDCZ_F1DOWN); m_BTN_F1.SizeToContent ...…

查看全部问答>

uboot怎样向kenerl传递一个物理地址

现在uboot中有个物理需要传到kernel中! 我该在uboot怎样做?请各位大虾指点下!!谢谢…

查看全部问答>

CE下的CETK测试要怎么设置才可以啊?我参考了网上的一些配置,可以连上但为什么老是报错呢?

简单的通过USB同步能不能做CETK测试吗?必须要网卡,要通过网络连接吗?我简单通过USB同步,PC上的CETEST。EXE可以连到下面的CE设备,但执行测试操作,老是报“windows CE Test Kit遇到问题需要关闭,我们对此引起的不便表示抱歉”。这是为什么?进 ...…

查看全部问答>

一份很好的资料--电机控制

今天在网上搜到一份资料,是关于如何控制电动机的。具体实施是用c8051f单片机实现的,简单看了一下,觉得很好。遂于坛友们共享。希望大家喜欢。…

查看全部问答>

基于LabVIEW的MSP430图形化开发手段

      MSP430 MCU作为TI的低功耗16位MCU大家都很熟悉了,不过一般都是在CCS下使用C语言编程开发。这里要给大家介绍一种全新的基于LabVIEW的图形化MSP430系统开发手段。我们需要在计算机上安装LabVIEW、LabVIEW C Generato ...…

查看全部问答>

MSP430的用户手册是否有必要翻译一个中文的?

版上我经常看到有坛友询问入门MSP430需要什么样的教材,大家一致推荐的是使用用户手册(USER GUIDE)。咱们版块开设的一个目的就是让更多的人能接触并且熟悉MSP430,在新手入门的很多时候对英文版的用户手册是很抵触的,虽然用户手册上的英文都比较 ...…

查看全部问答>

pt100测温方案

大家有没有比较简单实用的PT100测温方案?给小弟学学,不胜感激…

查看全部问答>