6第六章MCS—5l的中断系统
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
6.1 中断请求源
MCS-51提供五个中断请求源,其中两个为外部中断源, 由INT0, INT1引脚输入;两个为片内的定时器/计数器溢出 时产生的中断请求TF0、TFl;以及串行口发送中断TI 或接 收中断RI。这些中断请求源分别由特殊功能寄存器TCON和 SCON的相应位锁存。 中断源 入口地址
PC出栈返回主程序 中断返回
MCS-51具有5个中断源,两个中断优先级,可实现 两级中断服务程序嵌套。本章将从应用的角度说明中断 系统的工作过程和编程方法。 中断系统的结构框图如下图
图5-1 中断系统的结构框图
返回本节
目录
6.1 中断请求源
6.2 中断控制
6.3 中断的响应过程
6.4 多中断源系统设计 6. 5 中断系统的应用
TF1
TR1 TF0 TR0
IE1
IT1 中断
IE0 IT0
定时器/计数器
1.
中断标志位: TF1、TF0、IE1、IE0登记各中断源请求
信号:=1,有中断请求;= 0,无中断请求。
CPU响应中断后,该中断标志自动清零。
2. 外部中断触发方式选择位: IT0、IT1
IT0、IT1=1:负边沿触发中断请求; =0:低电平触发中断请求。
3)中断处理:执行中断源所要求的程序处理段。
4)中断返回:执行RETI指令,栈顶内容PC,程序跳转回
断点处。
6.4 多个外部中断源系统设计
MCS-51为用户提供两个外部中断申请输入端 INT0和INT1,实际的应用系统中,外部中断请求源往 往比较多,当外部中断源多于中断输入引脚时,可采 取以下措施: 1.用定时计数器输入端T0、T1作外部中断入口引脚
程序如下
ORG0000H AJMP MAIN ORG 0003H AJMP SEV MAIN: MOV P1, #0F5H SETB IT0 ;置INT0为边沿触发方式 SETB EX0 ;允许INT0中断 SETB EA ;开中断 AJMP $ SEV:JNB P1. 0,I1 ;P1. 0为0转L1 SETB P1. 1 ;是P1. 0 引起的中断,点亮LED1 SJMP I 1 I 1:JNB P1. 2, RETU SETB P1. 3 ;是P1. 2 引起的中断,点亮LED2 SJMP RETU RETU:RETI
SCON为串行口控制寄存器,字节地址为98H,SCON
的低二位锁存串行口的接收中断和发送中断标志,其格式如
下: D7 D6 D5 D4 D3 D2 D1 TI D0 RI
串行口控制
串行口中断
TI:串行口的发送中断标志位,发送完一组数据后,TI 位 置“1”。 RI:串行口接收中断标志位,每当接收完一组数据后,RI 置“1”。
例2. 用74LSl48扩展8031外部中断源的基本硬件电路如图6-3 所示。(硬件查询)
IR0
INT1 P1.3 P1.2 P1.1 GS IR1 A2 A1 A0
8051
74LS 148
IR7
图中编码器输出端A2~A0连至 8031P1口的P1.1 ~
P1. 3,编码器输出端GS和8031的外中断源 INTl相连。 当8个中断源IR0 ~IR7中有中断申请时(低电平有效),与 其对应的一组编码就出现在8031P1口的P1.1~ P1.3线 上,且8031外中断INTl为低电平。这时,若8031的INTl 中断开放,就可以响应中断源所提出的中断申请。 为了使程序转向各中断源的中断服务子程序,必须在 8031的中断服务程序中编写如下引导程序:
外部中断0(INT0) 0003H
定时器0(T0)
外部中断1(INT1) 定时器1(T1)
000BH
0013H 001BH
串行口
0023H
中断服务程序入口地址
TCON为定时器/计数器的控制寄存器,字节地址为88H, TCON也锁存外部中断请求标志。其格式如下 D7 D6 D5 D4 D3 D2 D1 D0
寄存器名称
定时器控制 寄存器 串行口控制 寄存器 中断允许 寄存器 中断优先级 寄存器
D7
D6 D5 D4 D3 TF0
D2
D1
D0
TCON TF1 (88H) SCON (98H) IE (A8H) IP (B8H) EA
IE1 IT1 IE0 IT0
TI
ES ET1 EX1 ET0
RI
EX 0
8051 P1.0 P1.1
……
P1.7
3. 程序为
MAIN: MOV TMOD,#01H ; MOV TL0,#0B0H ;T0置初值 MOV TH0,#3CH MOV A, #01H MOV R2, #100 SETB TR0;启动T0 SETB ET0;允许T0中断 SETB EA;CPU开放中断 AJMP $ SEV: MOV TL0,#0B0H ;中断服务程序 MOV TH0,#3CH DEC R2 CJNE R2,#00H, NEXT 或DJNZ R2,NEXT RLC A MOV P1,A NEXT:RETI
ORG 0013H ;INTl中断服务程序人口 AJMP LAB ORG 0040H LAB:ORL P1,#00001110B ;设置P1.1、P1. 2、P1. 3为输入线 MOV A,P1 ;P1口内容送累加器 ANL A,#00001110B ;屏蔽除P1.1、P1.2、P1. 3以外的位 MOV DPL,A ;中断向量低8位地址送DPL MOV DPH,#10H ;中断向量高8位地址送DPH CLR A ; 清累加器 JMP @A+DPTR ;跳转到中断服务程序转移表
INTI : PUSH
PSW
响应之前保持低电平,
则INT1的中断服务程
序如下:
PUSH A JNB P1.0,DVT1 JNB P1.1,DVT2 JNB P1.2,DVT3 JNB P1.3,DVT4 INTIR: POP A POP PSW RETI DVT1 :中断程序 AJMP INTIR DVT2 :中断程序 AJMP INTIR DVT2 :中断程序 AJMP INTIR DVT2 :中断程序 AJMP INTIR
负跳变时,向CPU申请中断。 解: (1)计数常数计算 , 此时的计数常数应为0FFH。 (2)TMOD的设定 GATE C / T 0 0 M1 0 M0 0 GATE 0 C/T 1 M1 1 M0 0
(3)编程 ORG 000BH AJMP IT0P ORG 0100H IT0P : RETI ORG 0200H MAIN:MOV TMOD,#06H MOV TL0,#0FFH MOV TH0,#0FFH SETB TR0 SETB ET0 SETB EA AJMP $ CLR ET0 CLR EA
6.3 中断的响应过程
中断的响应过程 中断响应时间 中断处理过程
6. 3. 1 6.3.2 6.3.3
6. 3. 1 中断的响应过程
1.中断响应周期时序
每个机器周期采样中断标志位,若有中断请求,将在下一 个机器周期按优先级顺序进行中断查询。
2. 各中断源中断服务程序的入口地址。 3. 中断响应阻断. 1) 当CPU未执行完一条指令。 2)当有同级或高级中断服务。 3)RETI指令或访问IE、IP的指令后,不能立即响应中断。 4. 中断返回
EX0
中断允许控制位:
=1开中断;= 0关中断。
EA: CPU开中断允许位。
ES: 串行口中断允许位。 ETl:定时器/计数器T1 的溢出中断允许位。
EXl:外部中断1中断允许位。
ET0:定时器/计数器T0的溢出中断允许位。 EX0:外部中断0中断允许位。
6. 2.2
中断优先级
MCS-51有两个中断允许优先级,对于每一个中断 源可编程为高优先级中断或低优先级中断,可实现二 级中断嵌套。中断优先级的两条基本规则:
1.低优先级可被高优先级中断,反之不能。
2.任何一种中断,一旦得到响应,不会再被它的同 级中断所中断。
中断优先级寄存器IP,其字节地址为B8H, IP寄存器格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
PS
PT1 PX1 PT0 PX0
2级优先级:=1为高优先级,= 0为低优先级。
同一优先级别按内部查询顺序排列优先级。
PS PT1 PX1 PT0 PX0
例1:设计程序完成如下功能:每10s使A的内容循环左移一次, 送P1口显示,已知晶振频率为6MHZ 。 解:1. 计算初始值 使用定时器T0方式1,计数长度为16位,但考虑到10s时间 T0本身无法达到,所以需设软件计数器,采用下面方法,用T0 定时100ms,每100ms到使R2计数,计满100次,10s时间到, 使A内容循环左移。所以,初始值为X=65536100ms/2µ s=15536=3CB0H TH0=3CH, TL0=0B0H 2. 控制字TMOD= 01H
2.用一个外部中断入口接受多个外部中断源,并加入 中断查询电路。 3.用串行口接收端RXD作外部中断入口引脚
6. 4. 1 定时器作为外部中断源
定时器/计数器选择为计数器方式, T0或T1 引脚上发生负跳变时,定时器的溢出中断作为外 部中断请求标志。把T0、T1引脚作为外部中断请
求输入引脚。
例1:试设定定时器/ 计数器T0为计数方式2,当T0引脚出现
例2. 如图所示,故障显示电路,当无故障时,故障源输入为低 电平,对应信号灯不亮,当其中之一出现故障时,对应的输入 线由低电平变为高电平,从而引起CPU中断,在中断服务程序 中读入故障源状态,并使相应的信号灯点亮。
故障源信号 输入端
INT0
+
P1.0 8051 P1.1
LED1
P1.2
P1.3
LED1
ORG 1000H ;转移表首地址 JMPTB1:AJMP IR0 ;8个中断服务子程序分支转移 AJMP IR1 …… AJMP IR7
6.4.3 用串行口接收端RXD作外部 中断入口引脚(自学)
6. 5
中断系统的应用
和 IP
进行管
从软件的角度看,中断控制实质上就是对4个与中断有关
的特殊功能寄存器TCON、SCON、IE
;设T0为计数方式2 ;设TL0初值 ;设TH0初值 ;启动计数 ;允许T0中断 ;开中断 ;等待中断 ;禁止T0中断 ;关中断
6.4.2 中断和查询结合的方法
例1. 设DVT0—DVT4这五个中断请求源接至INT0 和INT1,
用软件查询方法识别。
ORG 0013H
AJMP INTI
设DVT1—DVT4 这四个中断请求源可 由相应的中断服务程 序所清除,但在中断
中断返回指令: RETI= RET指令+通知CPU中断服务已结束。
6.3.2
中断响应时间
正常中断响应时间至少为3~8个机器周期,如果有
同级或高级中断服务,将延长中断响应时间。
6.3.3
中断处理过程
2)系统处于开中断状态
1.中断响应条件
1)有中断请求信号
2.中断响应过程
1)保护断点:将断点地址压入堆栈保存,即当前PC值栈。 2)寻找中断源:中断服务程序硬件入口PC,转入中断服 务程序。
第6章
MCS—5l的中断系统
第5章 MCS—5l的中断系统
中断系统是计算机的重要指标之一。 日常生活中的中断与计算机中断的比较:
某人看书 电话铃响 执行主程序 中断信号如INT=0 日ቤተ መጻሕፍቲ ባይዱ事务 中断请求
暂停看书
书中作记号 电话谈话
暂停执行主程序
当前PC入栈 执行中断程序
中断响应
保护断点 中断服务
继续看书
TI
、RI必须由中断服务程序清0。
6.2 中断控制
6. 2. 1 6. 2. 2 中断屏蔽(中断允许控制) 中断优先级
5. 2. 1 中断屏蔽(中断允许控制)
中断允许寄存器IE,IE 的字节地址为A8H,其格式如下: D7 D6 D5 D4 D3 D2 D1 D0
EA
ES
ET1
EX1
ET0
理和控制。只要这些寄存器的相应位按照人们的要求进行了 状态预置,CPU就会按照人们的意志对中断源进行管理和控 制。在8051单片机中,管理和控制的项目有: 1)CPU开中断与关中断;
2)某中断源中断请求的允许和禁止(屏蔽);
3)各中断源优先级别的设定(即中断源优先级排队);
4)外部中断请求的触发方式。
PS:串行口中断优先级控制位。 PTl:定时器T1中断优先级控制位。 PXl:外部中断1中断优先级控制位。 PT0:定时器TO中断优先级控制位。
PX0:外部中断0中断优先级控制位。
同一优先级别按内部查询顺序排列优先级。
中断源
中断级别
外部中断0
T0溢出中断 外部中断1
最高
T1溢出中断
串行口中断 最低