1、第七章 AT89S52单片机中断系统,1,第七章 AT89S52单片机中断系统,7.1 中断概述 7.2 中断系统结构与中断控制 7.3 中断响应 7.4 中断请求的撤除 7.5 外部中断源的扩展 7.6 中断程序设计,第七章 AT89S52单片机中断系统,2,7.1中断概述,1.中断系统的概念 2.单片机中断系统需要解决的问题 3中断的主要功能 4实际应用中需注意的问题,return,第七章 AT89S52单片机中断系统,3,1.中断系统的概念,(1) 中断 (2) 中断源 (3) 中断优先级 (4) 中断识别方式 (5) 中断的其它概念,第七章 AT89S52单片机中断系统,4,(2)中断
2、源,中断源通常可分为以下几种: 设备中断 定时中断 故障源中断 程序性中断源,第七章 AT89S52单片机中断系统,5,(4) 中断识别方式,一般设有两种识别方式: 查询中断 矢量中断。,第七章 AT89S52单片机中断系统,6,(5) 中断的其它概念,中断请求、中断标志、中断允许、中断入口地址(中断矢量)、中断嵌套、中断保护、中断服务程序、中断源清除、中断屏蔽、中断返回、中断等待 。,第七章 AT89S52单片机中断系统,7,7.2中断系统结构与中断控制,7.2.1 AT89S52的中断源 7.2.2 中断标志与控制,return,第七章 AT89S52单片机中断系统,8,7.2.1 AT8
3、9S52的中断源,第七章 AT89S52单片机中断系统,9,3中断触发方式,.电平触发方式 .下降沿触发方式,第七章 AT89S52单片机中断系统,10,7.2.2 中断标志与控制,单片机设置了5个专用寄存器用于中断控制,用户通过设置其状态来管理中断系统。5个专用寄存器包括: 定时器/计数器0,1控制寄存器TCON; 定时器2控制寄存器T2CON; 串行口控制寄存器SCON; 中断允许控制寄存器IE; 中断优先级控制寄存器IP。,第七章 AT89S52单片机中断系统,11,1定时器/计数器0,1控制寄存器TCON,TF1(TCON7)T1计数溢出,由硬件置位,响应中断时由硬件复位。不用中断时用
4、软件清0。 TF0(TCON5)T0计数溢出,由硬件置位,响应中断时由硬件复位。不用中断时用软件清0。 IE1(TCON3)IE11时,外部中断1向CPU申请中断。 IE0(TCONl)IE01时,外部中断0向CPU申请中断。 IT1(TCON2)为INT1的中断申请触发方式控制位。 IT0(TCON0)为INT0的中断申请触发方式控制位。,第七章 AT89S52单片机中断系统,12,2定时器2控制寄存器T2CON,TF2 定时器2溢出中断标志 EXF2定时器2外部中断请求标志,第七章 AT89S52单片机中断系统,13,3串行口控制寄存器SCON,串行口控制寄存器SCON字节地址为98H,其
5、格式如下:低两位锁存接收中断源RI和发送中断源TI。 TI(SCON1):串行口发送中断源。发送完一帧,由硬件置位。响应中断后,必须用软件清 0。(CLR TI) RI(SCON0):串行口接收中断源。接收完一帧,由硬件置位。响应中断后,必须用软件清0。(CLR RI),第七章 AT89S52单片机中断系统,14,4中断允许控制寄存器IE,IE寄存器中各位设置:为0时,禁止中断;为1时,允许中断。 系统复位后IE寄存器中各位均为0,此时禁止所有中断。,第七章 AT89S52单片机中断系统,15,与中断有关的控制位共6位,即: EX0(IE0)外部中断0中断允许位。 ET0(IE1)T0中断允许
6、位。 EX1(IE2)外部中断1中断允许位。 ET1(IE3) T1中断允许位。 ES(IE4) 串行口中断允许位。 EA(IE7)CPU中断允许位。 当EA1时,允许所有中断开放,总允许后,各中断的允许或禁止由各中断源的中断允许控制位进行设置; 当EA0时,屏蔽所有中断。,第七章 AT89S52单片机中断系统,16,5中断优先级控制寄存器IP,总共2个优先级 XX为1 高优先级 XX为0低优先级,第七章 AT89S52单片机中断系统,17,中断优先顺序,第七章 AT89S52单片机中断系统,18,以上所述可归纳为如下基本规则 任一中断源的高或低优先级中断均可通过软件对IP的相应位进行设置。
7、不同优先级中断源同时请求中断时,优先响应高优先级的中断请求,高优先级中断请求可中断正在执行中的低优先级的服务程序,实现两级嵌套,同级或低优先级中断请求不能实现中断嵌套。 同一优先级的多个中断源同时请求中断时按优先顺序查询确定,优先响应顺序高的中断。,第七章 AT89S52单片机中断系统,19,7.3 中断响应,7.3.1 中断响应条件 7.3.2 中断响应过程 7.3.3 中断响应时间,return,第七章 AT89S52单片机中断系统,20,7.3.1 中断响应条件,无同级或高优先级中断服务程序正在执行中; 当前指令已执行到最后一个机器周期并已结束; 当前正在执行的不是返回(RET,RETI
8、)指令或访问IE,IP特殊功能寄存器指令。,第七章 AT89S52单片机中断系统,21,7.3.2 中断响应过程,1.中断采样 2.中断查询 3.中断响应,第七章 AT89S52单片机中断系统,22,7.3.3 中断响应时间,从中断源发出中断请求,到CPU响应中断请求转向对应的中断服务程序开始执行所需要的时间,称为中断响应时间 从中断源发出中断请求到CPU响应中断、转去执行中断服务程序需38个机器周期。,第七章 AT89S52单片机中断系统,23,7.4 中断请求的撤除,中断请求撤除的方式有三种: 1由单片机内部硬件自动复位 2应用软件清除相应标志 3采用外加硬件结合软件清除中断请求,retu
9、rn,第七章 AT89S52单片机中断系统,24,7.5 外部中断源的扩展,7.5.1 采用“OC门”经“线或”后实现 7.5.2 通过片内定时/计数器来实现,return,第七章 AT89S52单片机中断系统,25,7.5.1 采用“OC门”经“线或”后实现,图7.6.1 外部中断源的扩展电路,第七章 AT89S52单片机中断系统,26,27,7.5.2 通过片内时/计数器来实现,利用T0或T1的外部事件输入引脚T0、T1作为边沿触发的外部中断源。应设置定时/计数器为计数器方式,而计数常数为满刻度值。外部输入的脉冲在下降沿时有效,计数器加1后即溢出,向CPU申请中断。 (8位设置为FFH),
10、第七章 AT89S52单片机中断系统,28,例:把外部中断请求信号2连到T1引脚上,定时器/计数器1设为方式2,即8位自动重装载方式,时间常数设为满刻度值FFH。外部中断的服务程序入口地址存放在T1的中断矢量区中。,第七章 AT89S52单片机中断系统,29,ORG 0000HAJMP MAINORG 001BH ;T1中断矢量用作外部中断2的中断矢量LJMP INT2ORG 0030H MAIN:MOV TMOD,#60H ;设T1计数器方式2MOV TL1,#0FFH ;置T1计数常数MOV TH1,#0FFHSETB EA ;开中断SETB ET1 ;允许计数器1中断SETB TR1 ;
11、启动计数- INT2: - ;外部中断2服务程序,第七章 AT89S52单片机中断系统,30,7.6 中断程序设计,return,第七章 AT89S52单片机中断系统,31,步骤,1. 主程序中的中断初始化 2. 中断响应与中断服务程序,第七章 AT89S52单片机中断系统,32,1. 主程序中的中断初始化,(1)初始化状态设置 (2) 开中断 (3) 中断服务程序的前期初始化,第七章 AT89S52单片机中断系统,33,2. 中断响应与中断服务程序,(1) 中断响应 (2) 中断转移 (3) 中断服务 (4) 中断返回,第七章 AT89S52单片机中断系统,34,中断服务,主程序的资源保护。
12、 中断源的清除。 关中断。,第七章 AT89S52单片机中断系统,35,3. 中断程序设计实例,例7.2 编写外部键输入的中断操作演示程序。要求:按图7.7.2所示电路,根据K0、K1按键的状态,点亮L1、L2。按下K0点亮L0片刻,按下K1后点亮L1片刻。,例7.7.2 电路,第七章 AT89S52单片机中断系统,36,解:(1)设计思路 这是一个两路外部中断输入演示电路,按下K0、K1都会立即中断原来的操作,来点亮L0或L1。中断初始化包括:保证L0、L1为熄灭状态。设为的触发方式。根据按键输入信号特点,选电平触发方式。设中断优先级。假定、都设为低优先级。,第七章 AT89S52单片机中断
13、系统,37,(2) 中断应用程序设计包括主程序设计和中断服务程序 主程序清单:ORG 0000HLJMP MKL ;-ORG 0003H ;中断入口地址LJMP KL0 ;中断入口转移 ;- ORG 0013H ;中断入口地址LJMP KL1 ;中断入口转移data0 EQU H ;data0赋值data1 EQU H ;datal赋值,第七章 AT89S52单片机中断系统,38,ORG 0100H MKL: ORL P1,03H ;熄灭L0,L1ANL TCON,00H ;置、电平触发方式ANL IP,0FCH ;置、低优先级MOV IE,85H ;开CPU中断,开、中断,初始化程序,第七章
14、 AT89S52单片机中断系统,39,中断服务程序清单: ORG 2000H KL0: CLR P1. 0 ;点亮L0MOV R7,data0 ;延时数据;data0写入R7LCALL DELAY;调延时子程序SETB P1. 0 ;熄灭L0RETI ;中断返回,第七章 AT89S52单片机中断系统,40,中断服务程序:ORG 3000H KL1: CLR P1. 1 ;点亮L1MOV R7,data1 ;延时数;据写入R7LCALL DELAY;调延时子程序SETB P1. 1 ;熄灭L1RETI ;中断返回,第七章 AT89S52单片机中断系统,41,延时子程序:ORG 3200H DEL
15、AY:MOV R6,0FFH TM1: MOV R5,0FFHTM0: DJNZ R5,TM0DJNZ R6,TM1DJNZ R7,DELAYRET,第七章 AT89S52单片机中断系统,42,谢谢!,第七章 AT89S52单片机中断系统,43,中断程序的示例,编程如下: ORG 0000HSJMP MAINORG 0003HLJMP INT0INT ;设外部中断/INT0中断矢量ORG 0013HLJMP INT1INT ;设外部中断/INT1中断矢量ORG 0023HLJMP SIOINT ;设串行口中断矢量ORG 0030H MAIN: MOV IP,#00010001B ;设外部中断INT0和 ;串行口中断为高优先级MOV IE#10010101B;允许INT0、INT1、 ;串行口中断,开CPU中断 ,第七章 AT89S52单片机中断系统,44,外部中断子程序,INT0INT : PUSH PSW ;设外部中断子程序PUSH ACCPUSH BPUSH DPTL PUSH DPTH POP DPTH POP DPTL POP B POP ACC POP PSW RETI,