资源描述
微机原理及应用 第 4章 MCS-51单片机 的中断系统 4.1 中断的概念 中断是指在 CPU正在处理某项事务的时候, 如果外界或内部发生了紧急事件,要求 CPU暂 停正在运行的工作转而去处理这个紧急事件, 待处理完后再回到原来被中断的地方,继续原 来被打断了的工作的过程。中断是计算机中一 个很重要的概念,中断技术的引入使计算机的 发展和应用都大大地推进了一步。可以说:没 有中断技术,就没有目前计算机的广泛应用。 中 断 服 务 程 序 主 程 序 继 续 主 程 序 低 级 中 断 主 程 序 继 续 主 程 序 高 级 中 断 4.2 8051中断系统结构及中断控制 MCS-51系列单片机有 5个中断源和 其相应的控制寄存器。 1. 中断源 产生中断的请求源叫中断源 。 MCS-51系列单片机的 5个中断源 , 包括 2 个外部中断源 和 3个内部中断源 。 MCS-51系列单片机能提供 两个中断优先 级 , 实现 两级中断嵌套 。 振荡器和时序 OSC 程序存储器 4KB ROM 数据存储器 4KB RAM 64KB总线 扩展控制器 可编程 I/O 可编程全双工 串行口 8051 CPU 2 16位 定时器 /计数器 外时钟源 内中断 外中断 控制 并行口 串行通信 外部事件计数 1 MCS-51单片机总体构框图 2个外部中断源 是 外部中断 0和外部中断 1,相应的中断请求信 号输入端是 INT0和 INT1。 3个内部中断源 是 定时器 /计数器 0溢出中 断, 定时器 /计数器 1溢 出中断,串行口的发 送和接收中断 (TI和 RI)。 外部中断请求有两种触发方式: 电 平触发 和 边沿触发 。 电平触发 边沿触发 高 低 2. TCON寄存器 TCON是定时器 /计数器 0和 1( T0、 T1) 的控制寄存器 , 同时也用来 锁存 T0、 T1的 溢出中断申请标志 和 外部中断请求 标志 。 TCON (88H) D7 D6 D5 D4 D3 D2 D1 D0 TF1 TF0 IE1 IT1 IE0 IT0 定时器 /计数器 1 定时器 /计数器 0 溢出中断请求标 志 ,由硬件置位。 INT1、 INT0 请求标志, 由硬件置位。 INT1、 INT0触发方式控制位, 由软件置位或复位。 IT1=0时, INT1为电平触发, IT1=1为边 沿触发; IT0同理 (对应 INT0)。 3. SCON寄存器 SCON为串行口控制寄存器 , 其中的 低 2位用作 串行口中断请求 标志 。 4 . 在 MCS-51单片机中断系统中,中断的 允 许 或 禁止 是由片内的中断允许寄存器 IE控制 的。 IE (A8H) D7 D6 D5 D4 D3 D2 D1 D0 EA ES ET1 EX1 ET0 EX0 CPU中断允许标志位。 EA=0时,关中断; EA=1时,开中断。 串口 中断允许标志位。 EA=0时,关串口中断; EA=1时,开串口中断。 T1、 T0溢出中断 允许标志位。 ET1=0时,关 T1中断; ET1=1时,开 T1中断。 ET0同理 (对应 T0)。 外部 中断允许标志位。 EX1=0时,关 INT1中断; EX1=1时,开 INT1中断。 EX0同理 (对应 INT0)。 例:假设允许片内定时器 /计数器中断,禁 止其他中断,设置相应的 IE值。 MOV IE, #8AH 或 SETB ET0 SETB ET1 SETB EA 5 . MCS-51系列单片机的 中断优先级控制 是由 中断优先级寄存器 IP控制的。 IP (B8H) D7 D6 D5 D4 D3 D2 D1 D0 PS PT1 PX1 PT0 PX0 串口中断 T1中断 外部中断 1 T0中断 外部中断 0 优先级可以用软件进行设置,单片机复位 后, IP中的各位均被清 0。 例:设 8031的片外中断为高优先级,片内 中断为低优先级,设置 IP相应的值。 MOV IP, #05H 或 SETB PX0 SETB PX1 CLR PS CLR PT0 CLR PT1 MCS-51单片机中断系统应遵循的原则: 1、低优先级中断可被高优先级中断请求所中断,反之 则不能。 2、同级的中断请求不能打断已经执行的同级中断。 中断源 自然优先级 外部中断 0 最高 定时器 /计数器 0 外部中断 1 定时器 /计数器 1 串行口 最低 中断响应条件: 必须要有中断请求 中断源的中断允许位为 1(即 IE中的总允许位 EA 1,且 IE相应的中断允许位为 1) 无同级或高级中断正在服务 现行指令执行完最后一个机器周期。 4.3 中断响应过程 CPU在每个机器周期的 S5P2时刻采样 各中断源的中断请求信号 , 并将它锁存 在 TCON或 SCON中的相应位 。 在下一个 机器周期对采样到的中断请求标志进行 查询 。 如果查询到中断请求标志 , 则按 优先级高低进行中断处理 , 中断系统将 通过硬件自动将相应的中断矢量地址装 入 PC, 以便进入相应的中断服务程序 。 4.4 中断响应时间 在不同的情况下 CPU响应中断的时间是不同 的 。 以外部中断为例 , INT0和 INT1引脚的电平在 每个机器周期的 S5P2时刻经反相锁存到 TCON 的 IE0和 IE1标志位 , CPU在下一个机器周期才 会查询到新置入的 IE0和 IE1, 如果满足响应条 件 , CPU响应中断时要用两个机器周期执行一 条硬件长调用指令 “ LCALL”, 由硬件完成将中 断矢量地址装入程序指针 PC中 , 使程序转入中 断矢量入口 。 因此 , 从产生外部中断到开始执 行中断程序至少需要三个完整的机器周期 。 4.5 中断响应后中断请求的撤除 中断源提出中断申请 , 在 CPU响应此中断请 求后 , 该中断源之中断请求在中断返回之前应 当撤除 , 以免引起重复中断 , 被再次响应 。 对于 边沿触发的外部中断 , CPU在响应中断 后由 硬件自动清除 相应的中断请求标志 IE0和 IE1。 对于 电平触发的外部中断 , 必须 外加硬件 来 撤销中断请求 。 对于 定时器溢出中断 , CPU在响应中断后就 由 硬件消除 了相应的中断请求标志 TF0、 TF1。 对于 串行口中断 , CPU在响应中断后并不自 动清除中断请求标志 RI或 TI, 因此必须在 中断 服务程序中 用 软件 来 清除 。 中断系统应用举例: 外部中断源的扩展 INT0 装置 1 装置 2 装置 3 装置 4 8051 P1.4 P1.5 P1.6 P1.7 ORG 0003H LJMP INT0 INT0: PUSH PSW PUSH ACC JB P1.7, DV1 JB P1.6, DV2 JB P1.5, DV3 JB P1.4, DV4 GB: POP ACC POP PSW RETI DV1: AJMP GB DV2: AJMP GB DV3: AJMP GB DV4: AJMP GB 设计一个程序,能够实时显示 INT0引脚上出现的负跳变信 号的累计数。 主程序: ORG 0000H AJMP MAIN ORG 0003H AJMP IP0 ORG 0030H MAIN: MOV SP, #60H SETB IT0 SETB EA SETB EX0 MOV R7, #00H LP: ACALL DISP AJMP LP 中断服务子程序: IP0: INC R7 RETI 中断程序举例: 例: X1、 X2、 X3为 3个 故障输入,当系统 无 故障 时,它们全为 低 电平, 3个灯不亮;当 某部分出现 故障 时, 其对应的输入端由低 电平变为 高 电平,从 而引起单片机中断, 并点亮对应的发光二 极管。 主程序: ORG 0000H AJMP MAIN ORG 0003H AJMP SERVE MAIN: ORL P1, #0FFH ; P1口设初值,灯全灭 SETB IT0 ;选择边沿触发方式 SETB EX0 ;允许 INT0中断 SETB EA ;开 CPU中断 SJMP $ ;等待中断 中断服务子程序: SERVE: JNB P1.0, L1 ;若 X1无故障 (P1.0=0),跳到 L1 CLR P1.3 ;点亮 LED1 L1: JNB P1.1, L2 ;若 X2无故障,跳到 L2 CLR P1.4 ;点亮 LED2 L2: JNB P1.2, L3 ;若 X3无故障,跳到 L3 CLR P1.5 ;点亮 LED3 L3: RETI
展开阅读全文