第5章 MCS-51中断系统_第1页
第5章 MCS-51中断系统_第2页
第5章 MCS-51中断系统_第3页
第5章 MCS-51中断系统_第4页
第5章 MCS-51中断系统_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第5章 MCS-51中断系统,5.1 中断系统,5.2 中断的控制寄存器,5.3 中断的响应过程,5.4 多中断源系统,5.5基本应用,5. 1中断系统,5.1.1中断系统结构 (1)中断的定义和作用 CPU与外设(如键盘、显示器等)沟通通常有两种方式:查询方式和中断方式、查询方式是CPU按照某种既定法则,依次询问每一个外设I/O是否需要服务,这种方法CPU要花费大量的时间等待对外设的查询结果,效率较低. 中断问题主要是为解决快速的CPU和慢速的外设之间的矛盾而提出的。,中断系统是计算机的重要指标之一。,某人看书 执行主程序 日常事务 电话铃响 中断信号INT=0 中断请求 暂停看书 暂停执行

2、主程序 中断响应 书中作记号 当前PC入栈 保护断点 电话谈话 执行I/O程序 中断服务 继续看书 返回主程序 中断返回,中断概念,所谓中断:是指CPU对系统中或系统外发生的某个事件(如系统断电)的一种响应过程。 中断由中断源产生,中断源在需要时可以向CPU提出“中断请求”。“中断请求”通常是一种电信号,CPU一旦对这个电信号进行检测和响应,便暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序。当处理结束后,再返回到被暂停程序的断点处,继续执行原来的程序。,中断系统:实现这种中断功能的硬件系统和软件系统统称为中断系统。 中断系统是微型计算机系统重要组成部分,有了中断系统,

3、微型计算机可以实现以下功能。 多任务/同步工作 计算机有了中断以后,可以使CPU和外设同步工作,CPU启动外设工作后,就继续执行主程序,而外设把数据准备好后,发出中断请求,请求CPU中断源程序的执行,转去执行输入输出(中断处理)程序。,例如,计算机与打印机连接,计算机可以快速传送一行字符给打印机(由于打印机存储容量有限,不能一次传送很多),打印机开始打印字符,CPU可以不必理会打印机,处理自己的工作。等打印机打印该行字符完毕,发给CPU一个信号请求中断,CPU响应后中断正在处理的工作,转而再传送一行字符给打印机。这样,在打印机打印字符期间,CPU不必等待或查询,自行处理自己的工作,同时可以指挥

4、多个外设同时工作,从而大大提高了CPU的工作效率。,实时处理 在实时控制中,现场采集到的各种数据可以在任一时刻发出中断请求,要求CPU处理,若中断是开放的,则CPU就可以马上对数据进行处理。 故障处理 微型计算机系统在实际运行时,常会出现一些故障,如电源突然掉电、硬件自检出错等。利用中断,就可以自行执行处理故障的中断服务程序,而不必停机。,(2)中断系统的结构 8051单片机的中断系统由中断源、与中断有关的特殊功能寄存器及顺序查询逻辑电路等组成. 其内部结构如图1-18所示。2016年11月30日,单片机工作条件,图1-10 89C51单片机工作条件接线图,由图1-18可知,8051单片机有5

5、个中断请求源。 4个用于中断控制的特殊功能寄存器IE、IP、TCON(用6位)、SCON(用2位),可提供两个优先级,实现二级中断嵌套。 0000 H:单片机复位后,PC=0000H,即程序从0000 H开始执行指令。 0003H:外部中断0入口地址。 000BH:定时器0溢出中断入口地址。 0013H:外部中断1入口地址。 001BH:定时器1溢出中断入口地址。 0023H:串行口中断入口地址。,中断请求源 在中断系统中,通常将引起中断的设备或事件称为中断请求源,简称中断源。 8051单片机提供了5个中断源,即/INT0(P3. 2端子)和/INT1(P3. 3端子)2个外部中断源;2个内部

