版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第4章章 AT89S51单片机的中断系统单片机的中断系统12内容概要内容概要u介绍片内功能部件介绍片内功能部件中断系统中断系统的的硬件结构硬件结构和和工作原理工作原理。u掌握与中断系统掌握与中断系统有关的特殊功能寄存器有关的特殊功能寄存器以及中断系以及中断系统的应用特性。统的应用特性。u应能熟练地进行中断系统的应能熟练地进行中断系统的初始化编程初始化编程以及以及中断服中断服务子程序的设计务子程序的设计。34.1 AT89S51中断技术概述中断技术概述 中断技术主要用于中断技术主要用于实时监测与控制,实时监测与控制,要求单片机能要求单片机能及时及时地地响应中断请求源响应中断请求源提出的服务提
2、出的服务请求请求,并作出快速响并作出快速响应、及时处理。这是由片内的中断系统来实现的。应、及时处理。这是由片内的中断系统来实现的。 当中断请求源当中断请求源发出中断请求发出中断请求时,如果中断请求被允时,如果中断请求被允许,单片机暂时中止当前正在执行的主程序,转到中断许,单片机暂时中止当前正在执行的主程序,转到中断服务处理程序处理中断服务请求。服务处理程序处理中断服务请求。 34 中断服务处理程序处理完中断服务请求后,中断服务处理程序处理完中断服务请求后,再回到原来被中止的程序之处(断点),继续再回到原来被中止的程序之处(断点),继续执行被中断的主程序。执行被中断的主程序。 图图4-1为整个中
3、断响应和处理过程。为整个中断响应和处理过程。5 5图图4-1 中断响应和处理过程中断响应和处理过程主程序主程序断点断点入入口口地地址址中断服务程序中断服务程序7 如果单片机没有中断系统如果单片机没有中断系统,单片机的大量时单片机的大量时间可能会间可能会浪费在查询是否有服务请求浪费在查询是否有服务请求发生的定时发生的定时查询操作上。查询操作上。 采用中断技术完全采用中断技术完全消除了单片机在查询方式消除了单片机在查询方式中的等待现象中的等待现象,大大地大大地提高了提高了单片机的单片机的工作效率工作效率和和实时性实时性。784.2 AT89S51中断系统结构中断系统结构 中断系统结构图如图中断系统
4、结构图如图4-2所示。所示。 中断系统有中断系统有5个个中断请求源中断请求源(简称中断源),(简称中断源),2个中断优先级,个中断优先级,可实现可实现两级两级中断服务程序中断服务程序嵌套嵌套。 每一中断源可用软件独立控制为每一中断源可用软件独立控制为允许中断允许中断或或关中断关中断状态,状态,中断优先级中断优先级均可用软件来设置。均可用软件来设置。 IE0TCONSCONINT0 IT0=0 IT0=1INT1 IT1=0 IT1=1TF0 IE1TF1T0T1TIRITXDRXDESET0EX0EX1ET1EA自然优先级自然优先级矢量矢量地址地址高级中断请求高级中断请求自然优先级自然优先级矢
5、量矢量地址地址低级中断请求低级中断请求PX0PT0PX1PT1PSIEIP中断标中断标志位志位中断源中断源允许允许总允许总允许中断中断优先优先级级图图4-2 AT89S51的中断系统结构示意图的中断系统结构示意图104.2.1 中断请求源中断请求源 由图由图4-2可见,可见,AT89S51中断系统共有中断系统共有5个中断请个中断请求源:求源:(1)INT0*外部中断请求外部中断请求0,中断请求信号,中断请求信号由由INT0* 引脚输入,引脚输入,中断请求标志为中断请求标志为IE0。(2)INT1*外部中断请求外部中断请求1,中断请求信号,中断请求信号由由INT1*引脚输入,引脚输入,中断请求标
6、志为中断请求标志为IE1。1011(3)定时器定时器/计数器计数器T0计数溢出发出的中断请计数溢出发出的中断请求,中断请求标志为求,中断请求标志为TF0。(4)定时器定时器/计数器计数器T1计数溢出发出的中断请计数溢出发出的中断请求,中断请求标志为求,中断请求标志为TF1。(5)串行口串行口中断请求,中断请求标志为发送中中断请求,中断请求标志为发送中断断TI或接收中断或接收中断RI。124.2.2 中断请求标志寄存器中断请求标志寄存器 中断源是否有中断请求,是由中断请求标志来中断源是否有中断请求,是由中断请求标志来表示的。表示的。5个中断请求源的个中断请求源的中断请求标志中断请求标志分别由分别
7、由TCON和和SCON的相应位锁存(见图的相应位锁存(见图4-2)。)。 12131. TCON寄存器寄存器为为定时器定时器/计数器计数器的的控制寄存器,控制寄存器,字节地址为字节地址为88H,可可位寻址。位寻址。特殊功能寄存器特殊功能寄存器TCON的格式如图的格式如图4-3所示。所示。图图4-3 特殊功能寄存器特殊功能寄存器TCON的格式的格式14TCON各标志位功能如下:各标志位功能如下:(1)TF1定时器定时器/计数器计数器T1的溢出的溢出中断请求标志位。中断请求标志位。当当T1计数产生溢出时,由计数产生溢出时,由硬件使硬件使TF1置置“1”,向向CPU申请中断。申请中断。CPU响应响应
8、TF1中断时,中断时,TF1标志标志由硬由硬件自动清件自动清“0”,TF1也可由软件清也可由软件清“0”。(2)TF0定时器定时器/计数器计数器T0的溢出的溢出中断请求标志位,中断请求标志位,功能与功能与TF1类似。类似。1415(3)IE1外部中断请求外部中断请求1的的中断请求标志位。中断请求标志位。(4)IE0外部中断请求外部中断请求0的的中断请求标志位,中断请求标志位,功能与功能与IE1类似。类似。(5)IT1选择外部中断请求选择外部中断请求1为为跳沿触发跳沿触发还是还是电平触发。电平触发。 IT1=0,电平触发,电平触发方式,引脚方式,引脚 上上低电平有效,低电平有效,并把并把IE1置
9、置“1”。转向中断服务程序时,由。转向中断服务程序时,由硬件自动硬件自动把把IE1清清“0”。 IT1=1,跳沿触发,跳沿触发方式,加到引脚方式,加到引脚 上的外部中断请求输上的外部中断请求输入信号电平从高到低的入信号电平从高到低的负跳变有效,负跳变有效,并把并把IE1置置“1”。转。转向中断服务程序时,由向中断服务程序时,由硬件自动硬件自动把把IE1清清“0”。16(6)IT0选择外部中断请求选择外部中断请求0为跳沿触发方式为跳沿触发方式还是电平触发方式,其意义与还是电平触发方式,其意义与IT1类似。类似。 AT89S51复位复位后,后,TCON被清被清“0”,5个中断个中断源的中断请求标志
10、均为源的中断请求标志均为0。 TR1(D6位)、位)、TR0(D4位)这位)这2位与中断系位与中断系统无关,统无关,将在第将在第6章定时器章定时器/计数器中介绍。计数器中介绍。16172. SCON寄存器寄存器 串行口控制寄存器,串行口控制寄存器,字节地址为字节地址为98H,可位寻址。,可位寻址。 低二位低二位锁存串行口的发送中断和接收中断的中断请锁存串行口的发送中断和接收中断的中断请求标志求标志TI和和RI,格式如图格式如图4-4所示。所示。 17图图4-4 SCON中的中断请求标志位中的中断请求标志位18各标志位的功能:各标志位的功能: (1)TI串行口的串行口的发送发送中断请求标志位。中
11、断请求标志位。每发送完每发送完一一帧帧串行数据后,串行数据后,TI自动置自动置“1”。TI标志标志必须由软件清必须由软件清“0”。(2)RI串行口串行口接收接收中断请求标志位。中断请求标志位。串行口接收完串行口接收完一个串行数据帧,硬件自动使一个串行数据帧,硬件自动使RI中断请求标志置中断请求标志置“1”。必须必须在中断服务程序中在中断服务程序中用指令对用指令对RI清清“0”。194.3 中断允许与中断优先级的控制中断允许与中断优先级的控制 中断允许中断允许控制由中断允许寄存器控制由中断允许寄存器IE控制。控制。 中断优先级中断优先级控制由中断优先级寄存器控制由中断优先级寄存器IP控制。控制。
12、4.3.1 中断允许寄存器中断允许寄存器IE AT89S51的对各中断源的开放或屏蔽,是由中断允的对各中断源的开放或屏蔽,是由中断允许寄存器许寄存器IE控制的。控制的。 IE字节地址为字节地址为A8H,可位寻址,可位寻址,格式如图格式如图4-5所示。所示。1920 图图4-5 中断允许寄存器中断允许寄存器IE的格式的格式IE对中断的开放和关闭实现对中断的开放和关闭实现两级控制。两级控制。总的开关中断控制位总的开关中断控制位EA(IE.7位),位),EA=0时,所有的中断请求被屏蔽;时,所有的中断请求被屏蔽;EA=1时,开放中断,但时,开放中断,但5个中断源的中断请求是否允许,个中断源的中断请求
13、是否允许,还要由还要由IE中的低中的低5位位所所对应的对应的5个中断请求允许控制位个中断请求允许控制位的状态的状态来决定(图来决定(图4-5)。)。2021IE中各位功能如下:中各位功能如下:(1)EA中断允许中断允许总开关总开关控制位。控制位。 EA=0,所有的中断请求被屏蔽。所有的中断请求被屏蔽。 EA=1,所有的中断请求被开放。所有的中断请求被开放。(2)ES串行口中断允许位。串行口中断允许位。 ES=0,禁止串行口中断。禁止串行口中断。 ES=1,允许串行口中断。允许串行口中断。(3)ET1定时器定时器/计数器计数器T1的溢出中断允许位。的溢出中断允许位。 ET1=0,禁止禁止T1溢出
14、中断。溢出中断。 ET1=1,允许允许T1溢出中断。溢出中断。2122(4)EX1外部中断外部中断1中断允许位。中断允许位。 EX1=0,禁止外部中断禁止外部中断1中断。中断。EX1=1,允许外部中断允许外部中断1中断。中断。(5)ET0定时器定时器/计数器计数器T0的溢出中断允许位。的溢出中断允许位。ET0=0,禁止禁止T0溢出中断。溢出中断。ET0=1,允许允许T0溢出中断。溢出中断。(6)EX0外部中断外部中断0中断允许位。中断允许位。EX0=0,禁止外部中断,禁止外部中断0中断。中断。EX0=1,允许外部中断允许外部中断0中断。中断。23AT89S51复位复位以后,以后,IE被清被清“
15、0”,所有所有中断请求被中断请求被禁止。禁止。IE中与各个中断源相应的位可用指令置中与各个中断源相应的位可用指令置“1”或或清清“0”。若使某一个中断源被允许中断,若使某一个中断源被允许中断,除了除了IE相应的位被相应的位被置置“1”外,还必须使外,还必须使EA位置位置“1”。改变改变IE的内容,的内容,可由可由位操作指令位操作指令来实现(即来实现(即SETB bit;CLR bit),也可用),也可用字节操作指令字节操作指令实现。实现。2324【例例4-1】 若允许片内若允许片内2个定时器个定时器/计数器中断,并禁计数器中断,并禁止其他中断源的中断请求,请编写设置止其他中断源的中断请求,请编
16、写设置IE的相应程序的相应程序段。段。(1)用位操作指令)用位操作指令CLRES;禁止串行口中断;禁止串行口中断 CLREX0;禁止外部中断;禁止外部中断0中断中断CLREX1;禁止外部中断;禁止外部中断1中断中断SETBET0;允许定时器;允许定时器/计数器计数器T0中断中断SETBET1;允许定时器;允许定时器/计数器计数器T1中断中断SETBEA ;总中断开关位开放;总中断开关位开放(2)用字节操作指令)用字节操作指令MOVIE,#8AH上述两段程序对上述两段程序对IE的设置是相同的。的设置是相同的。24254.3.2 中断优先级寄存器中断优先级寄存器IP AT89S51的中断请求源有的
17、中断请求源有两个中断优先级,两个中断优先级,由软件由软件分别设置为分别设置为高高优先级中断优先级中断或或低低优先级中断,优先级中断,可实现:可实现: 两级中断嵌套两级中断嵌套 AT89S51正在执行低优先级中断的服务程序时,可正在执行低优先级中断的服务程序时,可被高优先级中断请求所中断,待高优先级中断处理完毕被高优先级中断请求所中断,待高优先级中断处理完毕后,再返回低优先级中断服务程序。后,再返回低优先级中断服务程序。两级中断嵌套两级中断嵌套的的过过程程如图如图4-6所示。所示。252626图图4-6 两级中断嵌套的过程两级中断嵌套的过程27各中断源的中断优先级关系,可归纳为各中断源的中断优先
18、级关系,可归纳为两条基本规则:两条基本规则:(1)低低优先级优先级可被可被高高优先级优先级中断,中断,高高优先级优先级不能被不能被低低优先级优先级中断。中断。如果某一中断源被设置为高优先级中断,则如果某一中断源被设置为高优先级中断,则不能被任何其他的中断源的中断请求所中断。不能被任何其他的中断源的中断请求所中断。(2)任何一种任何一种中断中断一旦得到响应,一旦得到响应,不会被同级中断源不会被同级中断源所中断。所中断。 中断优先级寄存器中断优先级寄存器IP,其其字节地址为字节地址为B8H,可可位寻址。位寻址。只要用程序改变其内容,可进行各中断源只要用程序改变其内容,可进行各中断源中断优先级的设中
19、断优先级的设置,置,IP寄存器的格式如图寄存器的格式如图4-7所示。所示。2728 图图4-7 IP寄存器的格式寄存器的格式中断优先级寄存器中断优先级寄存器IP各位的含义各位的含义如下:如下:(1)PS串行口中断优先级控制位串行口中断优先级控制位 1:高优先级高优先级0:低优先级低优先级(2)PT1定时器定时器T1中断优先级控制位中断优先级控制位 1:高优先级高优先级0:低优先级低优先级2829(3)PX1外部中断外部中断1中断优先级控制位中断优先级控制位1:高优先级高优先级0:低优先级低优先级(4)PT0定时器定时器T0中断优先级控制位中断优先级控制位1:高优先级高优先级0:低优先级低优先级
20、(5)PX0外部中断外部中断0中断优先级控制位中断优先级控制位1:高优先级高优先级0:低优先级低优先级中断优先级控制寄存器中断优先级控制寄存器IP用位操作指令或字节操作指令可用位操作指令或字节操作指令可更新更新IP的内容,以改变中断优先级。的内容,以改变中断优先级。AT89S51复位复位以后,以后,IP的的内容为内容为0,各个中断源各个中断源均为低优先均为低优先级级中断。中断。2930AT89S51的中断系统有的中断系统有两个两个不可寻址的不可寻址的“优先级激活优先级激活触发器触发器”。一个指示某高优先级一个指示某高优先级的的中断中断正在执行,所有后来的中正在执行,所有后来的中断均被阻止;断均
21、被阻止;另一个触发器指示某低优先级另一个触发器指示某低优先级的的中断中断正在正在执行,所有同级的中断都被阻止,但不阻断高优先级的执行,所有同级的中断都被阻止,但不阻断高优先级的中断请求。中断请求。在同时收到在同时收到几个同优先级的中断请几个同优先级的中断请求求时,哪一个中断时,哪一个中断请求能优先得到响应,请求能优先得到响应,取决于内部的查询顺序。取决于内部的查询顺序。这相当这相当于在同一个优先级内,还同时存在另一个辅助优先级结于在同一个优先级内,还同时存在另一个辅助优先级结构,其查询顺序见表构,其查询顺序见表4-1。3031 表表4-1 同级中断的查询次序同级中断的查询次序由此可见,各中断源
22、在同一个优先级的条件下,由此可见,各中断源在同一个优先级的条件下,外外部中断部中断0的中断优先权的中断优先权最高,最高,串行口中断串行口中断优先权优先权最低。最低。3132【例例4-2】 IP寄存器初始化,寄存器初始化,AT89S51的的两个外中断两个外中断请求请求为为高优先级,其他中断请求为低优先级。高优先级,其他中断请求为低优先级。(1)用位操作指令)用位操作指令SETB PX0;外中断;外中断0设置为高优先级设置为高优先级SETB PX1;外中断;外中断1设置为高优先级设置为高优先级CLR PS;串行口设置为低优先级;串行口设置为低优先级CLR PT0;定时器;定时器/计数器计数器T0为
23、低优先级为低优先级CLR PT1;定时器;定时器/计数器计数器T1为低优先级为低优先级 (2)用字节操作指令)用字节操作指令MOV IP,#05H32334.4 响应中断请求的条件响应中断请求的条件中断请求被响应,中断请求被响应,必须满足以下必要条件:必须满足以下必要条件:(1)总中断允许总中断允许开关接通,即开关接通,即IE寄存器中的中断总允寄存器中的中断总允许位许位EA=1。(2)该中断源发出中断请求,即)该中断源发出中断请求,即对应的中断请求标志对应的中断请求标志为为“1”。(3)该中断源的)该中断源的中断允许位置中断允许位置“1”,即该中断被允许。即该中断被允许。(4)无同级无同级或或
24、更高级中断更高级中断正在被服务。正在被服务。当当CPU查询到有效的中断请求时,在满足上述条件时,查询到有效的中断请求时,在满足上述条件时,紧接着就进行中断响应。紧接着就进行中断响应。3334中断响应的过程:中断响应的过程:首先由首先由硬件自动生成硬件自动生成一条长调用指令一条长调用指令“LCALL addr16”。就是程序存储区中就是程序存储区中相应的中断入口地址。相应的中断入口地址。例如,例如,对于外部中断对于外部中断1的响应,硬件自动生成的长调用指的响应,硬件自动生成的长调用指令为令为 LCALL 0013H首先将程序计数器首先将程序计数器PC的内容的内容压入堆栈压入堆栈以保护断点,再将以
25、保护断点,再将中断入口地址装入中断入口地址装入PC,使程序转向响应中断请求的中断入使程序转向响应中断请求的中断入口地址。口地址。各中断源服务程序的各中断源服务程序的入口地址,入口地址,如表如表4-2所示。所示。3435 表表4-2 中断入口地址表中断入口地址表 两个中断入口间只相隔两个中断入口间只相隔8字节,字节,难以安放一个完整的难以安放一个完整的中断服务程序。因此,中断服务程序。因此,通常在中断入口地址处通常在中断入口地址处放置一放置一条无条件转移指令,条无条件转移指令,使程序执行转向使程序执行转向中断服务程序入中断服务程序入口。口。3536中断响应是有条件的,当遇到下列中断响应是有条件的
26、,当遇到下列三种情况三种情况之一时,中之一时,中断响应被断响应被封锁:封锁:(1)CPU正在处理同级或更高优先级正在处理同级或更高优先级的中断。的中断。(2)所查询的机器周期)所查询的机器周期不是当前正在执行指令的最后一不是当前正在执行指令的最后一个机器周期。个机器周期。只有在当前指令执行完毕后,才能进行中断只有在当前指令执行完毕后,才能进行中断响应,以响应,以确保确保当前当前指令执行的完整性。指令执行的完整性。(3)正在执行的指令是)正在执行的指令是RETI或是或是访问访问IE或或IP的指令。的指令。因为按照因为按照AT89S51中断系统的规定,在执行完这些指令后,中断系统的规定,在执行完这
27、些指令后,需要再执行完一条指令,才能响应新的中断请求。需要再执行完一条指令,才能响应新的中断请求。 如果存在上述三种情况之一,如果存在上述三种情况之一,CPU将丢弃中断查询结果,将丢弃中断查询结果,不能对中断进行响应。不能对中断进行响应。36374.5 外部中断的响应时间外部中断的响应时间 使用使用外部中断外部中断时,需考虑从时,需考虑从外部中断请求到转向中外部中断请求到转向中断入口地址所需的时间。断入口地址所需的时间。 外部中断的外部中断的最短最短响应时间为响应时间为3个机器周期个机器周期。其中中断其中中断请求请求标志位查询占标志位查询占1个个机器周期,机器周期,而这个机器周期而这个机器周期
28、恰好恰好处于指令的最后一个机器周期。处于指令的最后一个机器周期。在这个机器周期结束后,在这个机器周期结束后,中断即被响应,中断即被响应,CPU接着执行一条接着执行一条硬件子程序调用指令硬件子程序调用指令LCALL到相中断服务程序入口,到相中断服务程序入口,需要需要2个个机器周期。机器周期。3738 外部中断响应的外部中断响应的最长最长时间为时间为8个机器周期。个机器周期。在在CPU进行中断标志查询时,刚好才开始执行进行中断标志查询时,刚好才开始执行RETI或访或访问问IE或或IP的指令,需执行完指令再继续执行一条指令后,的指令,需执行完指令再继续执行一条指令后,才响应中断。才响应中断。 执行执
29、行RETI或访问或访问IE或或IP的指令,最长需要的指令,最长需要2个机器个机器周期。周期。 接着再执行一条指令,最长指令(乘法指令接着再执行一条指令,最长指令(乘法指令MUL和除法指令和除法指令DIV)来算,也只有)来算,也只有4个个机器周期。机器周期。再加上硬再加上硬件子程序调用指令件子程序调用指令LCALL的执行,需要的执行,需要2个个机器周期,机器周期,所以,外部中断响应的最长时间为所以,外部中断响应的最长时间为8个机器周期。个机器周期。39 如果已经在如果已经在处理同级或更高级中断,处理同级或更高级中断,外部中外部中断请求的响应时间取决于正在执行的中断服务程断请求的响应时间取决于正在
30、执行的中断服务程序的处理时间,这种情况下,序的处理时间,这种情况下,响应时间就无法计响应时间就无法计算了。算了。 这样,在一个这样,在一个单一中断单一中断的系统里,的系统里,AT89S51单片机对外部中断请求的响应时间总是在单片机对外部中断请求的响应时间总是在38个个机器周期机器周期之间。之间。39404.6 外部中断的触发方式选择外部中断的触发方式选择两种触发方式:两种触发方式:电平触发电平触发方式和方式和跳沿触发跳沿触发方式。方式。4.6.1 电平触发方式电平触发方式外部中断申请触发器的状态随着外部中断申请触发器的状态随着CPU在每个机器周期在每个机器周期采样到的外部中断输入引脚的电平变化
31、而变化。采样到的外部中断输入引脚的电平变化而变化。在在中断服务程序返回之前,外部中断请求输入必须无中断服务程序返回之前,外部中断请求输入必须无效效(即外部中断请求输入已由低电平变为高电平),否(即外部中断请求输入已由低电平变为高电平),否则会再次响应中断。则会再次响应中断。所以本方式所以本方式适合于适合于外部中断外部中断以低电平输入以低电平输入且中断服务且中断服务程序能程序能清除外部中断请求源清除外部中断请求源(即外部中断输入电平又变(即外部中断输入电平又变为高电平)的情况。为高电平)的情况。40414.6.2 跳沿触发方式跳沿触发方式外部中断申请触发器能外部中断申请触发器能锁存外部中断输入线
32、上的锁存外部中断输入线上的负跳负跳变。变。即使不能响应,中断请求标志不丢失。即使不能响应,中断请求标志不丢失。相继连续两次采样,一个机器周期为高,下一个机器相继连续两次采样,一个机器周期为高,下一个机器周期采样为低,则中断申请触发器置周期采样为低,则中断申请触发器置1,直到,直到CPU响应响应此中断时,才清此中断时,才清0。输入的输入的负脉冲宽度负脉冲宽度至少保持至少保持12个时钟周期,个时钟周期,才能被采才能被采样到。样到。适合适合于以于以负脉冲形式负脉冲形式输入的外部中断请求。输入的外部中断请求。41424.7 中断请求的撤销中断请求的撤销某中断请求被响应后,就存在着中断请求的撤销问题。某
33、中断请求被响应后,就存在着中断请求的撤销问题。1. 定时器定时器/计数器中断请求的撤销计数器中断请求的撤销 硬件自动硬件自动把中断请求标志位(把中断请求标志位(TF0或或TF1)清清0,自,自动撤销。动撤销。2. 外部中断请求的撤销外部中断请求的撤销 (1)跳沿方式外部中断请求的撤销)跳沿方式外部中断请求的撤销 包括两项:包括两项:中断标志位清中断标志位清0和和外中断信号的撤销。外中断信号的撤销。 中断标志位清中断标志位清0是在中断响应后由是在中断响应后由硬件自动完成硬件自动完成的。的。 外中断请求信号的撤销,外中断请求信号的撤销,由于跳沿信号过后也就消由于跳沿信号过后也就消失了,失了,自动撤
34、销。自动撤销。4243(2)电平方式外部中断请求的撤销)电平方式外部中断请求的撤销电平方式外中断请求的撤销,其电平方式外中断请求的撤销,其中断请求标志自动撤销,中断请求标志自动撤销,但中断请求信号的低电平可能继续存在,为此,除了标志位但中断请求信号的低电平可能继续存在,为此,除了标志位清清“0”之外,还需在中断响应后之外,还需在中断响应后把中断请求信号输入引脚从把中断请求信号输入引脚从低电平低电平强制改变为强制改变为高电平,高电平,如图如图4-8所示。所示。 43图图4-8 电平方式的外部中断请求的撤销电路电平方式的外部中断请求的撤销电路44由图由图4-8,用,用D触发器锁存触发器锁存外来的中
35、断请求外来的中断请求低电平低电平,并通并通过过D触发器的输出端触发器的输出端Q接到接到 INT0* (或(或 INT1* )。所以,)。所以,增加的增加的D触发器不影响中断请求。触发器不影响中断请求。中断响应后,利用中断响应后,利用D触发器的触发器的SD端接端接AT89S51的的P1.0端。端。因此,只要因此,只要P1.0端端输出一个负脉冲输出一个负脉冲就可以使就可以使D触发器置触发器置“1”,撤销低电平的中断请求信号。撤销低电平的中断请求信号。负脉冲负脉冲可在中断服务程序中增加如下指令:可在中断服务程序中增加如下指令:ORL P1,#01H;P1.0为为“1”ANL P1,#0FEH;P1.
36、0为为“0”ORL P1,#01H;P1.0为为“1”44453. 串行口中断请求的撤销串行口中断请求的撤销响应串行口的中断后,响应串行口的中断后,CPU无法知道是接收中断还是无法知道是接收中断还是发送中断,还需测试这两个中断标志位,以发送中断,还需测试这两个中断标志位,以判定是接收判定是接收操作还是发送操作,操作还是发送操作,然后才清除。所以串行口中断请求然后才清除。所以串行口中断请求的撤销的撤销只能使用只能使用软件软件的方法,的方法,在中断服务程序中进行,在中断服务程序中进行,即用如下指令在中断服务程序中对串行口中断标志位进即用如下指令在中断服务程序中对串行口中断标志位进行清除:行清除:C
37、LR TI ;清;清TI标志位标志位CLR RI ;清;清RI标志位标志位 45464.8 中断服务子程序的设计中断服务子程序的设计1中断服务子程序设计的任务中断服务子程序设计的任务任务有下列任务有下列4条:条:(1)设置中断允许控制寄存器设置中断允许控制寄存器IE,允许相应中断请允许相应中断请求源中断。求源中断。(2)设置中断优先级寄存器设置中断优先级寄存器IP,确定所使用的中断确定所使用的中断源优先级。源优先级。(3)若是外部中断源,若是外部中断源,还要设置中断请求的还要设置中断请求的触发方触发方式式决定采用电平触发方式还是跳沿触发方式。决定采用电平触发方式还是跳沿触发方式。(4)编写中断
38、服务子程序,编写中断服务子程序,处理中断请求。处理中断请求。4647 前前3条一般放在主程序的初始化程序段中。条一般放在主程序的初始化程序段中。【例例4-3】 假设假设允许允许外部中断外部中断0中断,中断,设定为设定为高级高级中断,中断,采用采用跳沿触发跳沿触发方式,方式,其他中断源为低级中断。其他中断源为低级中断。初始化初始化程序如下:程序如下:SETB EA; EA 位置位置1, 总中断开关位开放总中断开关位开放SETB EX0;EX0位置位置1,允许外部中断,允许外部中断0产生中断产生中断SETB PX0;PX0位置位置1, 外部中断外部中断0为高优先级中断为高优先级中断SETB IT0
39、; IT0位置位置1, 外部中断外部中断0为跳沿触发方式为跳沿触发方式47482采用中断时的主程序结构采用中断时的主程序结构程序必须先从程序必须先从主程序起始地址主程序起始地址0000H执行。所以,在执行。所以,在0000H起始地址的几个字节中,起始地址的几个字节中,用用无条件转移指令,无条件转移指令,跳向跳向主程序。主程序。另外,各中断入口地址之间依次相差另外,各中断入口地址之间依次相差8字节,中断服务字节,中断服务子程序稍长就超过子程序稍长就超过8字节,这样中断服务子程序就占用了字节,这样中断服务子程序就占用了其他的中断入口地址,影响其他中断源的中断处理。为此其他的中断入口地址,影响其他中
40、断源的中断处理。为此一般在进入中断后,用一般在进入中断后,用一条无条件转移指令,一条无条件转移指令,把中断服务把中断服务子程序子程序跳转到跳转到远离其他中断入口的远离其他中断入口的入口地址入口地址处。处。4849常用的常用的主程序结构主程序结构如下:如下: ORG 0000H LJMP MAIN ORG X1X2X3X4H ;某;某中断源的中断入口中断源的中断入口 LJMP INT ;INT为某中断源的为某中断源的中断入口标号中断入口标号 ORG Y1Y2Y3Y4H ;Y1Y2Y3Y4H为为主程序入口主程序入口MAIN: 主程序主程序INT: 中断服务子程序中断服务子程序注意:注意:如果有多个
41、中断源,就有多个如果有多个中断源,就有多个“ORG X1X2X3X4H”的入口地址,多个的入口地址,多个“中断入口地址中断入口地址”必须依次由小到大必须依次由小到大排列。排列。主程序主程序MAIN的起始地址的起始地址Y1Y2Y3Y4H,根据具体情,根据具体情况来安排。况来安排。49503中断服务子程序的流程中断服务子程序的流程中断服务子程序的基本中断服务子程序的基本流程如图流程如图4-9所示。下面所示。下面对有关中断服务子程序对有关中断服务子程序执行过程中的一些问题执行过程中的一些问题进行说明。进行说明。 50图图4-9 中断子服务程序的基本流程中断子服务程序的基本流程51(1)现场保护和现场
42、恢复)现场保护和现场恢复现场现场是指单片机中是指单片机中某些寄存器某些寄存器和和存储器单元存储器单元中的中的数据数据或或状状态。态。为使中断服务子程序的执行不破坏这些数据或状态,因为使中断服务子程序的执行不破坏这些数据或状态,因此要此要送入堆栈保存送入堆栈保存起来,这就是起来,这就是现场保护。现场保护。 现场保护现场保护一定要一定要位于位于中断处理程序的中断处理程序的前面。前面。中断处理结束中断处理结束后,在返回主程序前,则需要把保存的现场内容从堆栈中弹后,在返回主程序前,则需要把保存的现场内容从堆栈中弹出恢复原有内容,这就是出恢复原有内容,这就是现场恢复。现场恢复。现场恢复现场恢复一定要一定
43、要位于位于中断处理的中断处理的后面。后面。AT89S51的堆栈操作指令:的堆栈操作指令:“PUSH direct”和和“POP direct”,是供现场保护和现,是供现场保护和现场恢复使用的。场恢复使用的。5152(2)关中断和开中断)关中断和开中断 现场保护前现场保护前和和现场恢复前现场恢复前关中断,关中断,是为防止此时有高一级的是为防止此时有高一级的中断进入,避免现场被破坏。中断进入,避免现场被破坏。现场保护和现场恢复之后现场保护和现场恢复之后的的开中断开中断是为下一次的中断做好准是为下一次的中断做好准备,也为了允许有更高级的中断进入。这样,中断处理可以被备,也为了允许有更高级的中断进入。
44、这样,中断处理可以被打断,但原来的现场保护和现场恢复不允许更改,除了现场保打断,但原来的现场保护和现场恢复不允许更改,除了现场保护和现场恢复的片刻外,仍然保持着中断嵌套的功能。护和现场恢复的片刻外,仍然保持着中断嵌套的功能。但有时候,一个重要的中断,必须执行完毕,不允许被其他但有时候,一个重要的中断,必须执行完毕,不允许被其他的中断嵌套。的中断嵌套。可在现场保护前先关闭总中断开关位,待中断处可在现场保护前先关闭总中断开关位,待中断处理完毕后再开总中断开关位。这样,需把图理完毕后再开总中断开关位。这样,需把图4-9中的中的“中断处中断处理理”步骤前后的步骤前后的“开中断开中断”和和“关中断关中断
45、” 去掉。去掉。5253(3)中断处理)中断处理 应用设计者根据任务的具体要求,来编写中断处理部应用设计者根据任务的具体要求,来编写中断处理部分的程序。分的程序。(4)中断返回)中断返回中断服务子程序中断服务子程序最后一条指令必须是返回指令最后一条指令必须是返回指令RETI。CPU执行完这条指令后,执行完这条指令后,把响应中断时所置把响应中断时所置1的不可寻址的不可寻址的优先级状态触发器清的优先级状态触发器清0,然后从堆栈中弹出栈顶上的两然后从堆栈中弹出栈顶上的两个字节的断点地址送到程序计数器个字节的断点地址送到程序计数器PC,弹出的第一个字,弹出的第一个字节送入节送入PCH,弹出的第二个字节
46、送入,弹出的第二个字节送入PCL,从断点处重,从断点处重新执行主程序。新执行主程序。5354【例例4-4】 根据图根据图4-9流程,编写中断服务程序。设现场保护流程,编写中断服务程序。设现场保护只将只将PSW寄存器和累加器寄存器和累加器A的内容压入堆栈中保护。一个典型的内容压入堆栈中保护。一个典型的中断服务子程序如下:的中断服务子程序如下:INT:CLR EA ;CPU关中断关中断PUSH PSW;现场保护;现场保护PUSH AccSETB EA;总中断允许;总中断允许中断处理段中断处理段 CLR EA;关中断;关中断POP Acc;现场恢复;现场恢复POP PSWSETB EA;总中断允许;
47、总中断允许RETI;中断返回,恢复断点;中断返回,恢复断点5455上述程序上述程序几点说明:几点说明:(1)本例的)本例的现场保护假设仅仅涉及现场保护假设仅仅涉及PSW和和A的内容,的内容,如有其他需要保护的内容,只需在相应位置再加几条如有其他需要保护的内容,只需在相应位置再加几条PUSH和和POP指令即可。注意,堆栈的操作是先进后出。指令即可。注意,堆栈的操作是先进后出。(2)“中断处理程序段中断处理程序段”,设计者应根据中断任务的,设计者应根据中断任务的具体要求,来编写中断处理程序。具体要求,来编写中断处理程序。(3)如果不允许被其他的中断所中断,可将)如果不允许被其他的中断所中断,可将“
48、中断处中断处理程序段理程序段”前后的前后的“SETB EA”和和“CLR EA”两条指两条指令去掉。令去掉。(4)最后一条指令必须是返回指令最后一条指令必须是返回指令RETI,不可缺少,不可缺少,CPU执行完这条指令后,返回断点处,重新执行被中断的执行完这条指令后,返回断点处,重新执行被中断的主程序。主程序。 55564.9 多外部中断源系统设计多外部中断源系统设计实际的应用中,实际的应用中,两个外部中断请求源往往不够用,两个外部中断请求源往往不够用,需对需对外部中断源进行扩充,如图外部中断源进行扩充,如图4-10所示。系统有所示。系统有5个外部中个外部中断请求源断请求源IR0IR4,高电平有
49、效。高电平有效。最高级的请求源最高级的请求源IR0直接接到直接接到AT89S51的一个外部中断的一个外部中断请求输入端请求输入端 INT0*,其余,其余4个请求源个请求源IR1IR4通过各自的通过各自的OC门(集电极开路门)连到门(集电极开路门)连到AT89S51的另一个外中断源的另一个外中断源输入端输入端 INT1* ,同时还连到,同时还连到P1口的口的P1.0P1.3脚,供脚,供AT89S51查询。查询。图图4-10所示电路,除了所示电路,除了IR0优先权级别最高优先权级别最高外,外,其余其余4个个外部中断源外部中断源的中断优先权的中断优先权取决于查询顺序取决于查询顺序。565757图图4
50、-10 中断和查询相结合的多外部中断请求源系统中断和查询相结合的多外部中断请求源系统58若图若图4-10中的中的4个外设中有一个外设提出高电平有效的个外设中有一个外设提出高电平有效的中断请求信号,则中断请求通过中断请求信号,则中断请求通过4个集电极开路个集电极开路OC门的输门的输出公共点,即出公共点,即INT1*脚的电平就会变低。究竟是哪个外设脚的电平就会变低。究竟是哪个外设提出的请求,要提出的请求,要通过程序查询通过程序查询P1.0P1.3引脚上的逻辑电引脚上的逻辑电平平来确定。来确定。本例假设某一时刻只能有一个外设提出中断请求,并设本例假设某一时刻只能有一个外设提出中断请求,并设IR1IR
51、4这这4个中断请求源的高电平可由相应的中断服务个中断请求源的高电平可由相应的中断服务子程序清子程序清“0”,则中断服务子程序如下:,则中断服务子程序如下:ORG0013H ; INT1*的中断入口的中断入口LJMPINT1 ORG0100H5859INT1:PUSH PSW ;保护现场;保护现场 PUSH AccJB P1.0,IR1 ;如;如P1.0为高,则为高,则IR1有请求,跳有请求,跳IR1处理处理JB P1.1,IR2 ;如;如P1.1为高,则为高,则IR2有请求,跳有请求,跳IR2处理处理 JB P1.2,IR3 ;如;如P1.2为高,则为高,则IR3有请求,跳有请求,跳IR3处理
52、处理 JB P1.3,IR4 ;如;如P1.3为高,则为高,则IR4有请求,跳有请求,跳IR4处理处理INTIR: POP Acc ;恢复现场;恢复现场 POP PSW RETI ;中断返回;中断返回5960IR1:AJMP INTIR ;IR1处理完,跳处理完,跳INTIR处执行处执行IR2: AJMP INTIR ;IR2处理完,跳处理完,跳INTIR处执行处执行IR3: AJMP INTIR ;IR3处理完,跳处理完,跳INTIR处执行处执行IR4: AJMP INTIR ;IR4处理完,跳处理完,跳INTIR处执行处执行查询法扩展外部中断源比较简单,但是扩展的外查询法扩展外部中断源比较
53、简单,但是扩展的外部中断源个数较多时,查询时间稍长。部中断源个数较多时,查询时间稍长。60IR1的中断处理子程序IR2的中断处理子程序IR3的中断处理子程序IR4的中断处理子程序614.9.2 用优先权编码器扩展外部中断源用优先权编码器扩展外部中断源 当需要处理的外部中断源数目较多而又要求响应速度当需要处理的外部中断源数目较多而又要求响应速度很快时,上述的软件查询方法常常满足不了时间上的要很快时,上述的软件查询方法常常满足不了时间上的要求。因为在外部中断源很多的情况下,响应优先级最高求。因为在外部中断源很多的情况下,响应优先级最高的中断和响应优先级最低的中断所需的查询时间可能相的中断和响应优先
54、级最低的中断所需的查询时间可能相差很大。如果采用差很大。如果采用硬件硬件对外部中断源进行优先级排队就对外部中断源进行优先级排队就可避免这个问题。下面介绍采用优先权编码器扩展外部可避免这个问题。下面介绍采用优先权编码器扩展外部中断源的方法。中断源的方法。 74LS148是一种是一种优先权编码器,优先权编码器,利用利用74LS148扩展扩展AT89S51外部中断源的电路如图外部中断源的电路如图4-11所示,所示,74LS148的真的真值表见表值表见表4-1。74LS148具有具有8个输入端个输入端“07”,用作,用作8个外部中断请求个外部中断请求IR0*IR7*输入端,输入端,3个编码输出端个编码
55、输出端A2A0与单片机的与单片机的P1.3P1.1口线相连,编码器输出控口线相连,编码器输出控制端与单片机的外中断请求输入脚制端与单片机的外中断请求输入脚INT1*相连。相连。 62图图4-11 扩展扩展8个外部中断源的硬件电路个外部中断源的硬件电路6364 在使能端在使能端EI*端端为为低电平低电平的情况下,只要其的情况下,只要其8输入端中输入端中任一输入为低电平,就有一组相应的编码从任一输入为低电平,就有一组相应的编码从A2A0端输端输出,且同时编码器输出端输出为低电平。出,且同时编码器输出端输出为低电平。 如果如果8中断源中断源IR0*IR7*中有多个中断请求时(低有中有多个中断请求时(
56、低有效),其优先权最高的一组编码就出现在单片机的效),其优先权最高的一组编码就出现在单片机的P1.3P1.1口线上,此时口线上,此时GS*端为低电平,则端为低电平,则AT89S51的的INT1*端就为低电平,若中断被允许,就可以响应外部端就为低电平,若中断被允许,就可以响应外部中断源所提出的中断请求。中断源所提出的中断请求。65 例如,中断请求源例如,中断请求源IR1*、IR4*与与IR6* 同时发出中同时发出中断请求的情况下,断请求的情况下, GS*端为低电平,向端为低电平,向INT1*发出中发出中断请求,同时断请求,同时A2A0端仅输出中断优先级最高的编码端仅输出中断优先级最高的编码“001”,当,当单片机响应该中断请求信号后,进入单片机响应该中断请求信号后,进入INT1*中断服务子程序,然后读入从中断服务子程序,然后读入从P1.3P1.1输入的输入的编码编码“001”,从而去响应的中断请求。,从而去响应的中断请求。 为了使程序转向各中断源的中断服
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度水电设施建设与运营维护合同样本4篇
- 二零二五年度信用卡透支抵押合同模板4篇
- 二零二五年度电力设备出口销售合同(含远程监控)4篇
- 2025年度建筑材料行业环保责任保险合同2篇
- 二零二五年度定制款窗户安装及维护服务合同4篇
- 二零二五年度山地林业合作开发合同4篇
- 2025年电力设施安检服务采购协议书3篇
- 二零二五版电动汽车销售与充电桩投资建设合同3篇
- 2025年度城市轨道交通钻孔工程承包协议4篇
- 二零二五年度绿城地产项目物业服务收费标准调整合同4篇
- GB/T 37238-2018篡改(污损)文件鉴定技术规范
- 普通高中地理课程标准简介(湘教版)
- 河道治理工程监理通知单、回复单范本
- 超分子化学简介课件
- 高二下学期英语阅读提升练习(一)
- 易制爆化学品合法用途说明
- 【PPT】压力性损伤预防敷料选择和剪裁技巧
- 大气喜庆迎新元旦晚会PPT背景
- DB13(J)∕T 242-2019 钢丝网架复合保温板应用技术规程
- 心电图中的pan-tompkins算法介绍
- 羊绒性能对织物起球的影响
评论
0/150
提交评论