2011-3-30 1
中断系统
2011-3-30 2
5.1 80C51的中断系统
5.1.1 80C51的中断系统结构
一、中断的概念
CPU在处理某一事件 A时,发生了另一事件 B请
求 CPU迅速去处理( 中断发生 );
CPU暂时中断当前的工作,转去处理事件 B( 中
断响应和中断服务 );
待 CPU将事件 B处理完毕后,再回到原来事件 A被
中断的地方继续处理事件 A( 中断返回 ),这一过
程称为 中断 。
2011-3-30 3
MCS-51单片机的中断系统结构
执行主
程序
主程序
继续执行
主程序
断点
中断请求
中断响应
执行
中断
处理
程序
中断返回
2011-3-30 4
引起 CPU中断的根源,称为 中断源 。中断源向 CPU提出
的中断请求。 CPU暂时中断原来的事务 A,转去处理事件 B。
对事件 B处理完毕后,再回到原来被中断的地方(即 断点 ),
称为中断返回。实现上述中断功能的部件称为 中断系统 (中
断机构)。
主 程 序 A
响 应
返 回
断 点
R E T I


中 断 服 务 程 序 B
2011-3-30 5
随着计算机技术的应用,人们发现中断技
术不仅解决了快速主机与慢速 I/O设备的数据
传送问题,而且还具有如下优点:
? 分时操作 。 CPU可以分时为多个 I/O设备
服务,提高了计算机的利用率;
?实时响应 。 CPU能够及时处理应用系统的
随机事件,系统的实时性大大增强;
?可靠性高 。 CPU具有处理设备故障及掉电
等突发性事件能力,从而使系统可靠性提高。
2011-3-30 6
二,80C51中断系统的结构
80C51的中断系统有 5个中断源 ( 8052有 6
个), 2个优先级,可实现二级中断嵌套 。
E X 0
E A P X 0
0
1
E T 0
P T 0
0
1
E X 1
P X 1
0
1
E T 1
P T 1
0
1
E S
P S
0
1
≥ 1
R I
T I
S C O N
T C O N
I E 0
T F 0
I E 1
T F 1
1
0
1
0
1
I T 0
I T 1
I N T 0
I N T 1
T 0
T 1
R X
T X
I E
I P
1
1
1
1
1
1
1
1
0
硬 件 查 询










中 断 入 口
中 断 入 口




中 断 源
中 断 源
2011-3-30 7
5.1.2 80C51的中断源
一、中断源
E X 0
E A P X 0
0
1
E T 0
P T 0
0
1
E X 1
P X 1
0
1
E T 1
P T 1
0
1
E S
P S
0
1
≥ 1
R I
T I
S C O N
T C O N
I E 0
T F 0
I E 1
T F 1
1
0
1
0
1
I T 0
I T 1
I N T 0
I N T 1
T 0
T 1
R X
T X
I E
I P
1
1
1
1
1
1
1
1
0
硬 件 查 询










中 断 入 口
中 断 入 口




中 断 源
中 断 源
2011-3-30 8
1,( P3.2) 。 可由 IT0(TCON.0)选择其为
低电平有效还是下降沿有效 。 当 CPU检测到 P3.2
引 脚 上 出现 有 效 的中 断 信号 时, 中 断 标志
IE0(TCON.1)置 1,向 CPU申请中断 。
E X 0
E A P X 0
0
1
E T 0
P T 0
0
1
E X 1
P X 1
0
1
E T 1
P T 1
0
1
E S
P S
0
1
≥ 1
R I
T I
S C O N
T C O N
I E 0
T F 0
I E 1
T F 1
1
0
1
0
1
I T 0
I T 1
I N T 0
I N T 1
T 0
T 1
R X
T X
I E
I P
1
1
1
1
1
1
1
1
0
硬 件 查 询










中 断 入 口
中 断 入 口