6、定时器计数器溢出中断(TF0、TF1)和1个串行口发送接收中断,这些中断请求源分别由特殊功能寄存器TCON和SCON的相应位锁存。,/INT0:外部中断0,低电平有效,有低电平触发和负跳变触发两种触发方式,由定时器计数器控制寄存器TCON的第0位IT0置1或复0来控制。中断信号由单片机的P3.2端子输入,在每个周期的S5P2采样P3. 2端子,有效信号到来后将TCON中的中断标志位IE0置1,向CPU提请中断。,/INT1:外部中断1,低电平有效,触发方式同/INT0。中断信号由单片机的P3. 3端子输入,在每个周期的S5 P2采样P3. 3端子,有效信号到来后将TCON中的中断标志位IEl置

7、1,向CPU提请中断。,定时器T0溢出中断:当定时器计数器T0计数溢出,TH0, TL0所有位均变为0,并向特殊功能寄存器TCON中的中断标志位TF0进位,将TF0置1,得到中断允许后,向CPU提请中断。 定时器T1溢出中断:当定时器计数器T1计数溢出,TH1、TLl所有位均变为0,并向特殊功能寄存器TCON中的中断标志位TF1进位,将TF1置1,得到中断允许后,向CPU提请中断。,串行口发送(TXD)及接收(RXD )中断:当串行口完成一帧数据的发送(或接收),就将串行口控制寄存器SCON中的发送(或接收)标志位TI(或RI)置1,得到中断允许后,向CPU请求中断处理。 中断控制寄存器 单片

8、机中断系统的控制由4个与中断有关的特殊功能寄存器IE(中断允许寄存器)、IP(中断优先级寄存器)、TCON(定时器计数器控制寄存器)(用6位)及SCON(串行口控制寄存器)(用2位)来完成。,中断优先级 当有多个中断源同时发出中断请求时,CPU需确定哪个中断更紧迫,以便首先响应。系统给每个中断源一个优先权,这就是中断优先级。这样当多个中断源同时提出申请时,优先级高的中断能先被响应,只有优先级高的中断处理完毕后,才能响应优先级低的中断。,当已有中断发生时,优先级更高的中断能中断现行中断而优先执行,待处理完毕后再恢复处理被中断的低级中断,也即高级中断能中断低级中断,即中断嵌套,如图1-19所示。,

9、8051单片机中断源的优先级有两级,可实现两级中断嵌套。对每个中断源而言,可设置成高优先级中断或低优先级中断,这可通过对中断优先级寄存器IP的控制来实现。同一优先级别的中断源不止一个,所以也有个中断优先权排队的间题。其排队顺序由中断系统通过内部硬件查询确定,用户无法自行更改。,5.2中断控制寄存器(1)定时器计数器中断控制寄存器TCON,1.中断标志位: TF1、TF0、IE1、IE0、RI 、TI 登记各中断源请求信号:=1,有中断请求;= 0,无中断请求。 CPU响应中断后,该中断标志自动清零。TI,RI标志必须软件清零。,2.外部中断触发方式选择位:IT0、IT1 =1:负边沿触发中断请

10、求;= 0:低电平触发中断请求。,5.2中断控制寄存器,(1)定时器计数器中断控制寄存器TCON TCON中与中断有关的各位名称、地址格式如下。,字节地址 88H 位地址 8FH 8DH SBH 8AH 89H 88H TCON为定时器计数器控制寄存器,其字节地址为88H,可位寻址。它除了控制定时器计数器0和1的溢出中断外,还控制外部中断的触发方式和锁存外部中断请求标志。各位的含义如下。,TF1 定时器计数器Tl溢出中断请求标志 当定时器计数器T1计数溢出后,由 CPU内硬件将TF1位自动置1,表示向CPU请求中断。CPU响应该中断后,片内硬件自动对其清零。 TF1也可由软件程序查询其状态或由

