第5章89c51的中断系统

上传人:今*** 文档编号:107030538 上传时间:2019-10-17 格式:PPT 页数:49 大小:406KB
返回 下载 相关 举报
第5章89c51的中断系统_第1页
第1页 / 共49页
第5章89c51的中断系统_第2页
第2页 / 共49页
第5章89c51的中断系统_第3页
第3页 / 共49页
第5章89c51的中断系统_第4页
第4页 / 共49页
第5章89c51的中断系统_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《第5章89c51的中断系统》由会员分享,可在线阅读,更多相关《第5章89c51的中断系统(49页珍藏版)》请在金锄头文库上搜索。

1、第5章 89C51的中断系统,所谓中断,是指CPU正在处理某些事务的时候,外部又发生了某一事件,请求CPU及时处理。于是,CPU暂时中断当前的工作,转而处理所发生的事件。处理完毕,再回到原来被中断的地方,继续原来的工作。这样的过程,称为中断。,5.1 概述,CPU处理事件的过程称为CPU的中断响应过程。 对事件整个处理过程称为中断处理(或中断服务)。 能够实现中断处理的功能部件称为中断系统。 产生中断请求的源称为中断请求源。 中断源向CPU提出的处理请求称为中断请求(或中断申请)。 CPU完成中断服务程序,继续执行被中断的主程序称为中断返回。,89C51的中断系统:,五个中断源,两个中断优先级

2、,可实现两级中断服务程序嵌套,每一个中断源可由软件独立地控制为允许中断或关中断状态;每一个中断源的中断级别可由软件来设置。,5.2 89C51中断系统的结构,89C51中断系统中断优先级,CPU,主程序,INT0,INT1,T0,T1,串口,IE0,TF0,IE1,TF1,TI,SI,中断源,中断标志位,单片机中有两个中断优先级,即高优先级中断和低优先级中断,前者优先权高于后者(可软件设置,在程序中设置,相应位=1,为高优先级); 同一优先级别的中断源按照自然优先级顺序确定优先级别(硬件形成,无法改变)。,中断允许,ES,ET0,EX0,EX1,ET1,EA,自然优先级,高,低,优先控制,PS

3、,PT0,PX0,PX1,PT1,89C51的中断系统结构图,中断标志位,中断源允许,总允许,中断优先级,89C51单片机有5个中断请求源:,外部输入中断源INT0(P3.2),中断请求标志为IE0,外部输入中断源INT1(P3.3),中断请求标志为IE1,定时器T0的溢出,中断请求标志为TF0,定时器T1的溢出,中断请求标志为TF1,串行口发送或接收中断源,中断请求标志为发送中断TI或接收中断RI,5.3 89C51中断请求源,中断请求源的中断请求标志位分别由TCON和SCON的相应位锁定,TCON为定时器/计数器的控制寄存器,字节地址为88H,SCON为串口控制寄存器,字节地址为98H,T

4、CON,IT0:外部中断0的中断触发方式控制位。 IT0=0时,外部中断0程控为电平触发方式。 IT0=1时,外部中断0程控为边沿触发方式。,TCON,IE0:外部中断0的中断请求标志。 INT1(P3.2) 当IT0=0,CPU在每一个机器周期S5P2期间采样外部中断请求引脚的输入电平。若外部中断0请求为低电平,则使IE0置1;若为高电平,则使IE0清0 当IT0=1,如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断0请求引脚为高电平,接着的下一个机器周期采样到为低电平(负脉冲宽度只是保持12个时钟周期),则使IE0置1。直到CPU响应该中断时,才由硬件使IE1清0,例:要以中

5、断方式使用外部中断0,且使用跳变沿触发方式,可以用什么操作指令实现?,SETB IT0,TCON,TF0:定时器0的溢出中断标志。 T0被启动计数后,从初值做加1计数,计满溢出后由硬件置位TF0,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0。也可由软件查询该标志,并由软件清0。,当单片机复位后,TCON被清0,则CPU关中断,所有中断请求被禁止。,SCON,TI串行口发送中断请求标志位 当CPU将一个要发送的数据写入串行口发送缓冲器时,就启动发送。每发送完一个串行帧,硬件使TI自动置1 注意:当CPU响应中断时,TI不能由硬件清0,必须由软件清0。,SCON,RI

