STC89C52单片机中断系统

上传人:M****1 文档编号:578469572 上传时间:2024-08-24 格式:PPT 页数:57 大小:1.58MB
返回 下载 相关 举报
STC89C52单片机中断系统_第1页
第1页 / 共57页
STC89C52单片机中断系统_第2页
第2页 / 共57页
STC89C52单片机中断系统_第3页
第3页 / 共57页
STC89C52单片机中断系统_第4页
第4页 / 共57页
STC89C52单片机中断系统_第5页
第5页 / 共57页
点击查看更多>>
资源描述

《STC89C52单片机中断系统》由会员分享,可在线阅读,更多相关《STC89C52单片机中断系统(57页珍藏版)》请在金锄头文库上搜索。

1、5.1 中断概念中断概念 5.2 5.2 STC89C52单片机中断系统单片机中断系统 5.2.1中断系统结构中断系统结构 5.2.2 中断源中断源 5.2.3 中断请中断请求标志求标志 5.2.4 中断控制寄存器中断控制寄存器5.3 中断响应中断响应 5.3.1 中断响应条件中断响应条件 5.3.2 外部中断响应时间外部中断响应时间 5.3.3 中断请求的撤销中断请求的撤销5.4中断程序的设计中断程序的设计本章主要内容:叙述中断概念和基本的中断术语,介绍STC89C52单片机中断系统的组成,详细叙述与中断有关的特殊功能寄存器各位功能和作用,叙述中断响应的硬件处理过程、中断响应的条件、外部中断

2、响应时间、中断请求撤销的方法,叙述中断服务子程序设计要考虑的几个问题、采用中断时的主程序结构、中断服务子程序的流程,最后以边沿触发的外部中断仿真示例结束中断定义:中断定义: 当机器正在执行程序的过程当机器正在执行程序的过程中,一旦遇到一些异常或特殊请中,一旦遇到一些异常或特殊请求时,就停止正在执行的程序,求时,就停止正在执行的程序,而转入必要的处理,并在处理完而转入必要的处理,并在处理完毕后,立即返回断点继续执行。毕后,立即返回断点继续执行。中断响应过程中断响应过程 图5-1关于中断有如下术语:关于中断有如下术语:中断源:中断源:发出中断请求的设备称为中断请发出中断请求的设备称为中断请求源,简

3、称中断源。求源,简称中断源。中断向量:中断向量:所谓中断向量就是中断服务程所谓中断向量就是中断服务程序的入口地址。序的入口地址。中断响应:中断响应:对于中断请求给出的处理。对于中断请求给出的处理。中断嵌套:中断嵌套:在中断服务程序中又响应了其在中断服务程序中又响应了其它中断请求,该过程称为中断嵌套。它中断请求,该过程称为中断嵌套。高优先级中断请求可以打断低优先级中断,高优先级中断请求可以打断低优先级中断,反之,低优先级中断请求不可以打断高优反之,低优先级中断请求不可以打断高优先级及同优先级中断。当两个相同优先级先级及同优先级中断。当两个相同优先级中断同时产生时,将由查询次序来决定系中断同时产生

4、时,将由查询次序来决定系统先响应哪个中断。统先响应哪个中断。中断嵌套实现过程:图5-25.2STC89C52单片机中断系统5.2.1中断系统结构STC89C51RC/RD+系列单片机的中断系统结构示意图如图5-2所示,该中断系统由中断源、中断标志、中断允许控制寄存器和中断优先级控制寄存器等构成。5.2.2中断源传统的51系列单片机5个基本中断源为:外部中断0(),中断服务程序入口地址为0003H,中断请求标志为IE0。定时器0,中断服务程序入口地址为000BH,中断请求标志为TF0。外部中断1(),中断服务程序入口地址为0013H,中断请求标志为IE1定时器1,中断服务程序入口地址为001BH

