《单片机MCS-51的中断系统ppt课件.ppt》由会员分享,可在线阅读,更多相关《单片机MCS-51的中断系统ppt课件.ppt(71页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章 MCS-51的中断系统4.1 4.1 中断的概念中断的概念4.2 MCS-514.2 MCS-51中断系统的结构中断系统的结构4.3 4.3 中断请求源中断请求源4.4 4.4 中断控制中断控制4.5 4.5 中断响应中断响应4.6 4.6 外部中断的响应时间外部中断的响应时间4.7 4.7 外部中断的触发方式选择外部中断的触发方式选择4.8 4.8 中断请求的撤销中断请求的撤销4.9 4.9 中断服务程序的设计中断服务程序的设计4.10 4.10 多外部中断源系统设计多外部中断源系统设计 1 1介绍介绍MCS-51MCS-51中断系统及中断控制;中断系统及中断控制; 2. 2. 介绍
2、中断处理的过程;介绍中断处理的过程; 3. 3. 介绍中断应用程序的编程。介绍中断应用程序的编程。 1熟悉中断、中断源、中断服务程序、保护现场、熟悉中断、中断源、中断服务程序、保护现场、恢复现场、中断优先级、中断处理等概念恢复现场、中断优先级、中断处理等概念; 2. 掌握掌握51中断入口地址和各中断控制寄存器含义及中断入口地址和各中断控制寄存器含义及应用:包括应用:包括TCON、SCON、IE和和IP; 3. 掌握中断初始化和中断服务程序的编制。掌握中断初始化和中断服务程序的编制。 MCS-51MCS-51有很强的有很强的I/OI/O接口扩展能力,接口扩展能力,I/OI/O外外设扩展后,单片机
3、要与各种形式的外设相连,这设扩展后,单片机要与各种形式的外设相连,这些外设的结构形式、信号种类与大小、工作速度些外设的结构形式、信号种类与大小、工作速度的快慢相差很大,这就需要研究单片机与外设交的快慢相差很大,这就需要研究单片机与外设交换数据的方法。目前换数据的方法。目前CPUCPU与外设交换信息通常有与外设交换信息通常有以下几种形式:以下几种形式:输入/输出的控制方式一、无条件传送方式一、无条件传送方式nCPUCPU总是认为外设在任何时刻都处于总是认为外设在任何时刻都处于“准备好准备好”的状态。的状态。n这种传送方式不需要交换状态信息,只需在程序这种传送方式不需要交换状态信息,只需在程序中加
4、入访问外设的指令,数据传送便可以实现。中加入访问外设的指令,数据传送便可以实现。n此种方法很少使用。此种方法很少使用。二、查询方式传送二、查询方式传送 也称也称程序控制法程序控制法,先查询,先查询I/OI/O设备当前状设备当前状态,若准备就绪,则交换数据,否则循环查询态,若准备就绪,则交换数据,否则循环查询状态。状态。优点:优点:通用性好,可以用于各类外设和通用性好,可以用于各类外设和CPUCPU间的间的数据传送。数据传送。缺点:缺点:CPUCPU在完成一次数据传送后要等待很长时在完成一次数据传送后要等待很长时间才能进行下一次的传送。在等待过程间才能进行下一次的传送。在等待过程中,中,CPUC
5、PU不能进行其他操作,所以效率比不能进行其他操作,所以效率比较低。较低。三、中断方式传送三、中断方式传送 大多数时间大多数时间计算机与外设并行工作计算机与外设并行工作,计,计算机不必因等待而浪费资源。当外设准备就算机不必因等待而浪费资源。当外设准备就绪,向绪,向CPUCPU发出中断请求信号。发出中断请求信号。CPUCPU暂停当前暂停当前程序,执行程序,执行I/OI/O操作。操作。当当I/OI/O操作结束,操作结束,CPUCPU仍继续被中断的工作。仍继续被中断的工作。4.1 中断的概念执行执行主程序主程序主程序主程序继续执行继续执行主程序主程序断点断点中断请求中断请求中断响应中断响应执行执行中断
6、中断处理处理程序程序中断返回中断返回n中断系统:中断系统:实现中断功能的部件。实现中断功能的部件。 n中断服务程序:中断服务程序:中断之后所执行的处理程序,原来中断之后所执行的处理程序,原来运行的程序称为主程序。运行的程序称为主程序。 n断点:断点:主程序被断开的位置主程序被断开的位置( (地址地址) ) 。 n中断源:中断源:向向CPUCPU发出中断请求的来源。发出中断请求的来源。 n中断请求:中断请求:中断源向中断源向CPUCPU提出的处理请求,又称提出的处理请求,又称中中断申请断申请。 中断的相关概念中断的相关概念n实现实时控制处理。提高处理故障的能力;实现实时控制处理。提高处理故障的能
7、力;n解决解决CPUCPU和外设之间的速度匹配问题,提高和外设之间的速度匹配问题,提高CPUCPU的效率的效率; ;n实现人机对话。一般由键盘、按钮等发出中断实现人机对话。一般由键盘、按钮等发出中断请求,当请求,当CPUCPU响应中断后,在中断服务程序中实响应中断后,在中断服务程序中实现人机对话。现人机对话。中断方式的特点中断方式的特点4.2 MCS-51中断系统的结构n 5 5个中断源;个中断源;n 2 2个中断优先级,可实现两级中断嵌套;个中断优先级,可实现两级中断嵌套;n 中断使能可编程控制;中断使能可编程控制;n 中断优先级可编程控制;中断优先级可编程控制;n 复位后,所有中断被禁止,
8、且为低优先级。复位后,所有中断被禁止,且为低优先级。MCS-51的中断系统结构框图4.3 中断请求源1外部中断类 由外部原因引起的:由外部原因引起的: /INT0外部中断外部中断0请求信号。请求信号。由由P3.2引脚输入,中引脚输入,中断请求标志为断请求标志为IE0。 /INT1外部中断外部中断1请求信号。请求信号。由由P3.3引脚输入,中引脚输入,中断请求标志为断请求标志为IE1。 MCS-51MCS-51的中断源可分为三类:的中断源可分为三类:外部中断、定外部中断、定时时/ /计数器溢出中断计数器溢出中断和和串行口中断串行口中断。 2 2定时定时/ /计数中断类计数中断类 定时定时/计数中
9、断计数中断是为满足定时或计数溢出处理的需要而是为满足定时或计数溢出处理的需要而设置的。在定时方式下,脉冲信号在单片机芯片内部发生,设置的。在定时方式下,脉冲信号在单片机芯片内部发生,无需在芯片上设置引入端无需在芯片上设置引入端;但在计数方式时,中断源由单但在计数方式时,中断源由单片机芯片外部引入。片机芯片外部引入。 定时器定时器/计数器计数器T0溢出中断请求:溢出中断请求:中断请求标志为中断请求标志为TF0。 定时器定时器/计数器计数器T1溢出中断请求:溢出中断请求:中断请求标志为中断请求标志为TF1 。 3串行口中断类 串行口中断串行口中断为串行通信的需要而设置的。为串行通信的需要而设置的。
10、 RI或或TI串行口中断请求标志串行口中断请求标志。各中断源对应的中断服务程序入口地址:各中断源对应的中断服务程序入口地址: 中断源中断源 入口地址入口地址 外部中断外部中断0 0003H 定时器定时器T0中断中断 000BH 外部中断外部中断1 0013H 定时器定时器T1中断中断 001BH 串行口中断串行口中断 0023H 中断请求标志中断请求标志 中断源申请中断时,要将相应的中断请求标志置位。中断源申请中断时,要将相应的中断请求标志置位。CPUCPU查询这些中断标志位状态,以决定是否响应中断。查询这些中断标志位状态,以决定是否响应中断。MCS-MCS-5151中断标志位锁存在中断标志位
11、锁存在定时器控制寄存器定时器控制寄存器TCONTCON和和串行口控制串行口控制寄存器寄存器SCONSCON中。中。1定时器控制寄存器TCON TF1TR1TF0TR0IE1IT1IE0IT08FH8EH8DH8CH8BH8AH89H88HD7 D6 D5 D4 D3 D2 D1 D0TCON位地址位地址字节地址:字节地址:88HIT0和和IT1:外部中断请求信号触发方式控制位外部中断请求信号触发方式控制位nIT0(或或IT1)=0:电平触发,:电平触发,INT0(或或INT1)低电平有效;低电平有效;nIT0(或或IT1)=1:边沿触发,引脚:边沿触发,引脚INT0(或或INT1)上的电平由上
12、的电平由高到低负跳变有效;高到低负跳变有效;nIT0(或或IT1)位可由用户软件位可由用户软件置置1或或清清0。各控制位的含义IE0和和IE1:外部中断请求标志位外部中断请求标志位n若若IT0=0(或或IT1=0),每个机器周期的,每个机器周期的S5P2采样采样INT0(或或INT1),若,若INT0=0则则IE0(或或IE1)由片内硬件由片内硬件自自动置动置1;n当当IT0=1(或或IT1=1)时,第一个机器周期采样到时,第一个机器周期采样到INT0 (或或INT1)为高电平,第二个机器周期为低电平,则为高电平,第二个机器周期为低电平,则IE0(或或IE1)=1。nIE0(或或IE1)=1表
13、示外部中断正在向表示外部中断正在向CPU申请中断,当申请中断,当CPU响应中断,转向中断服务程序时,由硬件响应中断,转向中断服务程序时,由硬件自动自动清清“0”IE0(或或IE1)。TF0和和TF1:定时器定时器/计数器溢出中断请求标志位计数器溢出中断请求标志位nT0(或或T1)启动计数后,加启动计数后,加1计数,当最高位发生计数溢计数,当最高位发生计数溢出时,出时,TF0(或或TF1)由片内硬件由片内硬件自动置自动置1,向,向CPU请求中请求中断;当完成中断响应,并转向中断服务程序时,由片内断;当完成中断响应,并转向中断服务程序时,由片内硬件硬件自动清自动清0。n该标志位也可用于该标志位也可
14、用于查询方式查询方式(非中断方式非中断方式),即用户程序,即用户程序查询该位状态,判断是否应转向对应的处理程序段。待查询该位状态,判断是否应转向对应的处理程序段。待转入处理程序后,转入处理程序后,必须由软件清必须由软件清0。注意:MCS-51复位后,TCON被清0。2串行口控制寄存器SCON SCON SCON的字节地址为的字节地址为98H98H,可以位寻址:位地址是,可以位寻址:位地址是9FH9FH98H98H。位序位序D7D6D5D4D3D2D1D0位地址位地址9FH9EH9DH9CH9BH9AH99H98H位符号位符号SM0SM1SM2RENTB8RB8TIRI SCON SCON为串行
15、口控制寄存器,其低为串行口控制寄存器,其低2 2位锁存串行口位锁存串行口的接收中断和发送中断标志的接收中断和发送中断标志RIRI和和TITI。TI(SCON.1):串行口发送中断请求标志位串行口发送中断请求标志位。 当当CPU通过串行口每发送完一帧数据,通过串行口每发送完一帧数据,TI由硬件自动由硬件自动置置1。CPU响应中断时,不能自动清除响应中断时,不能自动清除TI,在转向中断服在转向中断服务程序后必须由软件清务程序后必须由软件清0。RI(SCON.0):串行口接收中断请求标志位串行口接收中断请求标志位。 当允许串行口接收数据时,每接收完一帧数据,当允许串行口接收数据时,每接收完一帧数据,
16、RI由由硬件自动置硬件自动置1。同样,。同样,RI必须在中断服务程序中用软件清必须在中断服务程序中用软件清0。TI和RI为何必须软件清0? 因为串行口无论是发送中断还是接收中断,因为串行口无论是发送中断还是接收中断,中断向量中断向量地址是惟一的,即地址是惟一的,即0023H。待转向中断服务程序后,必须。待转向中断服务程序后,必须用软件查询用软件查询TI或或RI的状态,方可判断是串行发送中断还是的状态,方可判断是串行发送中断还是串行接收中断,从而转向不同的处理程序段。这就是串行接收中断,从而转向不同的处理程序段。这就是TI和和RI不能由片内硬件自动清不能由片内硬件自动清0,而必须由软件清,而必须
17、由软件清0的原因。的原因。4.4 中断控制1中断允许寄存器IE CPU CPU对中断系统所有中断以及某个中断源的开放和屏蔽对中断系统所有中断以及某个中断源的开放和屏蔽是由中断允许寄存器是由中断允许寄存器IEIE控制的。控制的。IEIE的字节地址是的字节地址是A8HA8H,可位,可位寻址,位地址为寻址,位地址为AFHAFHA8HA8H。位序位序D7D6D5D4D3D2D1D0位地址位地址AFHAEHADHACHABHAAHA9HA8H位符号位符号EAESET1EX1ET0EX0中断允许寄存器IE的格式EAEA(IE.7)(IE.7):中断允许总控制位。中断允许总控制位。 EA = 1EA = 1
18、,CPUCPU开放所有中断。对各中断源的中断请开放所有中断。对各中断源的中断请求是否允许,还要取决于各中断源的中断允许控制求是否允许,还要取决于各中断源的中断允许控制位的状态。这就是所谓的位的状态。这就是所谓的两级控制两级控制; EA = 0EA = 0,屏蔽所有的中断请求。,屏蔽所有的中断请求。ESES(IE.4)(IE.4):串行口中断允许位。串行口中断允许位。 ES = 1ES = 1,允许串行口中断;,允许串行口中断; ES = 0ES = 0,禁止串行口中断。,禁止串行口中断。ET1ET1(IE.3)(IE.3):定时器定时器1 1中断允许位。中断允许位。 ET1 = 1ET1 =
19、1,允许定时器,允许定时器1 1中断;中断; ET1 = 0ET1 = 0,禁止定时器,禁止定时器1 1中断。中断。 中断允许寄存器IE各位含义:EX1EX1(IE.2)(IE.2):外部中断外部中断1 1中断允许位。中断允许位。 EX1 = 1EX1 = 1,允许外部中断,允许外部中断1 1中断;中断; EX1 = 0EX1 = 0,禁止外部中断,禁止外部中断1 1中断。中断。ET0ET0(IE.1)(IE.1):定时器定时器0 0中断允许位。中断允许位。 ET0 = 1ET0 = 1,允许定时器,允许定时器0 0中断;中断; ET0 = 0ET0 = 0,禁止定时器,禁止定时器0 0中断。
20、中断。EX0EX0(IE.0)(IE.0):外部中断外部中断0 0中断允许位。中断允许位。 EX0 = 1EX0 = 1,允许外部中断,允许外部中断0 0中断;中断; EX0 = 0EX0 = 0,禁止外部中断,禁止外部中断0 0中断。中断。n单片机响应中断后不会自动关中断,因此在转到中断服单片机响应中断后不会自动关中断,因此在转到中断服务程序后,应用软件完成关闭或打开中断操作。务程序后,应用软件完成关闭或打开中断操作。 n80518051单片机系统复位后,单片机系统复位后,IEIE中各中断允许位均被清中各中断允许位均被清0 0,即禁止所有中断。即禁止所有中断。IE寄存器的设置位操作指令:位操
21、作指令: SETB BIT CLR BIT字节操作指令:字节操作指令: MOV IE,#DATA ANL IE,#DATA ORL IE,#DATA MOV IE,A 例:例:假设允许假设允许片内定时器片内定时器/ /计数器中断计数器中断,禁止,禁止其他中断。试根据假设条件设置其他中断。试根据假设条件设置IEIE的相应值。的相应值。解解:(:(IE)=10001010B=8AH(a)用字节操作指令)用字节操作指令MOV IE,#8AH 或或 MOV A8H,#8AH (b)用位操作指令)用位操作指令SETB ET0 ;定时器;定时器/计数器计数器0允许中断允许中断SETB ET1 ;定时器;定
22、时器/计数器计数器1允许中断允许中断SETB EA ;CPU开中断开中断2中断优先级控制寄存器IP nMCS-51MCS-51单片机具有单片机具有高、低高、低两个中断优先级。两个中断优先级。n各中断源优先级由各中断源优先级由IPIP寄存器寄存器有关位设置。每个中断请求源有关位设置。每个中断请求源均可编程为高优先级中断或低优先级中断。均可编程为高优先级中断或低优先级中断。nIPIP寄存器的字节地址为寄存器的字节地址为B8HB8H,可以位寻址,位地址为,可以位寻址,位地址为BFHBFHB8HB8H。位序位序D7D6D5D4D3D2D1D0位地址位地址BFHBEHBDHBCHBBHBAHB9HB8H
23、位符号位符号PSPT1PX1PT0PX0中断优先级控制寄存器IP的格式中断优先级寄存器IP各控制位的含义1 PS串行口中断优先级控制位串行口中断优先级控制位1 PT1定时器定时器/计数器计数器T1中断优先级控制位中断优先级控制位1 PX1外部中断外部中断1中断优先级控制位中断优先级控制位1 PT0定时器定时器/计数器计数器T0中断优先级控制位中断优先级控制位1 PX0外部中断外部中断0中断优先级控制位中断优先级控制位1 若某控制位为若某控制位为1,则相应的中断源规定为高级中断;反,则相应的中断源规定为高级中断;反之为之为0,则相应的中断源规定为低级中断。,则相应的中断源规定为低级中断。1 当系
24、统复位后,当系统复位后,IP低低5位全部清位全部清“0”,将所有中断源设,将所有中断源设置为低优先级中断。置为低优先级中断。 中断优先级控制中的特殊情况中断优先级控制中的特殊情况(1)自然优先级)自然优先级(2)中断嵌套)中断嵌套(1)自然优先级n当同时接收到几个同一优先级的中断请当同时接收到几个同一优先级的中断请求时,响应哪个中断源则取决于求时,响应哪个中断源则取决于内部硬内部硬件查询顺序件查询顺序。n其优先级顺序排列如其优先级顺序排列如 下图下图 所示。所示。中断优先级排列顺序中断优先级排列顺序中断源中断源同级内的中断优先级同级内的中断优先级外部中断外部中断0中断中断 高级高级定时器定时器
25、/计数器计数器T0溢出中断溢出中断外部中断外部中断1定时器定时器/计数器计数器T1溢出中断溢出中断串行口中断串行口中断 低级低级CPUCPU在执行主程序在执行主程序低级中低级中断请求断请求响应低级中断请求响应低级中断请求CPUCPU执行低级执行低级中断服务程序中断服务程序高级中高级中断请求断请求响应高级中断请求响应高级中断请求CPUCPU执行高级执行高级中断服务程序中断服务程序返回低级中断程序返回低级中断程序返回主程序返回主程序(2)两级中断嵌套不同级中断源同时申请中断时:不同级中断源同时申请中断时:先高后低先高后低同一级的中断源同时申请中断时:同一级的中断源同时申请中断时:事先规定事先规定处
26、理低级中断又收到高级中断申请时:处理低级中断又收到高级中断申请时:停低转高停低转高处理高级中断又收到低级中断申请时:处理高级中断又收到低级中断申请时:高不睬低高不睬低MCS-51对中断的处理原则对中断的处理原则 为了实现上述原则,中断系统内部设有两个用户为了实现上述原则,中断系统内部设有两个用户不不能寻址的优先级生效触发器:能寻址的优先级生效触发器:高优先级生效触发器和低高优先级生效触发器和低优先级生效触发器。优先级生效触发器。 例:例:设置设置IPIP初值,使初值,使80318031的的2 2个外部中断源个外部中断源为高优先级,其它中断源为低优先级。为高优先级,其它中断源为低优先级。解:解:
27、(IP)=00000101B=05H (a)用字节操作指令)用字节操作指令 MOV IP,#05H 或或 MOV 0B8H,#05H (b)用位操作指令)用位操作指令 SETB PX0 SETB PX1 CLR PS CLR PT0 CLR PT14.5 中断响应及处理过程 中止现行程序,保护断点中止现行程序,保护断点转入中断服务程序入口转入中断服务程序入口保护现场保护现场 中断服务中断服务 恢复现场恢复现场 中断返回(中断返回(RETIRETI)中断处理流程图中断处理流程图 中断响应中断响应 中断返回中断返回 中断处理中断处理 中断请求中断请求 CPU CPU响应中断响应中断 中断请求中断请
28、求 一个完整的中断处理的基本过程应该包括:一个完整的中断处理的基本过程应该包括:中断中断请求、中断响应、中断处理请求、中断响应、中断处理以及以及中断返回中断返回。中断请求中断请求是中断源向是中断源向CPUCPU发出请求中断的信号。发出请求中断的信号。 n一般单片机提供有多条中断请求线,当中断源有服务一般单片机提供有多条中断请求线,当中断源有服务要求时,可通过中断请求线,向要求时,可通过中断请求线,向CPUCPU发出信号,请求发出信号,请求CPUCPU中断。中断。 一、中断请求一、中断请求1 1CPUCPU的中断响应条件的中断响应条件 有中断源发出中断申请;有中断源发出中断申请; CPU开中断,
29、即中断总允许位开中断,即中断总允许位EA1; 申请中断的中断源的中断允许位为申请中断的中断源的中断允许位为1,即此,即此中断源可以向中断源可以向CPU申请中断;申请中断;无同级或更高级中断正在被服务。无同级或更高级中断正在被服务。 二、中断响应二、中断响应 中断响应中断响应是在满足是在满足CPUCPU的中断响应条件之后,的中断响应条件之后,CPUCPU对中断源中断请求的回答。对中断源中断请求的回答。 2.2.中断标志位的查询中断标志位的查询单片机在每个机器周期的单片机在每个机器周期的S5P2S5P2状态状态根据中断请求信号根据中断请求信号的状态的状态置位置位各自的中断请求标志。各自的中断请求标
30、志。在下一个机器周期的在下一个机器周期的S6S6状态状态下,按中断优先级顺序对下,按中断优先级顺序对中断请求标志位进行中断请求标志位进行查询查询。如果查询到有的标志位为如果查询到有的标志位为1 1,则表明有中断请求发生,则表明有中断请求发生,因此紧接着的下一个机器周期的因此紧接着的下一个机器周期的S1S1状态状态开始进入中断开始进入中断响应周期。响应周期。 中断查询在每个机器周期都要重复执行,但如果遇到下中断查询在每个机器周期都要重复执行,但如果遇到下列条件之一,虽然中断标志位为列条件之一,虽然中断标志位为1 1,也,也不能立即产生中断不能立即产生中断: CPUCPU正在处理同级或高一级的中断
31、正在处理同级或高一级的中断; 查询周期不处于执行当前指令的最后一个机器周期。查询周期不处于执行当前指令的最后一个机器周期。这样是为了使当前指令执行完毕后才响应中断,以确这样是为了使当前指令执行完毕后才响应中断,以确保当前指令的完整执行;保当前指令的完整执行; 当前正在执行返回当前正在执行返回(RETI)(RETI)指令或访问寄存器指令或访问寄存器IEIE或或IPIP的的指令。指令。因为按中断系统的特性规定,在执行完这些指因为按中断系统的特性规定,在执行完这些指令之后,还应再继续执行一条指令,方可响应中断。令之后,还应再继续执行一条指令,方可响应中断。 由于存在中断阻断的情况而未被及时响应,待上
32、述由于存在中断阻断的情况而未被及时响应,待上述封锁中断的条件被撤消之后,由于中断标志还存在,仍封锁中断的条件被撤消之后,由于中断标志还存在,仍会响应。会响应。 中断响应操作中断响应操作CPUCPU响应周期完成如下操作:响应周期完成如下操作: 将相应的优先级生效触发器将相应的优先级生效触发器置置1 1; 硬件硬件清除清除相应的中断请求标志(串行口中断相应的中断请求标志(串行口中断标志需要用软件清除);标志需要用软件清除); 执行一条硬件自动生成执行一条硬件自动生成子程序调用子程序调用指令:指令: 执行中断服务程序执行中断服务程序LCALL addr16 ; addr16:addr16:中断向量地
33、址中断向量地址 中断处理程序中断处理程序( (又称中断服务又称中断服务) )从入口地址开始执行,从入口地址开始执行,直到返回指令直到返回指令“RETI”RETI”为止,这个过程称为为止,这个过程称为中断处理中断处理。 三、中断处理三、中断处理n一般包括一般包括保护现场保护现场和和处理处理中断源的请求及中断源的请求及恢复现场恢复现场三三部分内容。部分内容。 n一般累加器一般累加器A A、PSWPSW寄存器和其它一些特殊功能寄存器寄存器和其它一些特殊功能寄存器的内容需要保护。的内容需要保护。 将优先级生效触发器将优先级生效触发器清清0; 从堆栈中弹出栈顶的两个字节内容送从堆栈中弹出栈顶的两个字节内
34、容送PC恢恢复断点复断点; CPU转到断点处继续执行原程序。转到断点处继续执行原程序。 四、中断返回(四、中断返回(RETIRETI执行后)执行后)4.6 中断响应时间 中断响应时间中断响应时间是从是从查询中断标志位查询中断标志位的那个机器周期的那个机器周期到到转向中断入口地址转向中断入口地址所需要的机器周期数。所需要的机器周期数。 不同的情况下对中断响应的时间是不同的:不同的情况下对中断响应的时间是不同的:n对于顺利的中断响应,其对于顺利的中断响应,其最短响应时间最短响应时间为为3 3个机器周期。个机器周期。n若中断系统只有一个中断源,则响应时间为若中断系统只有一个中断源,则响应时间为3 3
35、8 8个机器个机器周期周期之间。之间。n对于受阻的中断响应,则响应时间会更长一些。对于受阻的中断响应,则响应时间会更长一些。 一般情况下,可不考虑响应时间,只在精确定时控制一般情况下,可不考虑响应时间,只在精确定时控制的场合需要考虑此问题。的场合需要考虑此问题。4.7 外部中断的触发方式选择外部中断的触发方式:外部中断的触发方式:电平触发电平触发和和边沿触发边沿触发。1.1.电平触发方式电平触发方式特点:特点:中断标志位的状态随中断标志位的状态随CPU在每个机器周期采样到的在每个机器周期采样到的外部中断输入引脚的电平变化而变化,这样能提高外部中断输入引脚的电平变化而变化,这样能提高CPU对外部
36、中断请求的响应速度。对外部中断请求的响应速度。要求:要求:外部中断源若有请求,外部中断源若有请求,必须把有效的低电平保持到必须把有效的低电平保持到请求获得响应时为止请求获得响应时为止,不然就会漏掉;而在中断服,不然就会漏掉;而在中断服务程序结束之前,务程序结束之前,中断源又必须撤消其有效的低电中断源又必须撤消其有效的低电平平,否则中断返回之后将再次产生中断。,否则中断返回之后将再次产生中断。 电平触发方式适合于外部中断请求信号以低电平输电平触发方式适合于外部中断请求信号以低电平输入且中断服务程序能清除外部中断请求源的情况。入且中断服务程序能清除外部中断请求源的情况。2.2.边沿触发方式边沿触发
37、方式特点:特点:CPU采样到下降沿,则在采样到下降沿,则在IE0或或IE1中将锁存一个逻中将锁存一个逻辑辑1。即便是。即便是CPU暂时不能响应,中断申请标志也暂时不能响应,中断申请标志也不会丢失,直到不会丢失,直到CPU响应此中断时才清零。响应此中断时才清零。要求:为保证下降沿能被可靠地采样到,外部中断引脚上要求:为保证下降沿能被可靠地采样到,外部中断引脚上的高低电平(负脉冲的宽度)均至少要保持一个机的高低电平(负脉冲的宽度)均至少要保持一个机器周期器周期(若晶振为(若晶振为12MHz时,为时,为1微秒)。微秒)。 边沿触发方式适合于以负脉冲形式输入的外部中断边沿触发方式适合于以负脉冲形式输入
38、的外部中断请求。请求。(1)(1)定时器定时器0 0或或1 1溢出中断。溢出中断。CPUCPU在响应中断后,中断请求自在响应中断后,中断请求自动撤消。动撤消。 (2)(2)边沿触发的外部中断。边沿触发的外部中断。CPUCPU在响应中断后,硬件自动清在响应中断后,硬件自动清除有关的中断请求。除有关的中断请求。 (3)(3)串行口中断。串行口中断。CPUCPU响应中断后,靠软件来清除相应的标响应中断后,靠软件来清除相应的标志。志。 4.8 中断请求的撤消 CPUCPU响应某中断请求后,在响应某中断请求后,在中断返回前中断返回前,应撤消该中断,应撤消该中断请求,避免重复响应。请求,避免重复响应。 C
39、LR TI ;清;清TI标志位标志位CLR RI ;清;清RI标志位标志位电平方式外部中断请求的撤除方法较复杂。电平方式外部中断请求的撤除方法较复杂。 图图4.84.8是撤除电平方式的中断请求的是撤除电平方式的中断请求的可行方可行方案案之一之一: : 用用P1.0P1.0接在触发器的直接置位端接在触发器的直接置位端S S端作端作为应答线。为应答线。 当当CPUCPU响应中断后可使用如下两条指令:响应中断后可使用如下两条指令: SETB P1.0SETB P1.0 ; 将将P1.0P1.0置置1 1 CLR P1.0CLR P1.0 ; 将将P1.0P1.0清清0 0图图4.8 4.8 电平方式
40、外部中断请求的撤消电路电平方式外部中断请求的撤消电路4.9 中断程序的设计包含包含中断初始化程序中断初始化程序和和中断服务程序中断服务程序两部分。两部分。 一、中断初始化程序一、中断初始化程序 n中断初始化程序实质上就是对中断初始化程序实质上就是对TCONTCON、SCONSCON、IEIE和和IPIP寄寄存器的管理和控制。存器的管理和控制。 n中断初始化程序一般不独立编写,而是包含在主程序中断初始化程序一般不独立编写,而是包含在主程序中,中,中断初始化程序需完成以下操作:中断初始化程序需完成以下操作: 1 1IEIE设置。设置。CPUCPU开中断;开中断; 2 2某一中断源中断请求的允许与禁
41、止某一中断源中断请求的允许与禁止( (屏蔽屏蔽) ); 3 3IPIP设置。设置。确定各中断源的优先级;确定各中断源的优先级; 4 4若是外部中断请求,则要设定若是外部中断请求,则要设定触发方式触发方式是电平是电平触发还是边沿触发。触发还是边沿触发。 例:例:假设规定外部中断假设规定外部中断0 0为电平触发方式,高优为电平触发方式,高优先级,试写出有关的初始化程序。先级,试写出有关的初始化程序。解:解:可用两种方法完成。可用两种方法完成。 方法方法1 1,用位操作指令完成:,用位操作指令完成: SETB EA SETB EA ;开中断允许总控制位;开中断允许总控制位 SETB EX0 SETB
42、 EX0 ;外中断;外中断0 0开中断开中断 SETB PX0SETB PX0;外中断;外中断0 0高优先级高优先级 CLR IT0CLR IT0;电平触发;电平触发 方法方法2 2,用其它指令也可完成同样功能:,用其它指令也可完成同样功能: MOV IEMOV IE,#81H#81H ;同时置位;同时置位EAEA和和EX0 EX0 ORL IPORL IP,#01H#01H ;置位;置位PX0 PX0 ANL TCONANL TCON,#0FEH#0FEH ;使;使IT0IT0为为0 0 二、采用中断时的主程序结构二、采用中断时的主程序结构 ORG 0000HORG 0000HLJMPLJM
43、P MAIN MAINORG 0003HORG 0003H LJMP INT0SERLJMP INT0SER ORG 000BHORG 000BH LJMP T0SERLJMP T0SER ORGORG 0030H 0030H MAIN : MAIN : 主程序主程序 INT0SER :INT0SER : 外部中断外部中断0 0中断服务程序中断服务程序 T0SER :T0SER : 定时器定时器0 0中断服务程序中断服务程序三、中断服务程序三、中断服务程序 中断服务程序中断服务程序是为中断源的特定要求服务的独立程序是为中断源的特定要求服务的独立程序段,以中断返回指令段,以中断返回指令RETIR
44、ETI结束。结束。 中断服务程序中断服务程序流程流程:关中断关中断保护现场保护现场开中断开中断中断服务中断服务关中断关中断恢复现场恢复现场开中断开中断返回返回工作寄存器的现场保护和恢复工作寄存器的现场保护和恢复压栈和出栈使用压栈和出栈使用直接寻址方式直接寻址方式。寄存器组的切换寄存器组的切换。设置。设置PSW的的RS1、RS0位,便可起位,便可起到现场保护的目的。到现场保护的目的。例例: :原程序运行中使用原程序运行中使用0 0组,即组,即RS1 RS0RS1 RS00000,中断服务程,中断服务程序使用序使用1 1组。组。 PUSH PSW PUSH PSW ;保护;保护0 0组组 CLR
45、RS1 CLR RS1 ;使用;使用1 1组组 SETB RS0 SETB RS0 POP PSW POP PSW ;恢复;恢复0 0组组 RETI RETI ;中断返回;中断返回中断服务程序编制中的注意事项中断服务程序编制中的注意事项 视需要确定是否保护现场。视需要确定是否保护现场。 及时清除那些不能被硬件自动清除的中断请求及时清除那些不能被硬件自动清除的中断请求标志,以免产生错误的中断。标志,以免产生错误的中断。 中断服务程序中的压栈与弹栈指令必须成对使中断服务程序中的压栈与弹栈指令必须成对使用,以确保中断服务程序的正确返回。用,以确保中断服务程序的正确返回。 主程序和中断服务程序之间的参
46、数传递与主程主程序和中断服务程序之间的参数传递与主程序和子程序的参数传递方式相同。序和子程序的参数传递方式相同。典型中断服务程序典型中断服务程序INT: CLR EA INT: CLR EA ;CPUCPU关中断关中断PUSH PSWPUSH PSW ;现场保护;现场保护PUSH ACCPUSH ACC ;SETB EASETB EA ;CPUCPU开中断开中断 中断服务程序中断服务程序CLR EA CLR EA ;CPUCPU关中断关中断 POP ACCPOP ACC ;现场恢复;现场恢复 POP PSWPOP PSW ; SETB EA SETB EA ;CPUCPU开中断开中断 RETI
47、RETI ;中断返回,恢复断点;中断返回,恢复断点 MCS-51单片机有两个外部中断请求输入单片机有两个外部中断请求输入端(端(INT0和和INT1)。实际应用中,若外部中)。实际应用中,若外部中断源有两个以上,则需要断源有两个以上,则需要扩展外部中断源扩展外部中断源。n 利用定时器扩展外部中断源利用定时器扩展外部中断源n 中断加查询扩展外部中断源中断加查询扩展外部中断源n 用优先权编码器扩展外部中断源用优先权编码器扩展外部中断源4.10 多外部中断源系统设计利用定时器扩展外部中断源利用定时器扩展外部中断源nMCS-51单片机有单片机有两个定时器两个定时器,具有两个内部中断标志和,具有两个内部
48、中断标志和外部计数输入引脚。外部计数输入引脚。n当定时器设置为当定时器设置为计数方式计数方式时,计数初值设置为满量程时,计数初值设置为满量程FFH。一旦外部信号从计数器引脚输入一个负跳变信号,计数器一旦外部信号从计数器引脚输入一个负跳变信号,计数器加加1产生溢出中断,从而转去处理该外部中断源的请求。产生溢出中断,从而转去处理该外部中断源的请求。n方法方法: (1)定时器)定时器/计数器输入信号端计数器输入信号端T0、T1作外部中断输入。作外部中断输入。 (2)选择计数方式,设置为工作方式)选择计数方式,设置为工作方式2,初值,初值0FFH,允许,允许T0、T1中断,中断,CPU开放中断,启动计
49、数。开放中断,启动计数。数据自动加载方式:数据自动加载方式: TL:计数器计数器 TH:预置计数器预置计数器例例: :T0T0设置为外部计数模式,工作在方式设置为外部计数模式,工作在方式2(2(初值自动重装初值自动重装) )。计数器计数器TH0TH0、TL0TL0初值均为初值均为0FFH0FFH,并允许,并允许T0T0中断,中断,CPUCPU开开放中断。放中断。 ORG 0000HORG 0000H AJMP IINI AJMP IINI ;跳到;跳到T0T0初始化程序初始化程序 ORG 000BHORG 000BH LJMP T0IR LJMP T0IR IINI: MOV TMOD IIN
50、I: MOV TMOD,#06H #06H ;设置;设置T0T0的工作方式寄存器的工作方式寄存器 MOV TL0MOV TL0, #0FFH #0FFH ;T0T0置初值置初值 MOV TH0MOV TH0, #0FFH #0FFH SETB ETO SETB ETO ;允许;允许T0T0中断中断 SETB EA SETB EA ;CPUCPU开中断开中断 SETB TRO SETB TRO ;启动;启动T0T0,开始计数,开始计数 T0IR: T0IR: 外部中断服务程序外部中断服务程序中断加查询扩展外部中断源中断加查询扩展外部中断源n方法:方法:用一个中断入口接受多个外部中断源,用一个中断