Download presentation
Presentation is loading. Please wait.
1
5.1 中断的概述 5.2 MCS - 51中断系统 5.3 中断系统的应用
5.1 中断的概述 5.2 MCS - 51中断系统 5.3 中断系统的应用
2
4.1 中 断 的 概 述 1. 中断 中断是指计算机在执行某一程序的过程中, 由于计算机系统内、 外的某种原因, 而必须中止原程序的执行, 转去执行相应的处理程序, 待处理结束之后, 再回来继续执行被中止的原程序的过程。
3
采用了中断技术后的计算机, 可以解决CPU与外 设之间速度匹配的问题, 使计算机可以及时处理 系统中许多随机的参数和信息, 同时, 它也提高 了计算机处理故障与应变的能力。
“中断”与“查询”相比: 执行效率↑ 实时性 ↑
4
中断源是指在计算机系统中可以向CPU发出中断请求的来源。 通常有I/O设备、实时控制系统中的随机参数和信息故障源等。
2. 中断源 中断源是指在计算机系统中可以向CPU发出中断请求的来源。 通常有I/O设备、实时控制系统中的随机参数和信息故障源等。
5
3. 中断优先级 中断优先级越高, 则响应优先权就越高。当CPU正在执行中断服务程序时, 又有中断优先级更高的中断申请产生, 这时CPU就会暂停当前的中断服务转而处理高级中断申请, 待高级中断处理程序完毕再返回原中断程序断点处继续执行, 这一过程称为“中断嵌套”。
6
4. 中断响应的一般过程 (1) 在每条指令结束后, 系统都自动检测中断请求信号, 如果有中断请求,且CPU处于开中断状态下, 则响应中断。 (2) 保护现场, 在保护现场前, 一般要关中断, 以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。
7
(3) 中断服务, 即为相应的中断源服务。 (4) 恢复现场, 用堆栈指令将保护在堆栈中的数据弹出来, 在恢复现场前要关中断, 以防止现场被破坏。在恢复现场后应及时开中断。 (5) 返回, 此时 CPU将推入到堆栈的断点地址弹回到程序计数器, 从而使CPU继续执行刚才被中断的程序。
8
4.2 MCS - 51中断系统 图5.1 MCS - 51中断系统结构框图
9
4.2.1 中断源 表 中 断 源
10
中断标志(Flag) IE0:外部中断0中断标志 TF0:定时器/计数器0中断标志 IE1:外部中断1中断标志
TI:串行口发送中断标志 RI:串行口接收中断标志
11
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 1. 定时器控制寄存器TCON的格式(88H )
(LSB) (MSB) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IT0:外部中断0触发方式选择位 0:低电平触发 : 负跳变触发 IE0:外部中断0中断请求标志 IT1、IE1 类似 IT0、IE0 TR0:定时/计数器0运行控制位 0:停止 1:运行 TF1:定时/计数器0中断请求标志位 TR1、TF1 类似 TR0、TF0
12
SM0 SM1 SM2 REN TB0 RB0 TI RI SM0和SM1:串行口工作方式选择位 SM2:多机通信使能位
2. 特殊功能寄存器SCON的格式(98H) MSB LSB SM0 SM1 SM2 REN TB0 RB0 TI RI SM0和SM1:串行口工作方式选择位 SM2:多机通信使能位 REN: 接收允许位 TB8:发送数据位8 RB8:接收数据位8 TI: 串行口发送中断请求标志 RI: 串行口接收中断请求标志
13
4.2.2 中断控制 1. 中断允许控制 MCS - 51单片机有 5个(8052有 6个)中断源, 为了使每个中断源都能独立地被允许或禁止, 以便用户能灵活使用, CPU内部在每个中断信号的通道中设置了一个中断允许触发器, 它控制CPU能否响应中断。只有对应的中断允许触发器被使能(置“1”),相应的中断才能得到相应。
14
中断允许控制寄存器IE (0A8H) EA - ES ET1 EX1 ET0 EX0 EX0:外部中断0允许位
(MSB) (LSB) EA - ES ET1 EX1 ET0 EX0 EX0:外部中断0允许位 ET0:定时器/计数器0中断允许位 EX1:外部中断1允许位 ET1:定时器/计数器1中断允许位 ES : 串行口中断允许位 EA :中断总允许位
15
PX0:外部中断0允许位 PT0:定时器/计数器0中断允许位 PX1:外部中断1允许位 PT1:定时器/计数器1中断允许位
2. 中断优先级控制寄存器IP(0B8H) (MSB) (LSB) - PS PT1 PX1 PT0 PX0 PX0:外部中断0允许位 PT0:定时器/计数器0中断允许位 PX1:外部中断1允许位 PT1:定时器/计数器1中断允许位 PS : 串行口中断允许位
16
当两个以上的中断源同时提出申请时,CPU到底相应哪个中断呢?
中断响应遵循两条规则: (1)低优先级中断可以被高优先级中断所中断,反之不能; (2)一种中断(不论哪个优先级)一旦得到响应,与它同级的中断不能再中断它。
17
当同时收到处于同一优先级的多个中断请求时,哪一个中断能得到响应,取决于“内部查询次序”,相当于在每个优先级中,还有一个“内部优先级”,如下表所示:
表 4.2 同级内第二优先级次序
18
例如, 某软件中对寄存器IE、 IP设置如下:
IE=0x 8F; IP=0x06; 则此时该系统中: · CPU中断允许; · 允许外部中断 0、 外部中断 1、 定时器 /计数器 0、 定时器 /计数器1提出的中断申请; · 允许中断源的中断优先次序为: 定时器 /计数器 0>外部中断 1>外部中断 0>定时器/计数器 1。
19
中断响应的阻断条件 在EA=1且相应的中断允许位也为1的情况下,检测到的最高级的中断请求将会得到相应。但此时如果发生下列三种情况中的任何一种,中断响应的过程将被阻断: (1) 同级或高优先级的中断已在进行中; (2) 当前的机器周期还不是正在执行指令的最后一个机器周期(换言之, 正在执行的指令完成前, 任何中断请求都得不到响应); (3) 正在执行的是一条 RETI 或者访问特殊功能寄存器 IE或 IP的指令(换言之, 在 RETI或读写 IE或 IP之后, 不会马上响应中断请求, 而至少执行一条其它指令之后才会响应)。
20
当上述阻断条件存在时,中断不能被相应,且丢弃查询结果。若阻断条件结束时,中断标志已经消失,则这个被拖延了的中断请求可能不会再得到响应。
在单一外部中断的系统里(即不考虑上述阻断条件中断的第一个条件),外部中断响应时间总是在3~8个机器周期之间。
21
2. 单片机一旦响应中断请求, 由硬件完成以下功能: (1) 根据响应的中断源的中断优先级, 使相应的优先级状态触发器置 1;
2. 单片机一旦响应中断请求, 由硬件完成以下功能: (1) 根据响应的中断源的中断优先级, 使相应的优先级状态触发器置 1; (2) 执行硬件中断服务子程序调用, 并把当前程序计数器PC的内容压入堆栈; (3) 清除相应的中断请求标志位(串行口中断请求标 志 RI和 TI除外); (4) 把被响应的中断源所对应的中断服务程序的入口 地址(中断矢量)送入PC, 从而转入相应的中断服务程序。
22
中断响应过程,相当于执行了一条隐含的调用指令(或称隐指令)LCALL。
例如当TF0被置1且得到中断响应时,CPU就自动的执行一条隐指令“LCALL 000BH”。 应当注意,在中断服务子程序的调用过程中,仅仅保存了PC的信息,其余的现场信息(如寄存器的值等)都要由编程人员通过软件来进行保护。
23
表 中断服务程序入口地址表
24
例 1 多中断源。 MCS - 51 单片机有两个外部中断输入端, 当有 2 个以上中断源时, 它的中断输入端就不够了。此时, 可以将定时器/计数器作为外部中断源使用,也可以采用中断与查询相结合的方法来实现。 可以使每个中断源都接在同一个外部中断输入端上, 同时利用输入口线作为多中断源情况下各中断源的识别线。
25
图 5.6 多中断源
Similar presentations