第 5章 中断系统第 5章 中断系统实时控制、故障自动处理时用到中断系统,计算机与外围设备间传送数据及实现人机联系也常常用到中断系统。
MCS-51中断系统的功能为,5个中断源; 2个中断优先级,从而可实现二级中断嵌套;每一个中断源的优先级可由程序设定。与中断系统工作有关的 SFR有 IE,IP以及 TCON。
第 5章 中断系统
5.1 中断的概念计算机中的中断是指 CPU在处理某件事情的时候,外部发生了某一事件请求 CPU迅速去处理,于是 CPU暂时中断当前的工作,转入处理所发生的事件,中断访问处理完后,再回到原来被中断的地方,继续原来的工作的过程称为中断,如图 5-1所示
。 实现这种功能的部件称为中断系统 ( 中断机构 ),产生中断的请求源称为中断源 。
第 5章 中断系统图 5-1 中断流程第 5章 中断系统
5.2 中断系统的功能
MCS-51的中断系统具有以下中断功能:
1,能实现中断及返回 。
2,能实现中断优先级排队 。
3,能实现中断嵌套 。
图 5-2 中断嵌套流程第 5章 中断系统第 5章 中断系统
5.3中断源
1,外中断类 即外部中断 0和外部中断 1。
中断请求信号分别由引脚 ( P3.2) 和 ( P3.3) 引入外部中断请求有两种信号方式,
电平方式,当引脚上出现低电平时就向 CPU申请中断,
CPU响应中断后要采取措施撤消中断请求信号,使引脚恢复高电平 。
脉冲方式,当引脚上出现负跳变时,该负跳变经边沿检测器使 IE0或 IE1置 1,向 CPU申请中断 。 CPU响应中断后由硬件自动清除 IE0和 IE1。 CPU在每个机器周期采样 INT0*和
INT1*,为了保证检测到负跳变,引脚上的高电平与低电平至少应各自保持一个机器周期 。
第 5章 中断系统
2.定时器 /计数器 0,1溢出中断定时器 /计数器计数溢出时,由硬件分别置 TF0=1
和 TF1=1,向 CPU申请中断。 CPU响应中断后,
由硬件自动清除 TF0和 TF1
第 5章 中断系统
3.串行接口中断串行接口的中断请求由发送或接收所引起。串行口发送了一帧信息,便由硬件置 TI= 1,向 CPU
申请中断。串行口接收了一帧信息,便由硬件置 RI= 1,向 CPU申请中断。 CPU响应中断后必须由软件清除 TI和 RI。
第 5章 中断系统中断标志位除外部中断电平触发方式外,其它各中断实际上由标志位 IE0,IE1,TF0,TF1,TI,RI置位引起的。这些标志位除了由相应的硬件置位外,
还可以由软件置位。如果需要,可以由程序安排产生中断。
第 5章 中断系统
5.4 中断控制与中断控制有关的寄存器共四个,
定时器控制寄存器 TCON
串行口控制寄存器 。 SCON
中断允许控制寄存器 IE
中断优先控制寄存器 IP
第 5章 中断系统
1,定时器控制寄存器 ( TCON)
该寄存器地址为 88H,其位地址为 8FH~ 88H。 寄存器的内容及位地址表示如下:
位地址 8F 8E 8D 8C 8B 8A 89 88
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
· IE0 ( IE1) —— 外中断请求标志位当 CPU采样到 (或) 端出现有效中断请求时,此位由硬件置 1。在中断响应完成后转向中断服务时,再由硬件自动清零。
0INT1INT
第 5章 中断系统
·IT0( IT1) —— 外中断请求信号方式控制位
IT0( IT1) =1 脉冲方式 ( 后沿负跳有效 )
IT0( IT1) =0 电平方式 ( 低电平有效 )
此位由软件置 1或清 0。
位地址 8F 8E 8D 8C 8B 8A 89 88
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
第 5章 中断系统
2,串行口控制寄存器 ( SCON)
该寄存器地址为 98H,其位地址为 9FH~ 98H。
位地址 9F 9E 9D 9C 9B 9A 99 98
位符号 SM0 SM1 SM2 REN TB8 RB8 TI RI
·TI—— 串行口发送中断请求标志位当发送完一帧串行数据后,由硬件置 1,在转向中断服务程序后,必须用软件清 0。
·RI—— 串行口接收中断请求标志位当接收完一帧串行数据后,由硬件置 1;在转向中断服务程序后,必须用软件清 0。
第 5章 中断系统
3,中断允许控制寄存器 ( IE)
该寄存器地址为 A8H,其位地址为 AFH~ A8H。
位地址
AF AE AD AC AB AA A9 A8
位符号
EA
1
/
0
/
0
ES
0
ET1
1
EX1
0
ET0
0
EX0
1
·EA—— 中断允许总控制位
EA=0 中断总禁止,禁止所有中断 。
E EA=1 中断总允许 。 当中断总允许后,某个中断的禁止或允许由各中断源的中断允许控制位进行设置 。
第 5章 中断系统
·EX0( EX1) —— 外部中断允许控制位
EX0( EX1) = 0 禁止外中断
EX0( EX1) = 1 允许外中断
·ET0( ET1) —— 定时/计数中断允许控制位
ET0( ET1) = 0 禁止定时 ( 或计数 ) 中断
ET0( ET1) = 1 允许定时 ( 或计数 ) 中断
·ES—— 串行中断允许控制位
ES=0 禁止串行中断
ES=1 允许串行中断单片机复位后 ( IE) = 00H,中断系统处于禁止状态 。
中断允许与禁止,就是中断的开放与关闭 。
第 5章 中断系统
4,中断优先级控制寄存器 ( IP)
IP寄存器地址 B8H,位地址为 BFH~ B8H。
位地址 BF BE BD BC BB BA B9 B8
位符号 /
0
/
0
/
0
PS
0
PT1
0
PX1
0
PT0
0
PX0
1
,PX0—— 外部中断 0优先级设定位
,PT0—— 定时中断 0优先级设定位
,PX1—— 外部中断 l优先级设定位
,PT1—— 定时中断 1优先级设定位
,PS —— 串行中断优先级设定位
X =0,优先级为低; X=1,优先级为高 。
第 5章 中断系统中断优先级是为中断嵌套服务的,MCS— 51中断优先级的控制原则是:
① 低优先级中断请求不能打断高优先级的中断服务;但高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套 。
② 如果一个中断请求已被响应,则同级的其它中断响应将被禁止 。
③ 如果同级的多个中断请求同时出现,则按 CPU设定的自然优先级确定那个中断请求被响应 。
第 5章 中断系统
MCS— 51同一优先级中断源的优先级排列顺序:
外部中断 0→ 定时中断 0→ 外部中断 1→ 定时中断 1→ 串行中断这其实是 CPU查询各中断的次序 。
第 5章 中断系统习 题
9、分析以下几种中断优先级的排列顺序(由高到低)是否可能?并说明理由。
( 1)定时器 T0溢出中断,定时器 T1溢出中断,外部中断 INT0*、外部中断 INT1*、串行口中断
( 2)外部中断 INT0*、定时器 T1溢出中断、定时器 T0溢出中断、外部中断 INT1*、串行口中断
( 3)串行口中断、定时器 T0溢出中断,外部中断 INT0*、外部中断
INT1*、定时器 T1溢出中断
( 4)外部中断 INT0*、定时器 T1溢出中断、外部中断 INT1*、定时器 T0
溢出中断,串行口中断
( 5)外部中断 INT0*、外部中断 INT1*、串行口中断、定时器 T0溢出中断,定时器 T1溢出中断第 5章 中断系统
5,中断控制寄存器状态设置这四个控制寄存器都是既可进行 字节寻址 又可进行 位寻址的 。
初始化方式,字节操作指令,位操作指令 。
例 在中断允许控制寄存器 IE中,假定要开放外部中断 0和定时中断 1,为:
字节操作指令,MOV IE,#89H
位操作指令,SETB EA
SETB EX0
SETB ET1
其它各中断控制寄存器与此类似 。
第 5章 中断系统例 1.8031芯片的 INT0*,INT1*引脚分别输入压力超限和温度超限中断请求信号,定时器 /计数器 0
做定时检测的实时时钟,用户规定的中断优先权排列次序为:
压力超限 温度超限 定时检测要求确定 IE,IP的内容,以实现上述要求 。
( 1) CLR IT0
CLR IT1
( 2) MOV IE,#87H
MOV IP,#05H
IE=87H,IP=05H
第 5章 中断系统
5.5 中断响应中断响应的 条件:
( 1)中断源有中断请求。
( 2)中断允许寄存器 IE相应位置 1,CPU开户中断。
( 3)无同级或高级中断正在处理。
( 4)当前的指令周期已经结束。
( 5)若现行指令为 RETI或访问 IE或 IP指令时,
执行完该指令且紧随着的另一条指令已执行完。
单片机在紧接着的下一个机器周期的 S1期间响应中断源的中断请求。
第 5章 中断系统
CPU响应中断后,由硬件执行如下功能:
( 1)根据中断源的优先级高低,使相应的优先级状态触发器置 1。
( 2)保留断点,把程序计数器 PC的当前值推入堆栈保存。
( 3)清相应的中断请求标志位 TF0,TF1,IE0,IE1 。
( 4)把被响应的中断服务程序的入口地址送入 PC,从而转入相应的中断服务程序。
中断服务程序的最后一条指令必须是中断返回指令 RETI。
CPU执行该指令时,先将相应的优先级状态触发器清零,然后从堆栈中弹出栈顶的二个字节到 PC,从而返回到断点。
有些中断请求的撤除也要由中断服务程序来实现。
现场数据的保护和弹出?
第 5章 中断系统中断响应时间:
3~ 8个机器周期第 5章 中断系统
5.6 中断请求的撤除
CPU响应中断请求后,在中断返回(执行 RETI)前,必须撤除请求,否则会错误的再次引起中断过程。
对于定时器 /计数器 0,1的中断请求以及跳变触发方式的外部中断 0,1,CPU在响应中断后用硬件清除了相应的中断请求标志 TF0,TF1,IE0,IE1,即自动撤除了中断请求。
对于串行接口中断,CPU响应中断后没有用硬件清除中断标志位,必须用用户编制的中断服务程序来清除相应的中断标志位。
对于电平触发的外部中断,由于 CPU对 INT0*,INT1*引脚没有控制作用,也没有相应的中断请求标志位,因此需要外接电路来清除中断请求信号。
第 5章 中断系统
5.7 中断技术应用举例主程序和中断服务程序 。
在编写主程序时应注意以下几点:
( 1) 主程序的起始地址 。 MCS-51单片机复位后,
PC=0000H,而各中断源的入口地址为 0003H~0023H。 因此
,在编写程序时应在 0000H处使用一条转移指令,跳过上述区域 。 主程序则以转移指令的目的地址作为其起始地址 。
第 5章 中断系统
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP SUM
ORG 1000H
MAIN,~~
第 5章 中断系统
( 2) 主程序的初始化内容。
MCS-51中断系统的功能是通过上述特殊功能寄存器进行统一管理的,中断系统的初始化是指用户对这些特殊功能寄存器中的各控制位进行赋值。
初始化包括:相应中断源开中断;设定所涉及中断源的中断优先级;若为外部中断,应规定其触发方式。
第 5章 中断系统例 5-1 编写 INT1*为低电平触发的初始化程序 。
( 1) 采用位操作指令实现
SETB EA ;总中断允许
SETB EX1 ;设置外部中断 1允许
SETB PX1 ;设置 INT1*为高优先级断
CLR IT1 ;电平触发方式
( 2) 采用字节操作指令
MOV IE,#84H
ORL IP,#04H
ANL TCON,#0FBH
第 5章 中断系统例 5-2 利用 INT0*实现单步操作 。
MCS-51中断系统有个特点,当执行中断返回指令 RETI后,
至少还要执行一条指令,才能响应新的中断请求 。
单步操作是通过外部中断 INT0*引脚上的低电平实现,即按一次键执行一条指令 。
第 5章 中断系统
ORG 0000H
LJMP MAIN