5、,中断请求标志为TF1。串行口中断(UART),中断服务程序入口地址为0023H,中断请求标志为TI和RI,STC89C52单片机在5个中断源基础上增加三个中断源为:定时器2,中断服务程序入口地址为002BH,中断请求标志为TF2和EXF2。外部中断2(),中断服务程序入口地址为0033H,中断请求标志为IE2。外部中断3(),中断服务程序入口地址为003BH,中断请求标志为IE3。注意:此处INTi(i=0,1,2,3),低电平有效。当外部有中断触发信号时,硬件自动将标志IEi(i=0,1,2,3)置1,定时器i(i=0,1,2)当定时时间到时,硬件自动将标志TFi(i=0,1,2)置1。表

6、5-1中断源、中断向量地址和中断请求标志表返回5.2.3 中断请求标志中断请求标志STC89C52单片机中断请求标志由TCON、SCON、T2CON、XICON特殊功能寄存器相应位来锁定。TCONTF1 TR1 TF0 TR0 IE1IT1IE0IT0IT1: 外部中断1的中断触发方式控制位IE1:外部中断1的中断请求标志 IT1,IE1含义类同外部中断0IT0: 外部中断0的中断触发方式控制位。若IT0=0,电平触发,若IT01,下降沿触发IE0:外部中断0的中断请求标志若IE0=0,无中断请求,若IE0=1,有中断请求1.TCON方式寄存器方式寄存器TCON(定时(定时/计数器的控制寄存器

7、)计数器的控制寄存器)字节地址:字节地址:88HD7D6D5D4D3D2D1D0TCONTF1 TR1 TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH 89H88H若若TF1=1,有中断请求,有中断请求;若若TF1=0无中断请求无中断请求TCONTF1 TR1 TF0 TR0IE1 IT1 IE0 IT0nTF0:定时:定时/计数器计数器0 溢出中断请求标志溢出中断请求标志计数器满产生溢出,它由硬件置位计数器满产生溢出,它由硬件置位若若TF0=1有中断请求有中断请求;若若TF0=0无中断请求无中断请求注意注意:中断响应时中断响应时,硬件会自动清标志位,也可由软件

8、清硬件会自动清标志位,也可由软件清0.TR1、TR0这这2位与中断系统无关,将在第位与中断系统无关,将在第6章定时器章定时器/计数器中介绍计数器中介绍TF1: 定时定时/计数器计数器1 溢出中断请求标志溢出中断请求标志2. SCON串行口控制寄存器串行口控制寄存器SCON字节地址:字节地址:98H,可位寻址可位寻址D7D6D5D4D3 D2 D1D0SCON TI RI位地址位地址99H 98HTI:串行口发送中断请求标志位:串行口发送中断请求标志位TI=1,CPU向串口的发送缓冲器向串口的发送缓冲器SBUF写入写入1B的数据的数据,就启动就启动1帧串行数据的发送帧串行数据的发送,送完后送完后