11、软件置位清零。,TF0定时器计数器T0溢出中断请求标志。当定时器计数器T0计数溢出后,由CPU内硬件将TF0位自动置1,其功能与操作同TF1. IE1外部中断/INT1请求标志。当/INT1处于电平触发方式时,CPU在每个周期的S5P2采样/INT1,若检测到/INTl端子为低电平,则认为有中断请求,使IE1置位,向CPU申请中断。,当/INT1处于边沿触发方式时,CPU在每个周期的S5P2采样/INT1,若检测到/INT1端子前一周期为高电平,后一周期为低电平,则认为有中断请求,使标志位IE1置1,向CPU申请中断。在有效信号到来后将TCON中的中断标志位IE1置1,向CPU提请中断。,IE

12、0外部中断/INT0请求标志。其功能与操作同IE1。 IT1外部中断/INT1触发方式选择位。T1=0,为低电平触发;IT1=1,为负跳变触发。 IT0外部中断/INT0触发方式选择位。其功能与操作同IT1。,(2)串行口控制寄存器SCON SCON中与中断有关的只有两位,其名称、地址格式如下。,SCON为串行口控制寄存器,字节地址为98H,可位寻址。 TI串行口发送中断请求标志。在进行串行口数据通信时,每发送完一帧数据,由硬件自动将TI置位,向CPU申请中断。 RI串行口接收中断请求标志。每接收完一帧数据,由硬件自动将RI置位,向CPU申请中断。 CPU在响应串行发送、接收中断后,TI, R

13、I不能自动清零,必须由用户用软件清零。,(3)中断允许控制寄存器IE,中断允许控制位:EA、ES、ET1、EX1、ET0、EX0 =1开中断;= 0关中断。 例:允许CPU响应INT0的中断请求 SETB EX0 SETB EA,(3)中断允许控制寄存器IE 计算机中断系统中有两种不同类型的中断:一类称为非屏蔽中断;另一类称为可屏蔽中断。 对非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断请求,CPU必须予以响应。但对可屏蔽中断,用户则可通过软件方法来控制是否允许某中断源的中断。 允许中断称中断开放,不允许中断称中断屏蔽 8051系列单片机的5个中断源都是可屏蔽中断。CPU对中断源的中断开放

14、或中断屏蔽的控制是通过中断允许控制寄存器IE实现的,IE既可按字节地址寻址,其字节地址为A8 H,又可按位寻址。当CPU复位时,IE所有位被清零。,字节地址A8 位地址AFH ACH ABH AAHA9HA8H IE寄存器的名称、地址格式如下:,EA中断允许总控位。 EA=0,屏蔽所有中断请求;EA=1,开放所有的中断请求。 EA的作用是使中断允许形成两级控制。即各中断源首先受EA位的控制;其次还要受各中断源自己的中断允许控制位控制。 ES串行口中断允许位。ES=0,禁止串行口中断;ES= 1,允许串行口中断。,ET1定时器计数器T1的溢出中断允许位。ET1=0,禁止T1中断;ET1=1,允许

15、T1中断。 EX1外部中断1(/INT1)中断允许位。EX1=0禁止/INT1中断;EX1=1,允许/INT1中断。 ET0定时器计数器T0的溢出中断允许位。ET0=0,禁止T0中断;ET0 =1,允许T0中断 EX0外部中断0(/INT0)中断允许位。EX0=0,禁止T0(/INT0)中断;EX0 =1,允许/INT0中断,需要说明的是51型单片机对中断实行两级控制,若想开放某一中断源,首先要EA=1,其次还要自身的控制位置置1。例如,要使定时器计数器T1中断开放,其余中断禁止, 需执行下列语句: SETB EA SETB ET1 或MOV IE,10001000B 或MOV IE,88H,

16、(4)中断优先级寄存器IP,中断优先级控制位:PS、PT1、PX1、PT0、PX0 2级优先级:=1为高优先级,= 0为低优先级。 同一优先级别按内部查询顺序排列优先级: 高 INT0、T0、INT1、T1、SIO 低。,(4)中断优先级寄存器IP 8051单片机有两个中断优先级,各中断源优先级通过设置寄存器IP的各位置位或清零来控制,中断优先级控制寄存器IP各位名称、地址格式如下:,PS串行口中断优先级控制位 PT1定时器计数器T1中断优先级控制位。 PX1外部中断1(/INT1)中断优先级控制位。 PT0定时器计数器T0中断优先级控制位 PX0外部中断0( /INT0)中断优先级控制位 若