6、串行口接收中断请求标志位 当允许串行口接收数据时,每接收完一个串行帧,硬件使RI自动置1。同样,RI必须由软件清0 串行中断请求由TI和RI的逻辑或得到,即无论是发送标志TI还是接收标志RI,都会产生串行中断请求。,中断优先级管理遵循的基本原则是: (1)低优先级可被高优先级中断,反之不能 (2)任何一种中断,一旦得到响应,不会被它的同级中断源中断,中断系统内部设置了两个用户不可访问的优先级状态触发器 一个是高优先级状态触发器,置1时表示当前服务的中断是高优先级的,以阻止其他中断申请; 另一个是低优先级状态触发器,置1时表示当前服务的中断是低优先级的,它允许被高优先级的中断申请所中断。,当系统

7、复位时,IP寄存器被清0,将5个中断源均设置为低优先级中断。,如果同一级的几个中断源同时向CPU申请中断,CPU便通过内部硬件查询逻辑按自然优先级决定响应顺序。,中断控制允许寄存器IE:,IE字节地址为A8H。通过对IE的编程写入,控制CPU对中断源的开放或禁止,以及对每一中断源是否允许中断。,5.4 中断控制,EACPU中断允许总控制位。 EA=1,CPU开放中断. EA=0,CPU屏蔽所有的中断请求,即关中断。 EX0外部中断0允许位; ET0定时/计数器T0中断允许位; EX1外部中断1允许位; ET1定时/计数器T1中断允许位; ES串行口中断允许位;,例:要以中断方式使用T0,可以用

8、下面的字节操作指令:,MOV IE,#82H ;1000 0010B 也可以用下面的位操作指令实现: SETB EA SETB ET0,中断优先级寄存器IP:,中断系统具有两级中断优先级管理。每一个中断源均可通过对中断优先级寄存器IP的设置,选择高优先级中断或低优先级中断,并可实现二级中断嵌套。 IP的字节地址为0B8H,通过对IP的编程,可实现将l个中断源分别设置为高优先级中断或低优先级中断。,5.4 中断控制,PS串行口中断优先级设定位。 PS=1,高优先级 PS=0,低优先级 PX0 外部中断0优先级设定位; PT0 定时/计数器T0优先级设定位; PX1 外部中断1优先级设定位; PT

9、1 定时/计数器T1优先级设定位;,例:设置IP寄存器的初始值,使2个外中断请求为高优先级,其它中断请求为低优先级。,(1)用位操作指令 SETB PX0 ;2个外中断为高优先级 SETB PX1 CLR PS ;串口为低优先级中断 CLR PT0 ;2个定时器/计数器低优先级中断 CLR PT1 (2)用字节操作指令 MOV IP,#05H 或:MOV 0B8H,#05H ;B8H为IP寄存器的字节地址,例:假设允许外部中断0中断,并设定它为高级中断,其它中断源为低级中断,采用跳沿触发方式。 在主程序中编写如下程序段: SETB EA ;CPU开中断 SETB ET0 ;允许外中断0产生中断

10、 SETB PX0 ;外中断0为高级中断 SETB IT0 ;外中断0为跳沿触发方式,CPU响应中断的基本条件如下:,有中断源发出中断申请;,中断总允许位EA=1,即CPU开放中断;,无同级或更高级的中断正在被服务;,请求中断的中断源的中断允许位置1,即该中断源可以向CPU发中断申请。,5.5 中断响应,中断响应过程:, 将相应的优先级状态触发器置1; 由硬件清除相应的中断请求标志; 执行一条由硬件生成的长调用指令LCALL。该指令将自动把断点地址(PC值)压入堆栈保护起来。然后将对应的中断入口地址送入程序计数器PC,使程序转向该中断入口地址去执行中断服务程序。,中断返回:,中断服务程序的最后

