Transcript 第五章单片机的中断系统
第5章 单片机的中断系统 本章的主要内容 MCS-51单片机中断源的种类及工作方式 中断控制寄存器IE、中断优先级寄存器IP 及定时器/计数器及外部中断控制寄存器TCON的使 用方法 MCS-51型单片机中断响应过程 外部中断的结构及原理 熟练编制中断服务程序 5.1 中断系统的概述 5.1.1 中断的概念 主程序 中断响应 执行 中断请求 断点 继续 执行 执行 中断 处理 中断返回 5.1.2 中断的功能 1.实现中断及返回 2.能实现优先权排队 3.能实现中断嵌套 5.2 中断请求 5.2.1 中断源 1.中断源分类 五个中断源,分别是 外部中断0: INT0,由P3.2提供, 外部中断1: INT1,由P3.3提供, 外部中断有两种信号方式,即电 平方式和脉冲方式。 T0溢出中断; 由片内定时/计数器0提供 T1溢出中断; 由片内定时/计数器1提供 串行口中断RI/TI; 由片内串行口提供 2 中断请求 中断源开放 0 INT 0 1 中断开放 EX 0 IT 0 PT 0 1 0 INT1 1 EX 1 IT1 PX 1 IE 中断源 中断 向量 1 0 ET 1 PT 1 TF1 T1 高级中断 请求 0 ET 0 0 查询硬件 PX 0 IE 0 TF 0 中断优先 级寄存器 1 1 0 低级中断 请求 1 ES PS R1 0 EA 中断源 中断 向量 3.中断源入口地址 中断源 入口地址 INT0 T0 INT1 T1 RI/TI 0003H 000BH 0013H 001BH 0023H 5.2.2中断寄存器 在中断请求被响应前,中断请求是由CPU锁存在 特殊功能寄存器TCON和SCON相应中断标志位中。 与中断控制有关的控制寄存器有四个: TCON ---IE ---- 定时控制寄存器, 中断允许控制寄存器, IP ---- 中断优先级控制寄存器, SCON ----及串行口控制寄存器。 1.中断允许控制寄存器IE D7 D6 EA D5 D4 D3 D2 D1 ES ET1 EX1 ET0 EX0 0 禁止,1允许 D0 2.中断优先级的设定 基本原则是: (1)高优先级不能被低优先级中断; (2)低优先级可被高优先级中断。 (3)任何一种中断(不管是高级还是低级), 一旦得到响应,不会再被它的同级中断所中断。 (4)两个同一级的中断源同时向CPU发出中断 申请,CPU通过内部硬件查询,按自然优先级确 定优先响应哪一个中断要求 中断优先级控制寄存器(IP) D7 D6 D5 D4 D3 D2 D1 D0 PS PT1 PX1 PT0 PX0 PS: 串行口中断优先级控制位。 PT1:定时计数器T1中断优先级控制位。 PX1:外部中断1中断优先级控制位。 PT0:定时计数器T0中断优先级控制位。 PX0:外部中断0中断优先级控制位。 注意:单片机复位后,IP寄存器被清0,所有中断源为 低级中断。 3. 定时控制寄存器TCON D7 D6 D5 D4 D3 D2 D1 D0 TF1 TF0 IE1 IT1 IE0 IT0 1)TCON.7 TF1:T1溢出中断标志。T1被启动计数后,从初值 开始加1计数,直至计满溢出由硬件使TF1=1,向CPU请求中断, 此标志一直保持到CPU响应中断后,才由硬件自动清“0”。也可 用软件查询该标志,并由软件清“0”。 2)TCON.5 TF0:T0溢出中断标志。其操作功能类似于TF1。 3)TCON.3 IE1:外部中断1标志。IE1=1表明外部中断1向 CPU申请中断。 4)TCON.1 IE0:外部中断0标志。其操作功能与IE1类似。 4. 串行口控制寄存器SCON D7 D6 D5 D4 D3 D2 D1 D0 TI RI 说明:SCON.1 TI:串行发送中断标志。CPU将一个 字节数据写入发送缓冲器SBUF后启动发送,每发送完一 个串行帧,硬件置位TI。但CPU响应中断后,并不能自 动清除TI标志,必须由软件清除。 5.3 中断处理过程 中断处理过程分为三个阶段:中断响应、 中断处理和中断返回。 中断响应 中断处理(又称中断服务) 中断返回 中断请求的撤除 应 响 断 中 中 断 返 回 5.3.1 中断处理过程 1.CPU的中断响应条件 ① 无同级或高级中断正在服务; ② 当前指令周期结束,如果查询中断请求的机器 周期不是当前指令的最后一个周期,则不行; ③ 若现行指令是RETI、RET或访问IE、IP指令, 则需要执行到当前指令及下一条指令响应。 2.响应过程 ① 置位中断优先级有效触发器,即关闭同级 和低级中断: ② 调用入口地址,断点入栈,相当于LCALL 指令; ③ 进入中断服务程序。 响应时间--从查询中断请求标志位到转向中断服 务入口地址所需的机器周期数。 (1)最快响应时间 以外部中断的电平触发为最快。 从查询中断请求信号到中断服务程序需要三 机器周期: 1个周期(查询)+2个周期(长调用LCALL) (2)最长时间 若当前指令是RET、RETI和IP、IE指令,紧接 着下一条是乘除指令发生,则最长为8个周期。 5.3.2 中断处理 中断处理(又称中断服务),程序从入口地址 开始执行,直到返回指令“RETI”为止,这个过 程称为中断处理。 包括两部分内容: (1)保护现场, (2)处理中断源的请求。 中断处理过程示意图 中断源发中断请求 N 中断响应条件 是否满足? Y Y 中断是否受阻? N 把PC断点地址压入堆栈 相应中断源的中断入口地址 送入PC,转向中断服务程序 由硬件 自动完成 关中断 中 断 服 务 程 序 保护现场 保护现场和 恢复现场的 过程中不允 许中断,以 免现场遭到 破坏。 开中断 中断服务 关中断 保护和恢复现场之后 的开中断是为了允许 有更高级中断打断此 中断服务程序。 恢复现场 开中断 中断返回 断点地址由堆栈弹入PC 硬件自 动完成 中断处理 INTT0: PUSH ACC PUSH DPH PUSH DPL PUSH 保护现场 PSW 中断源服务 POP PSW POP DPL POP DPH POP ACC RETI 恢复现场 5.3.2 中断返回 中断返回是指中断服务完 应 响 断 中 中 断 返 回 后,计算机返回到原来暂停 的位置(即断点),继续执行 原来的程序。 中断返回由专门的中断 返回指令RETI来实现。 5.4 外部中断的触发方式 外部中断的方式选择是通过定时/计数器及外部 中断控制寄存器TCON中的标志位选择的。 1)TCON.2 IT1:外部中断1触发方式控制位。 当 IT1=0,外部中断1为电平触发方式。 若IT1=1,外部中断1控制为边沿触发方式。 2)TCON.0 IT0:外部中断0触发方式控制。 5.5 中断源的扩展 举例:利用单片机扩展5个外部中断源,中断 的优先次序为X0~X4,其中X0接到外部中断上, X1~X4接到外部中断上;单片机的P1.4~P1.7接 4个发光二极管用来作输出指示; (1) 当有X1~X4其中一个外部中断发生时,相 应的发光二极管D1~D4点亮; (2) 当X0外部中断发生时,4个发光二极管全 亮。 ORG AJMP 0000H MAIN ORG 0003H AJMP ZHD0 ORG 0013H AJMP ZHD1 ORG 0030H MAIN:MOV SP,#70H ;中断0服务程序入口地址 ;中断1服务程序入口地址 ;设置堆栈指针 SETB IT0 ; 外部中断0为边沿触发方式 SETB IT1 ;外部中断1为边沿触发方式 MOV IP,#00000001B MOV IE,#10000101B MOV A,#0FFH ;外部中断0为 ;开放外部中断0,1 ;关闭发光二极管 MOV P1,A LOOP: AJMP LOOP ZHD0: PUSH PSW PUSH A MOV A,#0FH MOV P1,A POP A POP PSW RETI ZHD1: PUSH PSW PUSH A ORL P1,#0FH JNB P1.0,IN1 的中断服务程序 ;保护现场 ;4个发光二极管全亮 ;恢复现场 ;中断返回 ;保护现场 ;读取P1口的低4位 ;中断源查询,并转向相应 FH1: IN1: IN2: IN3: JNB P1.1,IN2 JNB P1.2,IN3 JNB P1.3,IN4 POP A POP PSW RETI MOV A,#11101111B MOV P1,A AJMP FH1 MOV A,#11011111B MOV P1,A AJMP FH1 MOV A,#10111111B MOV P1,A AJMP FH1 ;恢复现场 ;中断服务程序1 ;D1发光二极管亮 ;中断服务程序2 ;D2发光二极管亮 ;中断服务程序3 ;D3发光二极管亮 IN4:MOV A,#01111111B MOV P1,A AJMP FH1 END ;中断服务程序4 ;D4发光二极管亮 5.6 中断请求的撤除 CPU响应某中断请求后,在中断返回前,应该撤 除该中断请求,否则会引起另一次中断。 定时器0或1溢出:CPU在响应中断后,硬件清除 了有关的中断请求标志TFO或TF1,即中断请求是 自动撤除的。 串行口中断:CPU响应中断后,没有用硬件清除 T1、R1,要靠软件来清除相应的标志。 边沿激活的外部中断:CPU在响应中断后,也是 用硬件自动清除有关的中断请求标志IE0或IE1。 电平激活的外部中断源中断标志撤除 电平触发外部中断撤除方法较复杂。 因为在电平触发方式中,CPU响应中断 时不会 自动清除IE1或IE0标志,所以在响应中断后应立即 撤除INT0或INT1引脚上的低电平。 在硬件上,CPU对INT0和INT1引脚的信号不能控 制,所以这个问题要硬件软件来配合解决。 撤除外部电平请求信号的方案( 参见P124 图5-7) ANL ORL P1,#0FEH P1,#01H CLR P1.0 D型触发器 外部 设备 D Q CP SD MCS-51 SETB P1.0 INTX P1 .0 服务程序 主体 RETI 硬件电路部分 中断服务程序 由图可知,外部中断请求信号不直接加 INT 或 INT 1 0 引脚上,而是加在D触发器的CLK端。由于D端接地,当外 部中断请求的正脉冲信号出现在CLK端时,Q端输出为0, INT0 或 INT1为低,外部中断向单片机发出中断请求。利用 P1口的P1.0作为应答线,当CPU响应中断后,可在中断服务 程序中采用两条指令: ANL P1,#0FEH ORL P1,#01H 来撤除外部中断请求。第一条指令使P1.0为0,因 P1.0与D触发器的异步置1端SD相连,Q端输出为1,从 而撤除中断请求。第二条指令使P1.0变为1,SD = 1, 无效,Q继续受CLK控制,即新的外部中断请求信号又 能向单片机申请中断。第二条指令是必不可少的,否 则,将无法再次形成新的外部中断。 采用定时器(T0,T1)中断,其中断请求的撤除 由硬件自动完成,无须采取其它措施。 5.7 中断初始化 中断系统初始化步骤如下: ⑴ 开相应中断源的中断; ⑵ 设定所用中断源的中断优先级; ⑶ 若为外部中断,则应规定低电平还 是负边沿的中断触发方式。 【例1】请写出 INT1 为低电平触发的中断系统初始 化程序。 ①采用位操作指令 SETB EA SETB EX1 ;开外部中断1 SETB PX1 ;令外部中断1为高优先级 CLR IT1 ;令外部中断1为电平触发 ②采用字节型指令 MOV IE,#84H ;开外部中断1中断 ORL IP,#04H ;令为外部中断1高优先级 ANL TCON,#0FBH ;令外部中断1为电平触发 IE ( A8H) IP ( B8H) EA ES ET1 EX1 ET0 EX0 PS PT1 PX1 PT0 PX0 SCON 98H TCON 88H TF1 TR1 TF0 TR0 IE1 IT1 TI RI IE0 IT0 5.8 外部中断的系统设计应用 举例:外设数据经P1口输入单片机,每准备好一个数 据,外设发出选通信号,经触发器和非门至INT0。 数据传送过程: P1口 数据 P3.0 INT0 8031 1 Q CLR D CLK +5V 选通信号 1. 选通信号有 效,发中断 请求; 2. 执行中断读 取数据,同 时将中断请 求撤除 (P3.0=0,使 INT0=1) ORG 0000H START:LJMP MAIN ORG 0003H LJMP IINT0 ORG 0030H ;主程序 MAIN: CLR IT0 ;低电平触发 SETB EA SETB EX0 ;开中断 MOV DPTR,#1000H ... IINT0: PUSH PSW PUSH ACC CLR P3.0 NOP NOP SETB P3.0 MOV A,P1 MOVX @DPTR,A INC DPTR ... POP ACC POP PSW RETI ;中断处理程序 ;撤除INT0 ;输入数据 ;保存数据 ;恢复现场 ;返回主程序