9、,硬件自动置位硬件自动置位TI.TI=0,无发送中断请求,无发送中断请求RI:串行口接收中断请求标志位:串行口接收中断请求标志位RI=1串行口接收完串行口接收完1个串行数据帧个串行数据帧,硬件自动置位硬件自动置位RI.RI0,无接收中断请求无接收中断请求注:响应串口中断时注:响应串口中断时,硬件并不清中断标志位硬件并不清中断标志位,由软件清由软件清0.复位后(复位后(SCON)=00HSCON TI RI3.T2CON方式寄存器方式寄存器T2CON(定时(定时/计数器计数器2的控制寄存的控制寄存器)字节地址:器)字节地址:C8H,可位寻址可位寻址D7D6D5D4D3D2D1D0T2CONTF2

10、-位地址CFHCEH CDHCCH CBHCAH C9H C8HT2CONTF2 - - - - - - -D7位位为为定定时时器器/计计数数器器2的的溢溢出出中中断断请请求求标标志志位位TF2,若若TF2=1有中断请求有中断请求;若若TF2=0无中断请求无中断请求D6-D0 这这7位位与与中中断断系系统统无无关关,将将在在第第6章章定定时时器器/计数器中介绍计数器中介绍4.XICONXICON寄存器为附加的控制寄存器,字节地址为寄存器为附加的控制寄存器,字节地址为C0H,可位寻址,可位寻址D7D6D5D4D3D2D1D0XICON-IE3IT3-IE2IT2位地址C7HC6HC5HC4HC3

11、HC2H C1H C0HXICON -IE3IT3 - -IE2IT2IT3:外部中断3的中断触发方式控制位IE3:外部中断3的中断请求标志 IT3和 IE3含义类同外部中断2.IT2:外部中断2的中断触发方式控制位。若IT2=0,电平触发,若IT21,下降沿触发IE2:外部中断2的中断请求标志若IE2=0,无中断请求,若IE2=1,有中断请求注意:对于注意:对于D2、D3、D6、D7位功能将在本章位功能将在本章5.2.4节讲解节讲解5.2.4 中断控制寄存器中断控制寄存器STC89C52单片机中断控制寄存器由IE、XICON、IP、IPH组成,各中断源的中断控制寄存器见表5-6所示。表5.6

12、表表5-6 RC/RD+ 系列系列8051单片机中断特殊功能寄存器单片机中断特殊功能寄存器一、一、 中断允许控制寄存器中断允许控制寄存器1. IE寄存器寄存器IE寄存器的字节地址为寄存器的字节地址为A8H,可位寻址,可位寻址,D7D6 D5D4D3D2D1D0IEEAET2 ESET1EX1 ET0 EX0位地址位地址 AFH ADHACHABHAAHA9HA8HET1:定时/计数器1的溢出中断允许位。EX1:外部中断1中断允许位ET0:定时/计数器0的溢出中断允许位. EX0:外部中断0中断允许位. IE EAET2 ESET1 EX1 ET0 EX0注意:各位都是:“1”允许中断,“0”禁

13、止中断ES;串行口中断允许位ET2:定时/计数器2的溢出/外部触发中断允许位.EA:中断允许总开关若若(IE)=85H问问:那些中断源打开那些中断源打开,那些那些被屏蔽被屏蔽?(IE)=1000 0101,外部中断外部中断0和外部中断和外部中断1打开打开,定定时中断时中断0、1、2和串行口中断被屏蔽。和串行口中断被屏蔽。若若(IE)=05H问问:那些中断源打开那些中断源打开,那些那些被屏蔽被屏蔽?(IE)=0000 0101,因总中断允许为因总中断允许为0,所有中断都,所有中断都被屏蔽。被屏蔽。【例例1】若允许片内3个定时器/计数器中断,并禁止其他中断源的中断请求,请编写设置IE的相应程序段。

14、(1)用位操作指令)用位操作指令CLRES CLREX0 CLREX1 SETBET0 SETBET1SETBET2 SETBEA (2)用字节操作指令)用字节操作指令MOV IE,#AAH;10101010B上述两段程序对IE的设置是相同的。272.XICON寄存器XICON寄存器的字节地址为C0H,可位寻址,数据位D7D6D5D4D3D2D1D0XICONEX3IE3IT3EX2IE2IT2位地址C7HC6H C5HC4HC3HC2HC1HC0HXICON EX3 IE3IT3 EX2 IE2IT2注意: XICON寄存器中D7、D3功能在本章本节中断优先级控制寄存器叙述. XICON寄存

15、器中D0、D1、D4、D5位功能在本章5.2.3节已有介绍,此处不重复叙述。(1)EX2附加的外部中断2中断允许位, EX2=1中断允许,EX2=0中断禁止。(2)EX3附加的外部中断3中断允许位, EX3=1中断允许,EX3=0中断禁止。二、中断优先级控制寄存器STC89C52单片机8个中断源硬件自动配置了相同优先级别的中断查询次序见表5-1,外部中断0最优先,依次是定时/计数器0、外部中断1、定时/计数器1、串行口中断、定时/计数器2、外部中断2、外部中断3为最低。STC89C52单片机有四级中断,通过软件来配置,由中断控制寄存器IP、IPH、XICON来设置。表表5-1数据位D7D6D5

