第 7章 中 断
80C51中的中断结构7.3
最简单且的中断情况7.2
引 言7.1
中断处理中需要考虑的一些问题7.4
7.1 引 言
7.1.1 为什么要用中断
中断的出现,会带来以下好处。
( 1)同步操作
有了中断功能,就可以使 CPU和外设同时工作。
( 2)实现实时处理
当计算机用于实时控制时,中断是一个十分重要的功能。现场的各个参数、信息,根据需要,可在任何时间发出中断请求,要求 CPU处理; CPU一旦接收到中断请求,就可以马上响应(若中断是开放的话),加以处理。这样的及时处理在查询的工作方式下是做不到的。
( 3)故障处理
计算机在运行过程中,往往会出现事先预料不到的情况或出现一些故障,如电源掉电、存储出错、运算溢出等。计算机可以利用中断系统自行处理,而不必停机或报告工作人员。
7.1.2 中断源
通常中断源有以下几种。
① 一般的输入 /输出设备,如键盘、行打印机等。
② 数据通道中断源,如磁盘、磁带等。
③ 实时时钟。在控制中,常要遇到时间控制,若用前面介绍的用 CPU执行一段程序来实现延时的方法,则在这段时间内,
CPU不能做别的工作,降低了 CPU的利用率。
④ 故障源。
⑤ 为调试程序而设置的中断源。
7.1.3 中断系统的功能
( 1)实现中断及返回
( 2)能实现优先权排队
( 3)高级中断源能中断低级的中断处理
7.2 最简单的中断情况
7.2.1 CPU响应中断的条件
( 1)设置中断请求触发器
( 2)设置中断屏蔽触发器
( 3)中断是开放的图 7-1 设置中断请求的情况图 7-2 具有中断屏蔽的接口电路图 7-3 中断响应流程图
7.2.2 CPU对中断的响应
( 1)关中断
( 2)保留断点
( 3)保护现场
( 4)给出中断入口,转入相应的中断服务程序
( 5)恢复现场
( 6)开中断与返回图 7-4 中断响应、服务及返回流程图
7.3 80C51中的中断结构
7.3.1 中断启用图 7-5 MCS-51中断源图 7-6 80C51中的 IE(中断启用)寄存器
7.3.2 中断优先权图 7-7 80C51中的 IP(中断优先级)寄存器
7.3.3 中断如何处理
在操作中,所有中断标志在每个机器周期的 S5P2期间被采样。在下一个机器周期期间查询采样。若找到一启用的中断的标志已设置,中断系统生成一 LCALL至在程序存储器中的适当单元,至中断服务例程的 LCALL的生成,由以下 3个条件中的任一个阻断:
① 相同的或更高优先级的中断已经在处理中;
② 当前(查询)的周期不是正在处理中的指令执行的最后周期;
③ 在处理中的指令是 RETI或任一写至
IE或 IP寄存器的指令。
图 7-8 80C51中断控制系统图 7-9 中断响应时序图
7.3.4 80C51中与中断相关的寄存器表 7-1 80C51中与中断功能相关的寄存器
1,定时器 /计数器控制寄存器 TCON
位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IT0:外部中断 INT0触发方式选择位。可由用户用软件选择。
IT0=1:设定外部中断引脚信号为下降沿触发方式。
IT1:外部中断 INT1触发方式选择位,其功能类似于 IT0。
IE0:外部中断 INT0触发有效标志位。
IE1:外部中断 INT1触发有效标志位,其功能类似于 IE0。
2,串行口控制寄存器 SCON
位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0
SM0 SM1 SM2 REN TB8 RB8 TI RI
RI:串行口接收到一帧数据的中断标志位。
TI:串行口发送完一帧数据的中断标志位。
7.3.5 外部中断
80C51有两条外部中断请求引线 INT0
与 INT1。它们能由设置或清除在寄存器
TCON中的 IT0或 IT1位,选择是由电平激活或跳变激活。
若 ITx=0,外部中断 x由在引脚上检测到低电平时请求中断。若 ITx=1,外部中断是跳变触发的。在此方式,若在引脚连续采样,在一个周期显示为高而在下一周期显示为低,在 TCON中的中断请求标志 IEx
设置。然后,标志位 IEx请求中断。
7.3.6 响应时间
与电平反向并在每个机器周期的 S5P2
锁存至中断标志 IE0与 IE1。类似地,定时器 2标志 EXF2和串行端口标志 RI与 TI在
S5P2设置。在下一机器周期前电路不实际查询值。
定时器 0与定时器 1标志为 TF0与 TF1,
在定时器溢出周期的 S5P2设置。然后其值在下一周期由电路查询。然而,定时器 2标志 TF2是在 S2P2设置且在定时器溢出的同一周期内被查询。
若请求有效且响应的条件正确,至请求的服务例程的硬件子例程调用将是下一条要执行的指令。 CALL自己需要两个周期。
因此,在外部中断请求的激活与服务例程的第一条指令的执行开始之间,至少需要 3
个完整的机器周期。图 7-9所示为中断响应时序。
若请求被前面所列的 3个条件之一阻断,
将会需要更长的响应时间。若相等的或更高优先级的中断已经在处理中,附加的等待时间明显地取决于其他中断服务例程的性质。
若在处理中的指令不是在最后的周期,
附加的等待时间不会大于 3个周期,因为最长的指令( MUL与 DIV)只是 4个周期。
若在处理的指令是 RETI,或访问 RI或
TI,附加的等待时间不会多于 5个周期(最多用一个周期完成正在处理中的指令,加上若指令是 MUL或 DIV完成下一条指令的 4
周期)。
因此,在单中断系统中,响应时间始终是大于 3周期与小于 9周期。
7.4 中断处理中需要考虑的一些问题
1.中断向量安排
2,中断允许
3,中断请求
4.中断响应
一种中断被响应的必要条件是:
① 中断源发出中断请求;
② IE中的总的中断允许位置位;
③ IE中此类中断对应的中断允许位置位。
5,保护现场
6.中断嵌套
7.中断处理
8.恢复现场
9.撤销中断请求
10.中断返回