11、一条是返回指令RETI。RETI指令的执行标志着中断服务程序的结束,该指令自动将断点地址从栈顶弹出,装入程序计数器PC,使程序返回到被中断的程序断点处,继续向下执行。,中断响应封锁:,CPU正在执行同级或高一级的中断服务程序; 现行机器周期不是正在执行的指令的最后一个机器周期,即现行指令完成前不响应任何中断请求; 当前正在执行的是中断返回指令RETI或访问特殊功能寄存器IE或IP的指令。也就是说,在执行RETI或是访问IE、IP的指令后,至少需要再执行条其他指令,才会响应中断请求。 若要在执行当前中断程序时禁止更高优先级中断,可先用软件关闭CPU中断,或禁止某中断源中断,在中断返回前再开放中断

12、。,中断响应请求的撤销:,1.定时器/计数器中断请求,自动撤销。,2.外部中断请求撤销 (1)跳变沿外部中断请求是自动撤销的。 (2)电平方式外部中断请求的撤销是需要外部电路的。,3.串行口中断请求的撤销只能使用软件方法撤销。,CLR TI ;清TI标志位 CLR RI ;清RI标志位,外部中断响应时间:从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。,(1)最快响应时间-以外部中断的电平触发为最快。 从查询中断请求信号到中断服务程序需要三个机器周期 1个周期(查询)2个周期(长调用LCALL),外部中断响应时间:从查询中断请求标志位到转向中断服务入口地址所需的机器周期数。,在一个

13、单一中断的系统中,89C51单片机对外部中断请求的响应时间总是在3-8个机器周期之间,(2)最长时间 若当前指令是RET、RETI和IP、IE指令,紧接着下一条是乘除指令发生,则最长为8个周期: 2个周期执行当前指令(其中含有1个周期查询)4个周期乘除指令2个周期长调用8个周期。,计算机使用TF0 和外部中断源INT0, INT0边沿触发方式且为高优先级别,SETB EA ; 总中断允许 SETB ET0 ; TF0中断允许 SETB EX0 ; INT0中断允许 SETB IT0 ; INT0边沿触发方式 SETB PX0 ; INT0级别高,SETB EA ; 总中断允许 SETB EX1

14、 ;INT1允许 SETB ET1 ;TF1允许 SETB ES ;TI 和RI允许 SETB PS ; TI 和RI高优先级别 SETB PT1 ;TF1高优先级别 SETB PX0 ;INT0高优先级别 则: _可以被响应. A. CPU 正在执行INT1中断,TF1请求. B. CPU正在执行TF1中断, TI请求. C. CPU正在执行INT1中断, INT0请求 . D. CPU正执行主程序, TF1出现请求,(2)设置中断优先级寄存器IP。,(1)设置中断允许控制寄存器IE,(4)编写中断服务程序,处理中断请求。,(3)对外中断源,是采用电平触发还是跳沿触发。,5.6 中断服务子程

15、序的设计,前3条一般放在主程序的初始化程序段中,中断服务程序设计的任务:,有5个中断源,两个中断优先级,可以实现两级中断服务程序嵌套。 中断源 中断入口地址 外部中断0 /INT0 0003H 定时器0 T0 000BH 外部中断1 /INT1 0013H 定时器1 T1 001BH 串行口 0023H,中断源,常用的主程序结构如下: ORG 0000H LJMP MAIN ORG X3X2X1X0 ; X3X2X1X0为某中断源中断入口 LJMP INT ;为某中断源的入口标号 ORG Y3Y2Y1Y0H;主程序入口地址 MAIN:主 程 序 INT:中断服务程序,采用中断时的主程序结构:,

16、若有多个中断源,则按地址由小到大排列多个中断入口,中断服务子程序的流程:,例:根据图中中断服务程序流程,编出中断服务程序。假设,现场保护只需将PSW和A的内容压入堆栈中保护。 INT: CLR EA ;CPU关中断 PUSH PSW ;现场保护 PUSH ACC ; SETB EA ;CPU开中断 中断处理程序段 CLR EA ;CPU关中断 POP ACC ;现场恢复 POP PSW SETB EA ;CPU开中断 RETI ;中断返回,恢复断点,几点说明: (1)现场保护仅涉及到PSW和A的内容,如还有其它需保护的内容,只需要在相应的位置再加几条PUSH和POP指令即可。 (2) “中断处理程序段”,应根据任务的具体要求,来编写。 (3)如果本中断服务程序不允许被其它的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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