16、D4D3D2D1D0IPPT2PSPT1PX1PT0PX0位地址BDHBCHBBHBAHB9HB8H1.IP寄存器寄存器 IP寄存器是中断优先级低位寄存器,字节地址为B8H,可位寻址返回(D0)PX0外部中断外部中断0中断优先级控制位中断优先级控制位低位低位(D1)PT0定时器定时器0中断优先级控制位中断优先级控制位 低位低位(D2)PX1外部中断外部中断1中断优先级控制位中断优先级控制位 低位低位(D3)PT1定时器定时器1中断优先级控制位中断优先级控制位 低位低位(D4)PS串行口中断优先级控制位串行口中断优先级控制位 低位低位(D5)PT2定时器定时器2中断优先级控制位中断优先级控制位

17、低位低位注意:注意:IP为各中断源中断优先级低位寄存器与各为各中断源中断优先级低位寄存器与各中断源中断优先级高位寄存器中断源中断优先级高位寄存器IPH配合来配置各配合来配置各个中断源的中断优先级,共有个中断源的中断优先级,共有4级。级。IPPT2 PSPT1PX1PT0PX0数据位D7D6D5D4D3D2D1D0IPHPX3HPX2HPT2HPSHPT1HPX1HPT0HPX0H2. IPH寄存器寄存器 IPH寄存器是中断优先级高位寄存器,字节地址为B7H,不能进行位寻址返回(D0)PX0H外部中断外部中断0中断优先级控制位高位中断优先级控制位高位(D1)PT0H定时器定时器0中断优先级控制位

18、高中断优先级控制位高位位(D2)PX1H外部中断外部中断1中断优先级控制位高中断优先级控制位高位位(D3)PT1H定时器定时器1中断优先级控制位高中断优先级控制位高位位(D4)PSH串行口中断优先级控制位高串行口中断优先级控制位高位位(D5)PT2H定时器定时器2中断优先级控制位高中断优先级控制位高位位(D6)PX2H外部中断外部中断2中断优先级控制位高位中断优先级控制位高位(D7)PX3H外部中断外部中断3中断优先级控制位高位中断优先级控制位高位注意:注意:IP为各中断源中断优先级低位寄存器与各中断源中断优先级高为各中断源中断优先级低位寄存器与各中断源中断优先级高位寄存器位寄存器IPH配合来

19、配置各个中断源的中断优先级,共有配合来配置各个中断源的中断优先级,共有4级。级。 IPHPX3HPX2HPT2HPSHPT1HPX1HPT0HPX0HXICON PX3EX3IE3IT3PX2 EX2IE2IT2注意: STC89C52单片机4级中断优先级由软件配置,它是由各个中断源的优先级高位和低位一起来配置,例如:外部中断2优先级高位PX2H和低位PX2配置,PX2H PX2=00,01,10,11,分别配置外部中断2为优先级0(最低),优先级1,优先级2,优先级3(最高),同理知8个中断源各优先级配置方法见表5-1中断优先级设置。PX2位对应附加外部中断2优先级配置的低位,PX3位对应附

20、加外部中断3优先级配置的低位。例如:将定时/计数器2设置为最高中断优先级3级,则有:MOV IP,#20HMOV IPH,#20H返回36IP【例例2】 IP、IPH寄存器初始化,STC89C52的两个外部中断两个外部中断0和和1请求为最高优先级即3级,定时/计数器0和1为中断优先级2级,其他中断请求为最低优先级。编写初始化程序。根据题意知:PX0HPX0=11,PX1HPX1=11,PT0HPT0=10,PT1HPT1=10,PT2HPT2=00,PSHPS=00,PX2HPX2=00,PX3HPX3=00MOV IP,#05H;00000101MOV IPH,#0FH;00001111MO

21、V XICON,#55H ;外部中断2和3下降沿触发,中断允许IPHXICON5.3 中断响应中断响应中断响应的过程:中断响应的过程:首先由硬件自动生成一条长调用指令自动生成一条长调用指令“LCALLaddr16”。就是程序存储区中相应的中断入口地址相应的中断入口地址。例如,例如,对于外部中断0的响应,硬件自动生成的长调用指令为LCALL 0003H首先将程序计数器PC的内容的内容压入堆栈压入堆栈以保护断点,再将中断入口地址装入中断入口地址装入PC,使程序转向响应中断请求的中断入口地址。各中断源服务程序的入口地址入口地址,如表5-1所示。37表5-11.响应中断请求的条件:必要条件:1)CPU