17、以上某一控制位被置1,则相应的中断源就被设定高优先级中断;若以上某一控制位被清零,则相应的中断源就被设定为低优先级中断。 由于8051系列单片机有多个中断源,但却只有两个优先级,因此,必然会有若干中断源处于同一中断优先级。,为解决同一中断优先级中的不同中断源同时向CPU申请中断时CPU的响应顺序问题,单片机又规定了同一中断优先级中中断优先权的顺序,如表1-8所示。,同一中断优先级中,若有两个中断源同时请求中断,CPU将先响应优先权高的中断,后响应优先权低的中断。同级中断源的中断优先权顺序由系统硬件规定,用户无法改变。,CPU在响应中断时,还需遵循以下基本规则。 CPU同时接收到几个中断请求时,

18、首先响应优先权最高的中断请求。 正在进行的低优先级中断服务程序能被高优先级中断请求所中断,实现两级中断嵌套,但不能被同级中断请求所中断。 正在进行的高级中断服务程序不能被同级或低级中断请求所中断,只有该中断服务程序结束,返回了主程序且执行了主程序的一条指令后,CPU才响应新的中断请求。,为了实现上述几条规则,单片机的中断系统内设置了两个用户不可寻址的优先级状态触发器。其中一个用来指示CPU正在为某高优先级的中断服务,并阻止所有其他的中断申请;另一个则指示CPU正在为某低优先级的中断服务,并阻止所有低优先级的中断,但不阻止高优先级的中断。,例如,若某单片机系统需使用三个中断源,即定时器计数器0中

19、断、外部中断1和串行口中断,若要求它们的优先级顺序为外部中断1最高,定时器计数器0中断其次,串行口中断最低,则只需把中断优先级控制寄存器IP的PX1位置1,其余位清零,就可实现该系统对优先顺序的要求。,5. 3中断响应过程,(1)中断响应条件 单片机响应中断的条件是: 中断源有请求; CPU允许所有中断源请求(EA=1); 中断允许寄存器IE相应位置1. 这样CPU在每一机器周期的S5P2状态顺序查询每一个中断源,到机器周期的S6状态时,便将有效的中断请求按优先权次序排好。但当有下列三种情况之一发生时,中断查询结果将被取消,下一机器周期继续查询。,CPU正在响应的中断为所查询中断的同级或更高级

20、中断。 当前指令未执行到最后一个周期。 当前执行的指令为中断返回指令RETI或访问IE, IP指令(如SETB EA)。 这是因为CPU在执行RETI或访问IE、IP指令后,至少需要再执行一条指令才会响应新的中断请求。,(2)中断响应过程 当中断请求符合以上条件时,CPU就在执行完当前指令的下一个机器周期S1期间响应中断,响应过程如下。 单片机首先中止正在运行的程序,并置位相应的中断优先级触发器,以阻止CPU再响应同级或更低级中断请求。 把中断点(断点地址),也就是当前程序计数器PC中内容压入堆栈,以便执行到中断服务程序中的RETI指令时按此地址返回原程序执行。 执行长调用指令,转入 相应中断

21、源入口,即将相应中断源入口地址装入程序计数器PC。,由于各中断源的入口地址之间彼此相差仅8个字节,这8个字节用来存放中断服务程序通常是不够的,因此,可在入口地址处存放一条三字节长调用指令,CPU执行这条长调用指令便可转入相应中断服务程序执行。 例如,若串行口中断服务程序始地址在3000H单元,则执行中断服务程序需执行以下指令: ORG 0023H LJMP 3000H,执行中断服务程序,保护现场。 单片机响应中断后,只保护断点而不保护现场(如累加器A、程序状态字寄存器PSW等中的内容),因此,在中断服务程序中首先要保存有关的寄存器内容(压入堆栈),完成中断处理后,还要恢复这些寄存器内容。,中断