中 断 源
中 断 源
2011-3-30 9
E X 0
E A P X 0
0
1
E T 0
P T 0
0
1
E X 1
P X 1
0
1
E T 1
P T 1
0
1
E S
P S
0
1
≥ 1
R I
T I
S C O N
T C O N
I E 0
T F 0
I E 1
T F 1
1
0
1
0
1
I T 0
I T 1
I N T 0
I N T 1
T 0
T 1
R X
T X
I E
I P
1
1
1
1
1
1
1
1
0
硬 件 查 询










中 断 入 口
中 断 入 口




中 断 源
中 断 源
2,(P3.3) 。 可由 IT1(TCON.2)选择其为低电
平有效还是下降沿有效 。 当 CPU检测到 P3.3引脚
上出现有效的中断信号时, 中断标志 IE1(TCON.3)
置 1,向 CPU申请中断 。
2011-3-30 10
EX0
EA PX0
0
1
ET0
PT0
0
1
EX1
PX1
0
1
ET1
PT1
0
1
ES
PS
0
1
≥ 1
RI
TI
SCON
TCON
IE0
TF0
IE1
TF1
1
0
1
0
1
IT0
IT1
INT0
INT1
T0
T1
RX
TX
IE
IP
1
1
1
1
1
1
1
1
0
硬 件 查 询










中 断 入 口
中 断 入 口




中 断 源
中 断 源
3,TF0( TCON.5), 片内定时 /计数器 T0
溢出中断请求标志 。 当定时 /计数器 T0发生
溢出时, 置位 TF0,并向 CPU申请中断 。
2011-3-30 11
E X 0
E A P X 0
0
1
E T 0
P T 0
0
1
E X 1
P X 1
0
1
E T 1
P T 1
0
1
E S
P S
0
1
≥ 1
R I
T I
S C O N
T C O N
I E 0
T F 0
I E 1
T F 1
1
0
1
0
1
I T 0
I T 1
I N T 0
I N T 1
T 0
T 1
R X
T X
I E
I P
1
1
1
1
1
1
1
1
0
硬 件 查 询










中 断 入 口
中 断 入 口




中 断 源
中 断 源
4,TF1( TCON.7),片内定时 /计数器 T1
溢出中断请求标志。当定时 /计数器 T1发生
溢出时,置位 TF1,并向 CPU申请中断。
2011-3-30 12
EX0
EA PX0
0
1
ET0
PT0
0
1
EX1
PX1
0
1
ET1
PT1
0
1
ES
PS
0
1
≥ 1
RI
TI
SCON
TCON
IE0
TF0
IE1
TF1
1
0
1
0
1
IT0
IT1
INT0
INT1
T0
T1
RX
TX
IE
IP
1
1
1
1
1
1
1
1
0
硬 件 查 询










中 断 入 口
中 断 入 口