22、开中断,即EA=1.2)该中断源对应的中断请求标志为1.3)该中断源的中断允许位=14)无同级或更高级中断正在被服务.5.3.1 中断响应条件中断响应条件中断响应是有条件的,当遇到下列三种情况三种情况之一时,中断响应被封锁:(1)CPU正在处理同级或更高优先级正在处理同级或更高优先级的中断。(2)所查询的机器周期不是当前正在执行指令的最后一个机器周期不是当前正在执行指令的最后一个机器周期。只有在当前指令执行完毕后,才能进行中断响应,以确保当前指令执行的指令执行的完整性完整性。(3)正在执行的指令是RETI或是访问IE或IP的指令。因为按照AT89S51中断系统的规定,在执行完这些指令后,需要再

23、执行完一条指令,才能响应新的中断请求。如果存在上述三种情况之一,CPU将丢弃中断查询结果,不能对中断进行响应。395.5 外部中断的响应时间外部中断的响应时间使用外部中断外部中断时,需考虑从外部中断请求到转向中断入外部中断请求到转向中断入口地址所需的时间口地址所需的时间。外部中断的最短最短响应时间为响应时间为3个机器周期个机器周期。其中中断请求标志位查询占标志位查询占1个机器周期个机器周期,而这个机器周期恰好处于指令的最后一个机器周期。在这个机器周期结束后,中断即被响应,CPU接着执行一条硬件子程序调用指令硬件子程序调用指令LCALL到相中断服务程序入口,需要需要2个机器周期个机器周期。外部中

24、断响应的最长最长时间为时间为8个机器周期个机器周期。在CPU进行中断标志查询时,刚好才开始执行RETI或访问IE或IP的指令,需执行完指令再继续执行一条指令后,才响应中断。40执行RETI或访问IE或IP的指令,最长需要2个机器周期个机器周期接着再执行一条指令,最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个个机器周期机器周期。再加上硬件子程序调用指令LCALL的执行,需要2个个机器周期机器周期,所以,外部中断响应的最长时间为8个机器周期。如果已经在处理同级或更高级中断处理同级或更高级中断,外部中断请求的响应时间取决于正在执行的中断服务程序的处理时间,这种情况下,响应时间就无法计算了

25、。这样,在一个单一中断单一中断的系统里,STC89C52单片机对外部中断请求的响应时间总是在38个机器周期个机器周期之间5.3.3 中断请求的撤销中断请求的撤销某个中断请求被响应后,就存在着一个中断请求的撤销问题。1定时器定时器/计数器中断请求的撤销计数器中断请求的撤销在中断响应后,硬件会自动把中断请求标志位(TF0、TF1)清0,自动自动撤销撤销,TF2或EXF2使用软件清零。如CLRTF2或CLREXF22外部中断请求的撤销外部中断请求的撤销(1)跳沿方式外部中断请求的撤销)跳沿方式外部中断请求的撤销包括两项:中断标志位清中断标志位清0和外中断信号的撤销外中断信号的撤销。中断标志位清中断标

26、志位清0是在中断响应后由硬件自动完成的。外中断请求信号的撤销外中断请求信号的撤销,由于跳沿信号过后也就消失了,自动撤销。(2)电平方式外部中断请求的撤销)电平方式外部中断请求的撤销电平方式外中断请求的撤销,其中中断请求标志自动撤销,电平方式外中断请求的撤销,其中中断请求标志自动撤销,但中断请求信号的低电平可能继续存在,为此,除了标志位但中断请求信号的低电平可能继续存在,为此,除了标志位清清“0”之外,还需在中断响应后之外,还需在中断响应后把中断请求信号输入引脚从把中断请求信号输入引脚从低电平低电平强制改变为强制改变为高电平高电平,如,如图图5-3所示。所示。 43图5-3电平方式的外部中断请求

