《【教学课件】第5章单片机的中断系统.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第5章单片机的中断系统.ppt(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第第5 5章章 单片机的中断系统单片机的中断系统 本章的主要内容本章的主要内容n n MCS-51MCS-51MCS-51MCS-51单片机中断源的单片机中断源的单片机中断源的单片机中断源的种类及工作方式种类及工作方式种类及工作方式种类及工作方式n n 中断控制寄存器中断控制寄存器中断控制寄存器中断控制寄存器IEIEIEIE、中断优先级寄存器中断优先级寄存器中断优先级寄存器中断优先级寄存器IPIPIPIP 及定时器及定时器及定时器及定时器/计数器及外部中断控制寄存器计数器及外部中断控制寄存器计数器及外部中断控制寄存器计数器及外部中断控制寄存器TCONTCONTCONTCON的使的使的使的使
2、用方法用方法用方法用方法n n MCS-51 MCS-51 MCS-51 MCS-51型单片机型单片机型单片机型单片机中断响应过程中断响应过程中断响应过程中断响应过程n n 外部中断外部中断外部中断外部中断的结构及原理的结构及原理的结构及原理的结构及原理n n 熟练编制熟练编制熟练编制熟练编制中断服务程序中断服务程序中断服务程序中断服务程序5.1.1 中断的概念中断的概念 执行执行主程序主程序继续继续执行执行断点断点中断请求中断请求中断响应中断响应执行执行中断中断处理处理中断返回中断返回5.1 中断系统的概述中断系统的概述 5.1.2 5.1.2 中断的功能中断的功能 n1 1实现中断及返回实
3、现中断及返回n2 2能实现优先权排队能实现优先权排队 n3 3能实现中断嵌套能实现中断嵌套 5.25.2.1 1 中断源中断源 1.1.中断源分类中断源分类 五个中断源,分别是五个中断源,分别是 外部中断外部中断0:0:INT0 INT0,由,由P3.2P3.2提供,提供,外部中断外部中断1:1:INT1 INT1,由,由P3.3P3.3提供,提供,外部中断有两种信号方式,即电平外部中断有两种信号方式,即电平方式和脉冲方式。方式和脉冲方式。T0 T0溢出中断;溢出中断;由片内定时由片内定时/计数器计数器0 0提供提供 T1T1溢出中断;溢出中断;由片内定时由片内定时/计数器计数器1 1提供提供
4、 串行口中断串行口中断RI/TIRI/TI;由片内串行口提供由片内串行口提供5.2 5.2 中断请求中断请求 2 2 中断请求中断请求中断请求中断请求 3.3.中断源入口地址中断源入口地址 中断源中断源 入口地址入口地址 INT0 0003 T0 000BH INT1 0013H T1 001BH RI/TI 0023H5.2.25.2.2中断寄存器中断寄存器 n在在中中断断请请求求被被响响应应前前,中中断断请请求求是是由由CPUCPU锁锁存存在在特殊功能寄存器特殊功能寄存器TCONTCON和和SCONSCON相应中断标志位中。相应中断标志位中。与中断控制有关的控制寄存器有四个:与中断控制有关
5、的控制寄存器有四个:TCON -定时控制寄存器定时控制寄存器,IE -中断允许控制寄存器,中断允许控制寄存器,IP -中断优先级控制寄存器,中断优先级控制寄存器,SCON -及串行口控制寄存器及串行口控制寄存器。1 1中断允许控制寄存器中断允许控制寄存器IEIE D7D6D5D4D3D2D1D0EAESET1EX1 ET0 EX00 0 禁止,禁止,1 1允许允许2中断优先级的设定中断优先级的设定 n 基本原则是:基本原则是:(1)高优先级不能被低优先级中断;)高优先级不能被低优先级中断;(2)低优先级可被高优先级中断。)低优先级可被高优先级中断。(3)任任何何一一种种中中断断(不不管管是是高
6、高级级还还是是低低级级),一旦得到响应,不会再被它的同级中断所中断。一旦得到响应,不会再被它的同级中断所中断。(4)两个同一级的中断源同时向)两个同一级的中断源同时向CPU发出中断发出中断申请,申请,CPU通过内部硬件查询,按自然优先级确通过内部硬件查询,按自然优先级确定优先响应哪一个中断要求定优先响应哪一个中断要求 nPSPS:串行口中断串行口中断优先级控制位。优先级控制位。nPT1PT1:定时计数器定时计数器T1T1中断优先级控制位。中断优先级控制位。nPX1PX1:外部中断外部中断1 1中断中断优先级控制位。优先级控制位。nPT0PT0:定时计数器定时计数器T0T0中断中断优先级控制位。
7、优先级控制位。nPX0PX0:外部中断:外部中断0 0中断中断优先级控制位。优先级控制位。注意:注意:单片机复位后,单片机复位后,IPIP寄存器被清寄存器被清0 0,所有中断源为,所有中断源为低级中断。低级中断。中断优先级控制寄存器(中断优先级控制寄存器(IPIP)D7D6D5D4D3D2D1D0PSPT1 PX1 PT0 PX03.3.定时控制寄存器定时控制寄存器TCONTCON D7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0TF1TF1TF0TF0IE1IE1 IT1IT1 IE0IE0 IT0IT01)TCON7 TF1:T1溢溢出出中中断断标标志志。T1被被启启动动计
8、计数数后后,从从初初值值开开始始加加1计计数数,直直至至计计满满溢溢出出由由硬硬件件使使TF1=1,向向CPU请请求求中中断断,此此标标志志一一直直保保持持到到CPU响响应应中中断断后后,才才由由硬硬件件自自动动清清“0”。也也可可用软件查询该标志,并由软件清用软件查询该标志,并由软件清“0”。2)TCON5 TF0:T0溢出中断标志。其操作功能类似于溢出中断标志。其操作功能类似于TF1。3)TCON3 IE1:外外部部中中断断1标标志志。IE1=1表表明明外外部部中中断断1向向CPU申请中断。申请中断。4)TCON1 IE0:外部中断:外部中断0标志。其操作功能与标志。其操作功能与IE1类似
9、。类似。4.4.串行口控制寄存器串行口控制寄存器SCONSCON D7 D6 D5 D4 D3 D2 D1 D0TIRI 说明:说明:SCONSCON1 TI1 TI:串行发送中断标志。:串行发送中断标志。CPUCPU将一个将一个字节数据写入发送缓冲器字节数据写入发送缓冲器SBUFSBUF后启动发送,后启动发送,每发送完一每发送完一个串行帧,硬件置位个串行帧,硬件置位TITI。但。但CPUCPU响应中断后,并不能自响应中断后,并不能自动清除动清除TITI标志,必须标志,必须由软件清除由软件清除。5.3 中断处理过程中断处理过程 中断处理过程分为三个阶段:中断处理过程分为三个阶段:中断响应、中断
10、响应、中断处理和中断返回。中断处理和中断返回。v 中断响应中断响应v 中断处理中断处理(又称中断服务又称中断服务)v 中断返回中断返回v 中断请求的撤除中断请求的撤除 中断响应中断返回 5.3.1 5.3.1 中断处理过程中断处理过程 1 1CPUCPU的中断响应条件的中断响应条件 无同级或高级中断正在服务;无同级或高级中断正在服务;当前指令周期结束当前指令周期结束,如果查询中断请求的机器,如果查询中断请求的机器 周期不是当前指令的最后一个周期,则不行;周期不是当前指令的最后一个周期,则不行;若现行指令若现行指令是是RETIRETI、RETRET或或访问访问IEIE、IPIP指令,指令,则需要
11、执行到当前指令及下一条指令响应。则需要执行到当前指令及下一条指令响应。n n 2.2.响应过程响应过程n 置位中断优先级有效触发器,即置位中断优先级有效触发器,即关闭同级关闭同级和低级中断:和低级中断:n 调用入口地址,断点入栈,调用入口地址,断点入栈,相当于相当于LCALLLCALL指令;指令;n 进入进入中断服务程序。中断服务程序。响应时间响应时间-从查询中断请求标志位到转向中断服从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。务入口地址所需的机器周期数。(1 1)最快响应时间最快响应时间 以外部中断的电平触发为最快。以外部中断的电平触发为最快。从查询中断请求信号到中断服务程序
12、需要三从查询中断请求信号到中断服务程序需要三 机器周期:机器周期:1 1个周期(查询)个周期(查询)2 2个周期(长调用个周期(长调用LCALLLCALL)(2 2)最长时间最长时间 若当前指令是若当前指令是RETRET、RETIRETI和和IPIP、IEIE指令,紧接指令,紧接 着下一条是乘除指令发生,则最长为着下一条是乘除指令发生,则最长为8 8个周期个周期。5.3.2 中断处理中断处理 n中断处理(又称中断服务),程序从中断处理(又称中断服务),程序从入口地址入口地址开始执行开始执行,直到返回指令,直到返回指令“RETI”“RETI”为止,这个为止,这个过程称为过程称为中断处理中断处理。
13、n 包括两部分内容:包括两部分内容:(1 1)保护现场,)保护现场,(2 2)处理中断源的请求)处理中断源的请求。中断处理过程示意图中断源发中断请求中断源发中断请求中断响应条件中断响应条件 是否满足?是否满足?中断是否受阻?中断是否受阻?把把PC断点地址压入堆栈断点地址压入堆栈 相应中断源的中断入口地址相应中断源的中断入口地址送入送入PC,转向中断服务程序,转向中断服务程序NYYN 由硬件自动完成 关中断关中断保护现场保护现场中断服务中断服务 开中断开中断 关中断关中断恢复现场恢复现场 开中断开中断中断返回中断返回断点地址由堆栈弹入断点地址由堆栈弹入PC保护现场和保护现场和恢复现场的恢复现场的
14、过程中不允过程中不允许中断,以许中断,以免现场遭到免现场遭到破坏。破坏。保护和恢复现场之后保护和恢复现场之后的开中断是为了允许的开中断是为了允许有更高级中断打断此有更高级中断打断此中断服务程序。中断服务程序。中断服务程序硬件自动完成中断处理中断处理INTT0:PUSH ACC PUSH DPH PUSH DPL PUSH PSW 中断源服务中断源服务 POP PSW POP DPL POP DPH POP ACC RETI保护现场恢复现场5.3.2 中断返回中断返回 中断返回是指中断服务完中断返回是指中断服务完后,计算机返回到原来暂停后,计算机返回到原来暂停的位置的位置(即即断点断点),继续执
15、行,继续执行原来的程序。原来的程序。中断返回由专门的中断中断返回由专门的中断返回指令返回指令RETIRETI来实现。来实现。中断响应中断返回 5.4 外部中断的触发方式外部中断的触发方式 n外部中断的方式选择是通过定时外部中断的方式选择是通过定时/计数器及外部计数器及外部中断控制寄存器中断控制寄存器TCON中的标志位选择的。中的标志位选择的。n1)TCON2 IT1:外部中断外部中断1触发方式控制位。触发方式控制位。当当 IT1=0,外部中断,外部中断1为电平触发方式。为电平触发方式。若若IT1=1,外部中断,外部中断1控制为边沿触发方式。控制为边沿触发方式。n 2)TCON0 IT0:外部中
16、断外部中断0触发方式控制。触发方式控制。5.5 中断源的扩展中断源的扩展 n 举例:举例:利用单片机扩展利用单片机扩展5个外部中断源,中断个外部中断源,中断的优先次序为的优先次序为X0X4,其中,其中X0接到外部中断上,接到外部中断上,X1X4接到外部中断上;单片机的接到外部中断上;单片机的P1.4P1.7接接4个发光二极管用来作输出指示;个发光二极管用来作输出指示;(1)当有当有X1X4其中一个外部中断发生时,相其中一个外部中断发生时,相应的发光二极管应的发光二极管D1D4点亮;点亮;(2)当当X0外部中断发生时,外部中断发生时,4个发光二极管全个发光二极管全亮。亮。n ORG0000Hn
17、AJMPMAINn ORG0003H ;中断;中断0服务程序入口地址服务程序入口地址n AJMPZHD0n ORG0013H ;中断;中断1服务程序入口地址服务程序入口地址n AJMPZHD1n ORG0030HnMAIN:MOV SP,#70H ;设置堆栈指针;设置堆栈指针n SETB IT0 ;外部中断外部中断0为为边沿边沿触发方式触发方式n SETB IT1 ;外部中断;外部中断1为为边沿触边沿触发方式发方式n MOV IP,#00000001B ;外部中断;外部中断0为为nMOV IE,#10000101B ;开放外部中断;开放外部中断0,1n MOV A,#0FFH ;关闭发光二极管
18、;关闭发光二极管n MOV P1,AnLOOP:AJMP LOOPnZHD0:PUSH PSW;保护现场;保护现场nPUSH AnMOV A,#0FH;4个发光二极管全亮个发光二极管全亮nMOV P1,AnPOPA;恢复现场;恢复现场nPOPPSWnRETI;中断返回;中断返回nZHD1:PUSH PSW;保护现场;保护现场nPUSH AnORLP1,#0FH;读取;读取P1口的低口的低4位位nJNBP1.0,IN1;中中断断源源查查询询,并并转转向向相相应应的中断服务程序的中断服务程序n n JNBP1.1,IN2nJNBP1.2,IN3nJNBP1.3,IN4nFH1:POPA ;恢复现场
19、;恢复现场nPOPPSWnRETInIN1:MOV A,#11101111B;中断服务程序;中断服务程序1nMOV P1,A ;D1发光二极管亮发光二极管亮nAJMP FH1nIN2:MOV A,#11011111B;中断服务程序;中断服务程序2nMOV P1,A;D2发光二极管亮发光二极管亮nAJMP FH1nIN3:MOV A,#10111111B;中断服务程序;中断服务程序3nMOV P1,A;D3发光二极管亮发光二极管亮nAJMP FH1nIN4:MOV A,#01111111B;中断服务程序;中断服务程序4n MOV P1,A;D4发光二极管亮发光二极管亮 n AJMP FH1n E
20、ND5.6 中断请求的撤除中断请求的撤除 CPUCPU响应某中断请求后,在中断返回前,应该撤响应某中断请求后,在中断返回前,应该撤除该中断请求,否则会引起另一次中断。除该中断请求,否则会引起另一次中断。定时器定时器0 0或或1 1溢出:溢出:CPUCPU在响应中断后,硬件清除在响应中断后,硬件清除 了有关的中断请求标志了有关的中断请求标志TFOTFO或或TF1TF1,即,即中断请求是中断请求是 自动撤除的自动撤除的。串行口中断:串行口中断:CPUCPU响应中断后,没有用硬件清除响应中断后,没有用硬件清除 T1 T1、R1R1,要靠软件来清除相应的标志要靠软件来清除相应的标志。边沿激活的外部中断
21、:边沿激活的外部中断:CPU在响应中断后,也是在响应中断后,也是 用硬件自动清除用硬件自动清除有关的中断请求标志有关的中断请求标志IE0或或IE1。电平触发外部中断撤除方法较复杂。因为在电平触发方式中,CPU响应中断 时不会 自动清除IE1或IE0标志,所以在响应中断后应立即响应中断后应立即撤除撤除INT0INT0或或INT1INT1引脚上的低电平引脚上的低电平。在硬件上,CPU对INT0和INT1引脚的信号不能控制,所以这个问题要硬件软件来配合解决。电平激活的外部中断源中断标志撤除电平激活的外部中断源中断标志撤除 撤除外部电平请求信号的方案(参见P124 图5-7)MCS-51INTXP1.
22、0D QCP SD外部设备D型触发器CLR P1.0SETB P1.0中断服务程序RETI服务程序主体硬件电路部分 ANL P1,#0FEHORLP1,#01H 由图可知,外部中断请求信号不直接加由图可知,外部中断请求信号不直接加 或或 引引脚脚上上,而而是是加加在在D触触发发器器的的CLK端端。由由于于D端端接接地地,当当外外部中断请求的正脉冲信号出现在部中断请求的正脉冲信号出现在CLK端时,端时,Q端输出为端输出为0,或或 为为低低,外外部部中中断断向向单单片片机机发发出出中中断断请请求求。利利用用P1口口的的P1.0作作为为应应答答线线,当当CPU响响应应中中断断后后,可可在在中中断断服
23、服务务程序中采用两条指令:程序中采用两条指令:ANL P1,#0FEH ORLP1,#01H 来来撤撤除除外外部部中中断断请请求求。第第一一条条指指令令使使P1.0为为0,因因P1.0与与D触触发发器器的的异异步步置置1端端SD相相连连,Q端端输输出出为为1,从从而而撤撤除除中中断断请请求求。第第二二条条指指令令使使P1.0变变为为1,SD=1,无无效效,Q继继续续受受CLK控控制制,即即新新的的外外部部中中断断请请求求信信号号又又能能向向单单片片机机申申请请中中断断。第第二二条条指指令令是是必必不不可可少少的的,否否则,将无法再次形成新的外部中断。则,将无法再次形成新的外部中断。采采用用定定
24、时时器器(T0,T1)中中断断,其其中中断断请请求求的的撤撤除除由硬件自动完成,无须采取其它措施。由硬件自动完成,无须采取其它措施。5.7 中断初始化n中断系统初始化步骤如下:中断系统初始化步骤如下:n 开相应中断源的中断;开相应中断源的中断;n 设定所用中断源的中断优先级;设定所用中断源的中断优先级;n 若为外部中断,则应规定低电平还若为外部中断,则应规定低电平还是负边沿的中断触发方式。是负边沿的中断触发方式。n【例【例1】请写出】请写出 为低电平触发的中断系统初始为低电平触发的中断系统初始n 化程序。化程序。采用位操作指令采用位操作指令 SETB EA SETB EX1 ;开外部中断;开外
25、部中断1 SETB PX1 ;令外部中断;令外部中断1为为高高优优先先级级 CLR IT1 ;令外部中断;令外部中断1为电为电平触平触发发 采用字采用字节节型指令型指令 MOV IE,#84H ;开外部中断;开外部中断1中断中断 ORL IP,#04H ;令;令为为外部中断外部中断1高高优优先先级级 ANL TCON,#0FBH ;令外部中断;令外部中断1为电为电平触平触发发 IE(A8H)EA ESET1EX1 ET0EX0 PSPT1PX1PT0PX0 IP(B8H)TI RISCON 98H TF1TR1 TF0 TR0 IE1 IT1 IE0 IT0TCON 88H n n5.8 外部
26、中断的系统设计应用外部中断的系统设计应用 举例:举例:外设数据经外设数据经P1口输入单片机,每准备好一个数口输入单片机,每准备好一个数据,外设发出选通信号,经触发器和非门至据,外设发出选通信号,经触发器和非门至INT0。P1口口P3.0QDCLKCLR选通信号选通信号+5V1INT0数据数据8031数据传送过程:数据传送过程:1.选通信号有选通信号有效,发中断效,发中断请求;请求;2.执行中断读执行中断读取数据,同取数据,同时将中断请时将中断请求撤除求撤除(P3.0=0,使,使INT0=1)ORG 0000HSTART: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 NOPNOPSETB P3.0 ;撤除撤除INT0MOV A,P1 ;输入数据输入数据MOVX DPTR,A ;保存数据保存数据INC DPTR.POP ACC ;恢复现场恢复现场POP PSWRETI ;返回主程序返回主程序