中 断 源
中 断 源
5,RI( SCON.0)或 TI( SCON.1),串行口
中断请求标志。当串行口接收完一帧串行数
据时置位 RI或当串行口发送完一帧串行数据
时置位 TI,向 CPU申请中断。
2011-3-30 13
二, 中断请求标志
1,TCON的中断标志
IT0( TCON.0),外部中断 0触发方式控制位。
当 IT0=0时,为电平触发方式。
当 IT0=1时,为边沿触发方式(下降沿有效)。
IE0( TCON.1),外部中断 0中断请求标志位。
IT1( TCON.2),外部中断 1触发方式控制位。
IE1( TCON.3),外部中断 1中断请求标志位。
TF0( TCON.5),定时 /计数器 T0溢出中断请求标志位。
TF1( TCON.7),定时 /计数器 T1溢出中断请求标志位。
2011-3-30 14
2,SCON的中断标志
?RI( SCON.0),串行口接收中断标志位。当允
许串行口接收数据时,每接收完一个串行帧,由
硬件置位 RI。同样,RI必须由软件清除。
?TI( SCON.1),串行口发送中断标志位。当
CPU将一个发送数据写入串行口发送缓冲器时,
就启动了发送过程。每发送完一个串行帧,由硬
件置位 TI。 CPU响应中断时,不能自动清除 TI,
TI必须由软件清除。
2011-3-30 15
一、中断允许控制
CPU对中断系统所有中断以及某个中断源的开放和屏
蔽是由中断允许寄存器 IE控制的。
5.1.3 80C51中断的控制
?EX0(IE.0),外部中断 0允许位;
?ET0(IE.1),定时 /计数器 T0中断允许位;
?EX1(IE.2),外部中断 0允许位;
?ET1(IE.3),定时 /计数器 T1中断允许位;
?ES( IE.4),串行口中断允许位;
?EA (IE.7),CPU中断允许(总允许)位。
2011-3-30 16
二、中断优先级控制
80C51单片机有两个中断优先级,即可实现二级
中断服务嵌套。每个中断源的中断优先级都是由中断
优先级寄存器 IP中的相应位的状态来规定的 。
?PX0( IP.0),外部中断 0优先级设定位;
?PT0( IP.1),定时 /计数器 T0优先级设定位;
?PX1( IP.2),外部中断 0优先级设定位;
?PT1( IP.3),定时 /计数器 T1优先级设定位;
?PS ( IP.4),串行口优先级设定位;
?PT2 (IP.5),定时 /计数器 T2优先级设定位。
2011-3-30 17
?PX0( IPH.0),外部中断 0优先级设定位;
?PT0( IPH.1),定时 /计数器 T0优先级设定位;
?PX1( IPH.2),外部中断 0优先级设定位;
?PT1( IPH.3),定时 /计数器 T1优先级设定位;
?PS ( IPH.4),串行口优先级设定位;
?PT2 (IPH.5),定时 /计数器 T2优先级设定位。
而 80C52单片机有四个中断优先级,即可实现四级
中断服务嵌套。每个中断源的中断优先级由中断优
先级寄存器 IP和 IPH中的相应位的状态来规定的 。
2011-3-30 18
同一优先级中的中断申请不止一个时,则有中
断优先权排队问题。同一优先级的中断优先权排队,
由中断系统硬件确定的自然优先级形成,其排列如
所示:
2011-3-30 19
?设置 52单片机的 4个中断源,使他们的优顺
序为 T1,INT1,INT0,T0.
IPH = 0X08; PT1 = 1;
IP = 0X40; PX1 = 1;
2011-3-30 20
80C51单片机的中断优先级有三条原则:
?CPU同时接收到几个中断时,首先响应优先级别最
高的中断请求 。
?正在进行的中断过程 不能被新的同级或低优先级的
中断请求所中断 。
?正在进行的低优先级中断服务,能被高优先级中断
请求所中断 。
为了实现上述后两条原则,中断系统内部设有两
个用户不能寻址的优先级状态触发器。 其中一个置 1,
表示正在响应高优先级的中断,它将阻断后来所有
的中断请求;另一个置 1,表示正在响应低优先级中
断,它将阻断后来所有的低优先级中断请求。
2011-3-30 21
5.2 80C51单片机中断处理过程
一、中断响应条件
? 中断源有中断请求;
? 此中断源的中断允许位为 1;
? CPU开中断(即 EA=1)。
?p115
同时满足时,CPU才有可能响应中断 。
5.2.1 中断响应条件和时间
2011-3-30 22
中断服务的进入:
CPU执行程序过程中,在每个机器周期
的 S5P2期间,中断系统对各个中断源进行
采样 。这些采样值在下一个机器周期内按
优先级和内部顺序被依次查询。
如果某个中断标志在上一个机器周期的
S5P2时被置成了 1,那么它将于现在的查
询周期中及时被发现。接着 CPU便执行一
条由中断系统提供的硬件 LCALL指令,转
向被称作中断向量的特定地址单元,进入
相应的中断服务程序。
2011-3-30 23
遇以下任一条件,硬件将受阻,不产生 LCALL指令:
?CPU正在处理同级或高 优先级中断;
?当前查询 的机器周期 不是所执行指令的最后一个机
器周期 。即在完成所执行指令前,不会响应中断,从
而保证指令在执行过程中不被打断;
?正在执行 的指令为 RET,RETI或任何访问 IE或 IP寄
存器的指令。即只有在这些指令后面至少再执行一条
指令时才能接受中断请求。
若由于上述条件的阻碍中断未能得到响应,当条件
消失时该中断标志却已不再有效,那么该中断将不被
响应。就是说,中断标志曾经有效,但未获响应,查
询过程在下个机器周期将重新进行。
2011-3-30 24
二、中断响应时间
5.2.1 响应时间 --从查询中断请求标志位到转向中断
服务入口地址所需的机器周期数。
( 1) 最快响应时间
以外部中断的电平触发为最快。
从查询中断请求信号到中断服务程序需要三个机器周
期:
1个周期(查询)+ 2个周期(长调用 LCALL)
( 2) 最长时间
若当前指令是 RET,RETI和 IP,IE指令,紧接着下一
条是乘除指令发生,则最长为 8个周期:
2个周期执行当前指令(其中含有 1个周期查询)+ 4
个周期乘除指令+ 2个周期长调用= 8个周期。
2011-3-30 25
?将相应的优先级状态触发器置 1(以阻断
后来的同级或低级的中断请求)。
?执行一条硬件 LCALL指令,即把程序计
数器 PC的内容压入堆栈保存,再将相应的
中断服务程序的入口地址送入 PC。 (P116)
?执行中断服务程序。
5.2.2 中断响应过程
中断响应过程的前两步是由中断系统内
部自动完成的,而中断服务程序则要由用
户编写程序来完成。
2011-3-30 26
5.2.3 中断返回
RETI指令的具体功能是:
?将中断响应时压入堆栈保存的断点地址从栈
顶弹出送回 PC,CPU从原来中断的地方继续
执行程序;
? 将相应中断优先级状态触发器清 0,通知中
断系统,中断服务程序已执行完毕。
注意,不能用 RET指令代替 RETI指令。在中
断服务程序中 PUSH指令与 POP指令必须成对
使用,否则不能正确返回断点 。
2011-3-30 27
若外部中断定义为 电平触发方式,中断标志位
的状态随 CPU在每个机器周期采样到的外部中断
输入引脚的电平变化而变化,这样能提高 CPU对
外部中断请求的响应速度。但外部中断源若有请
求,必须把有效的 低电平保持到请求获得响应时
为止,不然就会漏掉; 而在中断服务程序结束之
前,中断源又必须撤消其有效的低电平,否则中
断返回之后将再次产生中断。
电平触发方式适合于外部中断输入以低电平输
入且中断服务程序能清除外部中断请求源的情况。
例如,并行接口芯片 8255的中断请求线在接受读
或写操作后即被复位,因此,以其去请求电平触发
方式的中断比较方便。
2011-3-30 28
若外部中断定义为 边沿触发方式,在相继连续的
两次采样中,一个周期采样到外部中断输入为高电
平,下一个周期采样到为低电平,则在 IE0或 IE1中
将锁存一个逻辑 1。即便是 CPU暂时不能响应,中
断申请标志也不会丢失,直到 CPU响应此中断时才
清零。这样,为保证下降沿能被可靠地采样到,外
中断引脚上的高低电平(负脉冲的宽度)均至少要
保持一个机器周期 (若晶振为 12MHz时,为 1微
秒)。
边沿触发方式适合于以负脉冲形式输入的外部中
断请求,如 ADC0809的转换结束标志信号 EOC为
正脉冲,经反相后就可以作为 80C51的中断输入。