27、的撤销电路由图5-3,用D触发器锁存触发器锁存外来的中断请求外来的中断请求低电平低电平,并通过D触发器的输出端Q接到(或)。所以,增加的D触发器不影响中断请求。中断响应后,利用D触发器的SD端接AT89S51的P1.0端。因此,只要P1.0端输出一个负脉冲就可以使端输出一个负脉冲就可以使D触发器置触发器置“1”,撤销低电平的中断请求信号。负脉冲负脉冲可在中断服务程序中增加如下指令:ORL P1,#01H;P1.0为为“1”ANL P1,#0FEH;P1.0为为“0”ORL P1,#01H;P1.0为为“1”443串行口中断请求的撤销串行口中断请求的撤销响应串行口的中断后,CPU无法知道是接收中

28、断还是发送中断,还需测试这两个中断标志位,以判定是接收操作判定是接收操作还是发送操作还是发送操作,然后才清除。所以串行口中断请求的撤销只能使用只能使用软件软件的方法的方法,在中断服务程序中进行,即用如下指令在中断服务程序中对串行口中断标志位进行清除:CLR TI ;清;清TI标志位标志位CLR RI ;清;清RI标志位标志位45汇编语言:中断程序的设计汇编语言:中断程序的设计一、中断程序设计任务一、中断程序设计任务1)设置设置IE2)设置设置IP3)若为外部中断若为外部中断,需设置触发方式需设置触发方式.4)编写中断服务程序编写中断服务程序,处理中断请求处理中断请求.二、采用中断时的程序结构采

29、用中断时的程序结构:ORG0000HLJMPMAINORG中断入口地址中断入口地址LJMPINTMAIN:INT:主程序主程序中断服务程序中断服务程序三、中断服务程序流程关中断现场保护开中断中断处理关中断现场恢复开中断中断返回根据中断服务程序流程,编写中断服务程序。设现场保护只将PSW寄存器和累加器A的内容压入堆栈中保护。一个典型的中断服务子程序如下:INT:CLREA;CPU关中断PUSHPSW;现场保护PUSHAccSETB EA;总中断允许中断处理段中断处理段CLREA;关中断POPAcc;现场恢复POPPSWSETBEA;总中断允许RETI;中断返回,恢复断点49【例5-3】根据图5-

30、3.DSN所示,外部中断1为边沿触发的外部中断源,当按下按键K1,产生外部中断1信号,单片机读取输入信号P1.0-P1.3引脚,将采样到信号转换为输出信号去驱动相应发光二极管的亮灭,单片机的工作频率为11.0592MHz,编写相应驱动程序。图5-5程序清单程序清单:1.汇编程序中断方式ORG0000HLJMPMAIN;上电转向主程序ORG0013H;外部中断1入口地址LJMPEXINT1;指向中断服务子程序ORG0100H;主程序MAIN:MOV SP,#50HSETBIT1;选择边沿触发方式SETBEX1;允许外部中断1SETBEA;CPU允许中断HERE:AJMPHERE;主程序踏步以下是

31、中断服务子程序:以下是中断服务子程序:EXINT1: MOV P1,#0FFH MOV A,P1;读取读取P1口输入信号口输入信号 SWAP A;将采样到信号转换为输出信号将采样到信号转换为输出信号 MOV P1,A;输出信号驱动发光二极管输出信号驱动发光二极管 RETI ;中断返回中断返回 ENDKeil2.C语言程序、中断方式#include#defineucharunsignedcharvoidmain()ucharp1_Value=0;SP=0X50;/设置堆栈IT1=1;/设置外部中断1边沿触发EX1=1;/开放外部中断1中断申请EA=1; /开放总中断申请开关while(1)/踏步等待中断voidexint0(void)interrupt2/外部中断1中断服务子程序ucharp1_Value=0;P1=0xff;p1_Value=P1&0x0f;/读取PI口低4位键值p1_Value=p1_Value4;P1=p1_Value;/输出键值,驱动发光二极管汇编语言查询方式ORG 0000HSTART:SETBIT1HERE:JBP3.3,HEREEXINT1:MOVP1,#0FFHMOVA,P1SWAPAMOVP1,AAJMPHEREEND谢谢光临!结束放映返回本章首页

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号