单片机:第七章 51单片机中断系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

此中断返回的地址也是随机的。为了保证返回到LOOP处,可以采用修改中断 返回点的方法,程序如下:
ORG 0000H
;主程序入口
LJMP MAIN
ORG 0003H
;INT0入口
LJMP INT0_R
ORG 0030H
MAIN: MOV A,#01H
;初始状态
SETB EA
;开全局中断
SETB EX0
;开INT0中断
SETB IT0
;设下降沿触发
LOOP: MOV P1,A
;输出
HERE; SJMP LOOP
,内部由指令产生。
2)中断判优:如果有两个或两个以上中断源同时发出中断请 求,要根据中断优先权,找出最高级别的中断源,首先响 应其中断请求,处理完后再响应较低一级的中断源。
3)中断响应:CPU接到中断请求信号后,在满足条件的情况下 ,CPU进入中断响应周期,自动完成: a)断点保护。把断点地址自动压入堆栈。 b)形成中断入口地址。CPU响应中断后,根据判优逻辑提 供的中断源标识,获得中断服务程序的入口地址,转向 对应的中断服务程序。
32H

31H

30H …………
SP
………… 中断返回时的堆栈
7.3 51的中断处理过程
(4)中断标志的清除
1)定时器溢出中断源的中断请求标志是自动撤除的 ,用户不用编写程序清除它们。
2)串口中断请求的撤除: 用户应在中断服务程序的适当位置处通过如下指令将 中断标志撤除。 CLR TI ;撤除发送中断 CLR RI ;撤除接收中断 若采用字节型指令,则也可采用如下指令: ANL SCON,#0FCH;撤除发送和接收中断
7.1 中断的基本概念
4)中断处理:中断处理也叫中断服务,是由中断服务程序完 成的。中断服务程序是用户编写的,一般应由以下几部分 按顺序组成:
a)保护现场:对于主程序中需要保护的一些寄存器和变 量,但在CPU进入中断服务程序时硬件无法自动保护, 需要用户编程用入栈指令把这些内容压入堆栈,以便返 回后CPU能正确运行原程序。值得注意的是,断点地址 是由硬件自动保护的,不用在用户在中断服务程序中编 程进行保护。
0003H
(3)中断响应是 否被延迟?
(4)保护断点
第j+1条指令 …………
(5)PC=0003H 进入中断服
务程序
中断返回指令
(6)清除IE中0=断0 标 志位
(7)执行中断服 务程序
(8)PC=1000H 中断返回
32H 10H
SP+2
31H 00H
SP+1
30H …………
SP
………… 进入中断时的堆栈
主程序 第1条指令 第2条指令 第3条指令 ………… 1000H 第i条指令 第i+1条指令 …………
INT0引脚 中断请求
进入INT0中断 SP=32H
PC=0003H
回到主程序 SP=30H PC=1000H
(1)中I断E0请=1求
INT0中断 服务程序
(2)满足中断响 应条件?
第1条指令 ………… 第j条指令
7.1 中断的基本概念
• (8)中断处理示意图
主程序 第1条指令 第2条指令 第3条指令 ………… 第n条指令 第n+1条指令 …………
进入中断 中断返回
中断服务程序 第k条指令 第k+1条指令 …………
中断返回指令
7.1 中断的基本概念
• (9)中断优先级和中断嵌套
通常,CPU可以接收若干个中断源发出的中断请求。但 在同一时刻,CPU只能响应这些中断请求中的其中一个。 为了避免CPU同时响应多个中断请求带来的混乱,每一个 中断源赋予一个特定的中断优先级。一旦有多个中断请求 信号,CPU先响应中断优先级高的中断请求,然后再逐次 响应优先级次一级的中断。中断优先级也反映了各个中断 源的重要程度,同时也是分析中断嵌套的基础。使用优先 级的情况是:
ORG 0000H
;主程序入口地址
LJMP MAIN
ORG 0003H
;中断程序入口地址
LJMP INT0_R
ORG 0030H
MAIN:……
;主程序
(3)编程举例
【例7-2】 如图所示,在INT0引脚(P3.2)上接 一个按键开关,要求每按一次,P1口连接的8个发 光二极管点亮位置下移一位,初态P1.0亮。
1)CPU正在处理同级的或高一级的中断; 2)现行的机器周期不是当前所执行指令的最后一个机器周 期;(不能让当前指令执行到一半) 3)当前正在执行的指令是返回(RETI)指令或是对IE或IP寄 存器进行读/写的指令。(正在操作堆栈)
7.3 51的中断处理过程
(3)中断的响应和处理过程:
初始化时SP=30H,CPU即将执行主程序1000H处的指令 ,这时在单片机的/INT0引脚上出现一个中断请求,则CPU 响应和处理该中断过程如下:
7.1 中断的基本概念
• (10)中断嵌套示意图
主程序 第1条指令
IR2请求
第2条指令 第3条指令
进入IR2中断
………… 第i条指令
IR2中断返回
第i+1条指令
…………
IR2中断服务 程序
IR1请求
第1条指令 ………… 第j条指令
进入IR1中断
IR1中断服务 程序
第1条指令
第j+1条指令
…………
…………
3)定时器/计数器T0溢出中断:中断请求标志为TF0 。
4)定时器/计数器T1溢出中断请求:中断请求标志为 TF1。
5)串行口中断:片内串行口完成一帧发送或接收产 生的中断,中断请求标志为TI或RI。
7.2 51单片机的中断系统
• (2)与中断相关的寄存器:
7.2 51单片机的中断系统
• (3)51的中断结构:
7.3 51的中断处理过程
(1)得到中断响应的条件:
1)IE寄存器中的中断总允许位EA=1。(大门开) 2)该中断源发出中断请求,即该中断源对应的中断请求标 志为“1”。(有请求) 3)该中断源中断允许位=1,即该中断没有被屏蔽。(小门 开) 4)无同级或更高级中断正在被服务。
(2)在允许响应的情况下,下列情况可能被延迟 :
(2)中断系统是实现和处理中断功能的软、硬件的集合。 整个中断过程由计算机的中断系统配合用户设计的中断服 务程序来实现。所有计算机必须有中断系统。
(3)中断源是产生申请中断信号的单元和事件,也即导致 CPU产生中断的来源。
7.1 中断的基本概念
(4)可屏蔽中断和不可屏蔽中断: • 不可屏蔽中断,程序员不能控制它,一旦产生了不可屏蔽
7.4 中断程序设计
(1)中断初始化
中断系统初始化步骤如下: 1) 开相应中断源的中断; 2) 设定所用中断源的中断优先级; 3) 若为外部中断,则应规定低电平还是负边沿的中断触发
方式。
(2)主程序的安排
由于单片机复位后PC=0000H,而在0003H-
0023H为中断入口地址,为了避免单片机主程序覆 盖中断入口地址的程序,往往在0000H处放一条跳 转指令,跳转到真正存放主程序的地方:
• 外部中断----一个中断信号(通常是高/低电平或者电平跳 变的上升/下降沿)送到CPU的外部中断请求引脚。这些中 断源是通过CPU的引脚进行中断请求的,称为外部中断源。
7.1 中断的基本概念
(7)中断处理过程
• 中断处理过程,也叫中断过程,一般包含以下五个步骤: 1)中断请求:由中断源发出中断请求信号,外部由硬件产生
3)外部中断请求的撤除: 外部中断源的中断请求请求是自动撤除的,用户不用 编写程序清除它们。
7.3 51的中断处理过程
(5)外部中断引脚信号的清除
在下降沿触发方式下,外部中断标志IE0或IE1是
依靠CPU两次检测或引脚上触发电平状态而确定的,即如 果第一次检测到或引脚是高电平,第二次检测到或引脚是 低电平,CUP就将外部中断标志IE0或IE1置1。因此通常情 况下用户不用关心外部中断引脚,因为不会出现下降沿这 种干扰信号(出现下降沿是用户所需要的)。
第七章
51单片机中断系统
本章内容
• 7.1 中断的基本概念(重点) • 7.2 51单片机的中断系统 (重点) • 7.3 MCS-51中断处理过程 (重点) • 7.4 中断的程序设计 (重点)
7.1 中断的基本概念
(1)中断(Interrupt)是一个过程:当CPU内部或外部出现某 种事件(中断源)需要处理时,中止正在执行的程序(断 点),转去执行请求中断的那个事件的处理程序(中断服 务程序),执行完后,再返回被暂时中止执行的程序(中 断返回),从断点处继续执行。。
在低电平触发方式下,外部中断标志IE0或IE1是依
靠CPU检测或上低电平而置位的。尽管CPU响应中断时相应 中断标志IE0或IE1能自动复位成“0”状态,但若外部中 断源不能及时撤引脚上低电平(不是用户所需要的),就 会再次使已经变成“0”的中断标志IE0或IE1置1,这是绝 对不能允许的。因此,电平触发型外部请求的撤除必须使 或上低电平随着其中断被CPU响应而变成高电平。
按下键输入低电平,没按下为高电平。设置边沿触发,下降沿有效 。按键按下产生一个下降沿触发中断,在中断服务程序中对点亮位置
左移。初始状态时P1口高电平亮灯,设P1的初值为00000001B=01H。 程序如下:
ORG 0000H
;主程序入口
LJMP MAIN
ORG 0003H
;INT0入口
LJMP INT0_R
MAIN:
ORG MOV SETB SETB SETB
0030H A,#01H EX0 IT0
;初始状态 ;开全局中断 ;开INT0中断 ;设下降沿触发
LOOP: MOV P1,A HERE: SJMP LOOP
;输出
INT0_R: RL A RETI
;中断服务程序 ;中断返回
上面的程序,主程序将在LOOP和HERE两句循环执行,等待按键产生中断后 进入中断服务程序0003H处,然后跳转到INT0_R处执行真正的中断服务程序 。在产生中断的一瞬间,具体是在LOOP或者HERE处产生中断,是随机的,因
– 1)某一时刻同时有两(多)个中断源申请中断。在这种情况下, CPU首先响应中断优先级最高的那个中断,而将其它的中断挂起。 待优先级最高的中断服务程序执行完成返回后,再顺序响应优先 级较低的中断。
– 2)当MCU已经响应了某个中断正在执行为其服务的中断程序时, 此时又产生一个其它的中断申请,这种情况也称作中断嵌套。
IR1中断返回 第k条指令
中断返回指令
第k+1条指令 …………
中断返回指令
7.1 中断的基本概念
• (11)注意 一些CPU内部(如51系列CPU)集成了中断管
理系统。其硬件能够自动实现中断优先级判断以 及进行中断嵌套的处理,也即单片机芯片内部的 硬件电路能够识别中断的优先级,并根据优先级 的高低自动完成对高优先级中断的优先响应,从 而实现中断的嵌套处理。
然而,对8086而言,CUP内部没有中断优先级判 断电路和中断嵌套处理电路,因此必须外接中断 管理芯片才能完成中断的处理,如8259芯片等。
7.2 51单片机的中断系统
• (1)单片机的五个中断源是:
1)外部中断请求0,由引脚/INT0输入,中断请求标 志为IE0。
2)外部中断请求1,由引脚/INT1输入,中断请求标 志为IE1。
b)中断服务程序:执行输入/输出或事件处理程序,由用 户编写。
7.1 中断的基本概念
5)中断返回:程序自动返回到断点地址,继续执行 被中断的主程序。中断服务程序的最后必须是中 断返回指令RETI。 由CPU自动完成以下功能:
1)将相应的优先级触发器清0; 2)从堆栈中弹出断点地址给PC; 3)回到中断处继续执行。
• 内部中断-----是CPU内部集成的许多功能模块,如定时器 、串行通讯口、模/数转换器等,它们在正常工作时往往无 需CPU参与,而当他们处于某种状态或达到某个规定值需要 程序控制时,会通过发出中断请求信号通知CPU。典型例子 有定时器溢出中断,如8位的定时器在正常计数过程中无需 CPU的干预,一旦计数到达0xff产生溢出时便产生一个中断 申请信号,通知CPU进行必要的处理。内部中断源在中断条 件成立时,一般通过片内硬件会自动产生中断请求信号, 无须用户介入,使用方便。内部中断是CPU管理片内资源的 一种高效的途径。
中断,系统肯定会立即响应;而 • 对于可屏蔽中断,程序员可以通过指令来控制CPU对它们
的响应。
(5)硬件中断和软件中断: • 硬件中断的请求时间,程序员无法控制,它们基本上是随
机产生的; • 而对于软件中断,汇编语言程序员可通过指令来有目的安
排它们产生时间和位置。
7.1 中断的基本概念
(6)内部中断和外部中断:
相关文档
最新文档