ORG 0003H
LJMP INT0

ORG 2000H
MAIN,SETB EA ;总中断允许
SETB PX0 ;设置 INT0*为高优先级断
SETB EX0 ;允许外部中断 0中断
CLR IT0 ;电平触发方式

INT0,JNB P3.2,INT0
HEAR,JB P3.2,HEAR
RETI
END
第 5章 中断系统例 5-3 外部中断源扩展 。
当外部中断源多于 2个时,可采用硬件申请与软件查询的方法扩展外部中断。
8051
≥1 EXT0EXT1
EXT2
EXT3
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
LED R
0INT
第 5章 中断系统
ORG 0000H
JLMP MAIN
ORG 0003H
LJMP EXINT ;转外部中断 1服务程序
……
EXINT,PUSH PSW
PUSH A ;保护现场 。
JB P1.0,EXT0
JB P1.1,EXT1
JB P1.2,EXT2
JB P1.3,EXT3
DONE,POP A
POP PSW ;恢复现场 。
RETI ;中断返回 。
……
第 5章 中断系统
EXT0,SETB P1.4

AJMP DONE
EXT1,SETB P1.5

AJMP DONE
EXT2,SETB P1.6

AJMP DONE
EXT3,SETB P1.7

AJMP DONE
第 5章 中断系统例 5-4 统计脉冲触发方式的的个数,若满 100个,则停止统计并将 P1.0置 1。
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP SUM
ORG 1000H
MAIN,MOV A,00H ;主程序开始
SETB IT0 ;设置脉冲触发方式
SETB IE0 ;设置外部中断 0允许
SETB EA ;总中断允许
SJMP $ ;等待中断第 5章 中断系统
SUM,INC A
CJNE A,#100,QUIT
CLR EA ;总中断禁止
CLR IE0 ;外部中断 0禁止
SETB P1.0 ;置位 P1.0
QUIT,RETI ;中断返回
END
第 5章 中断系统习 题
1,8051单片机提供了几个中断源?有几个中断优先级别?
各中断源所对应的中断矢量地址是多少?
2、外部中断有几种触发方式?如何选择?
3、中断响应怎样保护断点地址和保护现场?
4、在 MCS-51单片机中,各中断标志是如何产生的?哪些中断标志可以随中断响应而自动撤除?哪些需要由用户撤除?
撤除的方法是什么?
6、写出 INT0*为边沿触发方式的中断初始化程序。
7、什么是中断优先级?中断优先处理的原则是什么?
8、简述单片机响应中断的过程和条件。
第 5章 中断系统习 题
9、分析以下几种中断优先级的排列顺序(由高到低)是否可能?并说明理由。
( 1)定时器 T0溢出中断,定时器 T1溢出中断,外部中断 INT0*、外部中断 INT1*、串行口中断
( 2)外部中断 INT0*、定时器 T1溢出中断、定时器 T0溢出中断、外部中断 INT1*、串行口中断
( 3)串行口中断、定时器 T0溢出中断,外部中断 INT0*、外部中断
INT1*、定时器 T1溢出中断
( 4)外部中断 INT0*、定时器 T1溢出中断、外部中断 INT1*、定时器 T0
溢出中断,串行口中断
( 5)外部中断 INT0*、外部中断 INT1*、串行口中断、定时器 T0溢出中断,定时器 T1溢出中断