22、的处理过程,中断服务程序的末尾,需安排一条中断返回指令RETI,以便能够返回主程序。 中断返回指令的功能是把断点地址(中断前主程序的地址)送回程序计数器PC,以便CPU可以继续执行被中断的主程序。因此,由中断请求有效到执行中断服务程序的第一条指令,至少需要3个完整的机器周期。,(3)中断响应时间 由上述可知,CPU不是在任何情况下都对中断请求立即响应,而是不同的情况对中断响应的时间也不同。在实时控制系统中,经常需弄清CPU响应中断所需的时间。,响应中断的最短时间为3个机器周期。 以外部中断为例,外部中断信号在每个机器周期的S5 P2时被采样并锁存在IE0或IE1中,CPU在下一个机器周期才会查

23、询到这些值,如果满足响应条件,CPU响应中断,需执行一条两个机器周期的长调用指令,以转到相应的中断服务程序入口。,响应中断的最长时间通常为8个机器周期。 若CPU正在执行RETI(或访问IE/IP)指令的第一个机器周期中查询到了某中断请求,则CPU需再执行一条指令才会响应中断,这种情况下,中断响应的时间就为8个机器周期。 这8个机器周期的时间分配是这样的:查询中断请求为一个机器周期;执行RETI一个机器周期,执行RETI下一个指令最长需4个机器周期;执行跳转指令最长需2个机器周期。 一般情况下,8051单片机响应中断的时间在3-8个机器周期之间。当然,若CPU正在执行同级或高级中断服务程序,则

24、新中断请求需要等待的时间将更长。,(4)中断请求的撤除 中断源发出的中断请求在被CPU响应前,是由CPU锁存在TCON和SCON寄存器内 的(标志位置1)。CPU响应中断后,必须清除相应中断源的中断请求标志,否则中断响应返回后会重复响应该中断,引起出错,定时器计数器溢出中断请求的撤除 TF0, TF1是定时器计数器T0, T1溢出中断请求标志,CPU响应该中断请求后会自动将标志位清零,用户不必进行任何操作。 串行口中断请求的撤除 对于串行口中断标志TI或RI, CPU响应该中断请求后不会自动清除该位,用户可以在中断服务程序的适当位置处用软件加以清除,具体指令如下。CLR TI;撤除发送中断 C

25、LR RI;撤除接收中断 也可采用如下字节型指令: ANL SCON,0FCH;撤除发送和接收中断,外部中断请求的撤除 外部中断请求有两种触发方式:电平触发和边沿触发。对于不同的触发方式,CPU撤除中断请求的方法是不同的。,当外部中断请求为边沿触发方式时,CPU响应中断后可用硬件自动清除相应位的中断请求标志,用户可不必考虑。 因为外部中断源(/INT0或/INT1)在得到CPU的中断服务时是不可能再在(/INT0或/INT1)端子上产生负边沿而使相应中断标志位IE0或IE1置位的.,当外部中断请求为电平触发方式时,尽管CPU响应中断时,也用硬件自动清除了相应中断标志位IE0或IE1,但由于(/

26、INT0或/INT1)端子上的低电平信号若继续保持下去,一般可能保持时间较长,中断请求标志IE0或IE1就会再次被置1,从而发生重复响应中断的情况。,硬件撤出外中断请求,一种可供采用的外中断电平触发中断请求撤除电路如图1-21所示。,当外部设备有中断请求时,中断请求信号经反相器,加到锁存器CP端,作为CP脉冲.由于D端接地为0,Q端输出低电平,触发/INT0产生中断。当CPU响应中断后,可在中断服务程序开头安排如下程序 ANL P1,0FEH ORL P1,01H CLR IE0 单片机执行上述程序就可在P1.0上产生一个宽度为两个机器周期的负脉冲加到锁存器SP端(强迫置1端)。在该负脉冲作用

