第七章 中断系统
DESCRIPTION
第七章 中断系统. 7.1 中断系统概述 7.2 MCS-51 中断系统 7.3 中断系统应用. 1. 教学内容 : 中断的几个相关概念 MCS-51 单片机的中断系统的组成和工作过程 几个应用实例 2. 教学重难点 中断的工作过程 , 中断入口地址 3. 课时 4 4. 作业 习题 3 ,4 , 5 ,7 ,8 , 11. 7.1 中断系统概述. 7.1.1 中断概念 - PowerPoint PPT PresentationTRANSCRIPT
第七章 中断系统
7.1 中断系统概述7.2 MCS-51 中断系统7.3 中断系统应用
1. 教学内容 :
中断的几个相关概念MCS-51 单片机的中断系统的组成和工作过程几个应用实例2. 教学重难点中断的工作过程 , 中断入口地址3. 课时 4
4. 作业习题 3 ,4 , 5 ,7 ,8 , 11
7.1 中断系统概述 7.1.1 中断概念
中断是指计算机在执行某一程序的过程中 , 由于计算机系统内、 外的某种原因 , 而必须中止原程序的执行 , 转去执行相应的处理程序 , 待处理结束之后 , 再回来继续执行被中止的原程序的过程。
采用了中断技术后的计算机 , 可以解决 CPU 与外设之间速度匹配的问题 , 使计算机可以及时处理系统中许多随机的参数和信息 , 同时 , 它也提高了计算机处理故障与应变的能力。
• “ 中断”与“查询”相比: 执行效率↑实时性 ↑
7.1.2 中断源
中断源是指在计算机系统中可以向 CPU 发出中断请求的来源。有内部中断和外部中断两类
中断响应后所执行的处理程序称为中断服务子程序
原来正常执行的程序为主程序
主程序被断开的位置为断点
中断服务子程序的调用不是事先安排的 , 由硬件自动完成
7.1.3 中断系统的功能
1. 实现中断调用和返回
2. 实现中断优先权排队3. 实现中断嵌套
接到中断申请 , 并满足条件时 , 先压栈保护 ; 再转入中断服务程序的入口地址 ; 执行中断程序 , 并清除中断请求标志 ; 执行完后再恢复现场 , 返回断点
中断优先级越高 , 则响应优先权就越高。当 C
PU 正在执行中断服务程序时 , 又有中断优先级更
高的中断申请产生 , 这时 CPU 就会暂停当前的中
断服务转而处理高级中断申请 , 待高级中断处理程
序完毕再返回原中断程序断点处继续执行 , 这一过
程称为“中断嵌套”。
7.2 MCS-51 的中断系统
图 7.1 MCS - 51 中断系统结构框图
7.2.1 中断源
表 7.1 8051 中 断 源
表 7.2 中断服务程序入口地址表
7.2.2 中断的控制与管理• MCS-51 的中断的控制与管理由 TCON 、 SCON 、 IE 、 IP
四个特殊功能寄存器完成。
• CPU 响应中断的前提是有中断源发出中断申请
• 中断源发出中断申请时,将由硬件置位相应的标志位• 这些标志位由 TCON 和 SCON 锁存
1. 定时器 / 计数器控制寄存器 TCON ( 88H )
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
(MSB) (LSB)
IT0 :外部中断 0 触发方式选择位
0: 低电平触发 1: 负跳变触发
IE0 :外部中断 0 中断请求标志
IT1 、 IE1 类似 IT0 、 IE0
TR0 :定时 / 计数器 0 运行控制位 0: 停止 1: 运行
TF0 :定时 / 计数器 0 中断溢出标志位: T0 被允许计数后,计满溢出后,硬件将其置为 1 ,向 CPU 发中断申请
TR1 、 TF1 类似 TR0 、 TF0
2. 串行口控制寄存器 SCON ( 98H )
SM0 和 SM1 :串行口工作方式选择位SM2 :多机通信使能位REN: 接收允许位TB8 :发送数据位 8RB8 :接收数据位 8TI: 串行口发送中断请求标志RI: 串行口接收中断请求标志
SM0
SM1
SM2
REN
TB0
RB0
TI RI
MSB LSB
3. 中断允许寄存器
MCS - 51 单片机有 5 个( 8052 有 6 个)中断源 ,
为了使每个中断源都能独立地被允许或禁止 , 以便用户能灵活使用 , CPU 内部在每个中断信号的通道中设置了一个中断允许触发器 , 它控制 CPU 能否响应中断。只有对应的中断允许触发器被使能(置“ 1” ),相应的中断才能得到相应。
EX0 :外部中断 0 允许位ET0 :定时器 / 计数器 0 中断允许位EX1 :外部中断 1 允许位ET1 :定时器 / 计数器 1 中断允许位ES : 串行口中断允许位EA :中断总允许位单片机复位后, IE 被清 0 ,由用户程序设置 IE 的相应位来控制中断的禁止与允许
EA - - ES ET1 EX1 ET0 EX0
(MSB) (LSB)
中断允许控制寄存器 IE ( 0A8H )
4. 中断优先级控制寄存器 IP ( 0B8H )
- - - PS PT1 PX1 PT0 PX0
(MSB) (LSB)
PX0 :外部中断 0 ( 1- 高优先级, 0- 低优先级)
PT0 :定时器 / 计数器 0 中断优先级控制位( 1- 高优先级, 0-低优先级)
PX1 :外部中断 1 中断优先级控制位( 1- 高优先级, 0- 低优先级)
PT1 :定时器 / 计数器 1 中断优先级控制位( 1- 高优先级, 0-低优先级)
PS : 串行口中断中断优先级控制位( 1- 高优先级, 0- 低优先级)
当两个以上的中断源同时提出申请时, CPU 到底相应哪个中断呢?
中断响应遵循两条规则:
( 1 )低优先级中断可以被高优先级中断所中断,反之不能;
( 2 )一种中断(不论哪个优先级)一旦得到响应,与它同级的中断不能再中断它。
表 3.3 同级内第二优先级次序
当同时收到处于同一优先级的多个中断请求时,哪一个中断能得到响应,取决于“内部查询次序”,相当于在每个优先级中,还有一个“内部优先级”,如下表所示:
例如 , 某软件中对寄存器 IE 、 IP 设置如下 :
MOV IE, # 8FH
MOV IP, # 06H
则此时该系统中 : · CPU 中断允许 ; · 允许外部中断 0 、 外部中断 1 、 定时器 / 计数器 0 、 定时器 / 计数器 1 提出的中断申请 ; · 允许中断源的中断优先次序为 : 定时器 / 计数器 0> 外部中断 1> 外部中断 0> 定时器 /计数器 1 。
7.3 中断系统应用中断的过程1. CPU 响应中断的条件
• 1) 中断源发出中断申请 , 中断标志被锁存在 TCON 和 SCON 中
• 2)CPU 允许中断• 3)根据中断优先级排队 , 选出级别最高的准备响应• 4)若 CPU要响应一个中断 , 应没有同级或级别更高的中断
正在处理• 5) 当前指令处理完成,即执行的指令到了最后一个机器周期
时 ,才能响应中断• 6) 正在执行的指令不能与中断有关 ,如访问 IE 、 IP 、 RETI
的指令
2. 响应中断的过程
单片机一旦响应中断请求 , 由硬件完成以下功能 :
(1 ) 根据响应的中断源的中断优先级 , 使相应的优先级状态触发器置 1;
(2 ) 通过硬件自动生成调用指令( LCALL ) , 并把当前程序计数器 PC 的内容压入堆栈 ;
(3 ) 清除相应的中断请求标志位(串行口中断请求标
志 RI 和 TI 除外) ;
(4 ) 把被响应的中断源所对应的中断服务程序的入口
地址(中断矢量)送入 PC, 再通过转移指令转入相应的中断服务程序。
• 3. 中断处理过程中的问题• CPU 响应中断后 ,T0 和 T1 的中断申请会自动撤消
10 INTINT 和 和串行口的中断申请需要及时清除 , 以免被 CPU 再次查到误以为又有中断申请而再次响应
1) 外部中断的撤消 : 利用 D 触发器和指令共同完成 .收到外部中断请求信号时 , D 触发器的 CP脉冲有效 , D 触发器将中断请求信号锁存并送到 1INT
CPU 响应中断后 , 应使 Q端变高 ,撤消中断请求
• ANL P1, #1111 1110B ;SD 有效 ,Q=1, 撤消中断• ORL P1, #0000 0001B ;SD无效 ,CP 控制 Q, 接受中
断• 申请
• 2) 串行口中断申请的撤消• CPU 响应中断后 ,要通过软件撤消中断申请• CLR TI• CLR RI
1. 借用定时器扩展外部中断源
T0 和 T1 是两个内部中断源 ,若不作为定时器和计数器使用 , 可将其扩展为外部中断源
方法 : 将 T0 或 T1 设置为计数器工作方式 , 初值最大 ,来一个脉冲 ,加 1即产生溢出中断
• 例如 : 将 T0 设置为方式 2 计数 ,TH1=TL1=0FFH• 初始化程序 : • MOV TMOD #60H• MOV TL0 , #0FFH• MOV TH0 , #0FFH• SETB EA• SETB ET0• SETB TR0• T1脚 (P3.5)上每来一个负跳变就会向 CPU 发出中断申请 ,
相当增加一个边沿触发的外部中断源•
• 2. 中断和查询结合的方法• 在外部中断 1引脚上连接 4 个外设的中断源 , 通过 OC门产生中断请求信
号 ,无论哪个外设提出中断请求 , 都会使变低 , 并可通过查询 P1.0-P1.3得知是哪个外设提出中断申请 ( 将一个外部中断源变为 4 个中断源)
P1.3
P1.2
P1.1
P1.0
1INT
8031
WS1
WS2
WS3
WS4
+5V
• ORG 0013H• LJMP ZDZ• ZDZ : PUSH PSW• PUSH A• JB P1.0, AWS1• JB P1.1, AWS2• JB P1.2, AWS3• JB P1.3, AWS4• INTR: POP A• POP PSW• RETI• AWS1:• ………
• 3. 例 :规定外部中断 1 为边沿触发方式 , 低优先级 ,• 在中断服务程序中将寄存器 B 的内容右循环移一位 ,• B 的初值为 10H,试编写主程序和中断服务子程序 .• 先初始化• 再给定中断服务程序的入口地址 • 再写主程序和中断服务子程序
• ORG 0000H• LJMP MAIN• ORG 0013H• LJMP INT• MAIN: SETB EA• SETB EX1• CLR PX1• SETB IT1• MOV B, #10H• LOOP: SJMP LOOP• INT: MOV A, B• RR A• MOV B, A• RETI
例 : 在 INT0引脚外接脉冲信号 ,要求每送来一个脉冲 , 就把50H 单元的内容加 1,若 50H 单元计满 , 则进位 51H 单元 ,利用中断结构编制一个脉冲计数程序
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP SUBG
ORG 2000H
MAIN: MOV A, #00H
MOV 50H, A ; 单元内容清零 MOV 51H, A ;单元内容清零 MOV SP, #70H
• SETB IT0
• SETB EA• SETB EX0• AJMP $• ORG 3000H• SUBG: PUSH ACC• INC 50H• MOV A,50H• JNZ BACK• INC 51H• BACK: POP ACC• RETI
4.用优先编码器扩展中断源