27、下,Q触发器被置位成1状态,/INT0上的电平也因此而变高,从而撤除了其上的中断请求。,中断服务程序的一般格式,5.4 多中断源系统,当外部中断源多于中断输入引脚时,可采取以下措施: 1.用定时器/计数输入信号端T0、T1作外部中断入口引脚 2.用串行口接收端RXD作外部中断入口引脚,3.用一个中断入口接受多个外部中断源,并加入中断查询电路。,5.5基本应用 中断系统的应用主要包括编制中断初始化程序和编制中断服务程序。 (1)中断初始化 中断初始化应在中断请求前完成,一般放在主程序中。主要包括以下几方面。 设置堆栈指针SP堆栈. 深度要求不高且工作寄存器组不用时,可维持复位状态。否则可设置SP

28、为50H或60H以上。 定义中断优先级。涉及多个中断源时可通过 MOV IP,XXH或SETB XX指令设置。 定义外部中断触发方式,并注意中断请求信号的撤除。 开放中断。SETB EA 或 ORL IE,#80H CLR EA 或 ANL IE,#7FH,(2)中断服务程序 中断服务程序的内容主要有以下几方面。 在中断服务入口设置一条转移指令,转移到中断服务程序的实际入口处。 根据需要保护现场。如涉及到Acc, PSW, DPTR等特殊功能寄存器中的内容需要保护,则应压入堆栈,但数量越少越好。最好保护前关中断,保护后开中断 中断源请求中断服务的操作。 恢复现场。 中断返回,必须使用RETI指

29、令。,(3)中断系统应用举例 例1:电路连接如图1-22所示,编写程序使主程序执行时,8051 P0所接发光二极管 由P0. 7至P0. 0循序,一次亮一颗。当中断产生后,8颗发光二极管全亮,然后全灭,如此执行8次后返回主程序。,解设置中断允许控制寄存器IE,置中断控制寄存器TCON,编程如下,例2某工业监控系统,具有温度、压力、pH值等多路监控功能,中断源的连接如 图所示。对于pH值,在小于7时向CPU申请中断,CPU响应中断后使P3. 0端子输出高电平,经放大,使加碱管道电磁阀接通1s,驱动电机以调整pH值。,分析:设接通电磁阀延时1s由延时子程序来实现。该程序已存在,只调用即可。连接图中

30、把多个中断源通过“线或”接于P3. 2(/INT0)端子上,那么检测到的中断请求无法知道是哪一个中断源的请求。这在响应了外部中断。进入中断服务程序后,可通过对P1口线的逐一检测来确定。 下面进一步假设4个中断服务程序入口地址分别为INT00、INT01, INT02, INT03,并只针对pH7时的中断响应处理进行中断服务程序设计。,例3要求每次按动按键,使外接发光二极管LED改变一次亮灭状态。 解:INT0输入按键信号,P1.0输出改变LED状态。 1跳变触发:每次跳变引起一次中断请求。,ORG 0000H;复位入口 AJMP MAIN ORG0003H;中断入口AJMPPINT0 ORG0

31、100H;主程序 MAIN:MOV SP,#40H;设栈底 SETBEA;开总允许开关 SETBEX0;开INT0中断 SETBIT0;负跳变触发中断 H:SJMPH ;执行其它任务 ORG0200H;中断服务程序 PINT0:CPL P1.0;改变LED RETI;返回主程序,1软件等待按键释放。 2硬件清除中断信号。,2. 电平触发:避免一次按键引起多次中断响应。,ORG 0000H;复位入口 AJMP MAIN ORG0003H;中断入口AJMPPINT0 ORG0100H;主程序 MAIN:MOV SP,#40H;设栈底 SETBEA;开总允许开关 SETBEX0;开INT0中断 CLRIT0;低电平触发中断 H:SJMPH ;执行其它任务 ORG0200H;中断服务程序 PINT0:CPL P1.0;改变LED WAIT:JNBP3.2,WAIT;等按键释放 RETI;返回主程序,MCS-51中断系统的应用,1、中断系统初始化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论