版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章中断控制系统
学习目标了解中断技术的概念和矢量中断的方法了解中断控制系统的使用功能熟悉AT89C51单片机中断控制系统结构掌握AT89C51单片机5个中断源的性能和特点掌握AT89C51单片机中断控制机制熟悉AT89C51单片机中断响应过程掌握中断服务子程序编程须注意的问题本章知识结构AT89C51中断控制系统中断源中断控制机制中断技术的概念中断响应过程中断子程序实例外部中断中断优先级控制IP中断请求标志定时/计数器中断中断允许控制IE串行通信中断INT0INT1T0T1TI/RI中断矢量地址导入案例有的时候,我们可以先放下手中的活计,去做别的事情,做完别的事情后,我们再接着做自己手中的活计。譬如我们在自习室学习的时候,发现旁边座位的同学身体不适,肚子痛,脸色苍白。我们可能就要放下书本,立即护送该同学看医生,安置好生病的同学再回来继续学习。立即中断学习,送同学看医生。这样的突发事件在人们生活中是能遇到的,人们都会面对并判断选择处理方法。
人们的大脑每天都在判断选择做什么,不做什么。一般人的选择是做重要而紧急的事情。同样,单片机也有这样的判断选择功能,它除了在运行正常程序之外,对于来自外部或者内部的中断事件进行判断选择是否中断,二者选其一。
中断技术的发明,是计算机系统结构设计中的重要变革。计算机能模仿人类的大脑对事物的判断选择,实现多用户、多任务的管理调度,计算机系统的结构基础中拥有了迅速响应的中断功能模块和不断完善的中断子系统。CPU、RAM等有限的资源要面向多用户、多任务的应用需求,出现资源竞争,而中断技术的本质上是一种资源分时共享技术。8086/8088微机系统是外配了8259可编程中断控制器来实现中断控制功能,而单片机的中断控制系统包含在它自身芯片内的硬件组成配置和软件编程指令及程序结构。4.1AT89C51中断控制系统单片机中断控制就是单片机CPU在执行程序时候,芯片外部或芯片内部突然发生某个事件,请求CPU立即处理。如果该事件没有设置屏蔽中断,CPU就临时暂停当前的工作,转到该事件相对应的中断服务子程序运行处理。处理完该事件后,再回到原来被暂停的地方,继续原来的工作。CPU处理中断事件的过程,称为单片机的中断响应过程。单片机中断响应示意图如图4.3所示。断点主程序响应中断请求中断服务程序返回程序继续执行主程序图4.3单片机中断响应示意图AT89C51单片机的中断控制系统结构紧凑实用,它包括:
5个中断源,两个在芯片外,3个在芯片内,它们都有固定的中断入口地址,又称为中断矢量地址,从中断矢量地址可以跳转到中断服务子程序。
6个中断标志位,应用TCON、SCON两个特殊功能寄存器中的6个标志位作为中断标志位,中断标志位的英文名称是IE0、IE1、TF0、TF1、TI和RI,中断标志位出现置1,表示相应的中断源有中断请求。IE中断允许寄存器,1个总允许位EA,5个源允许位EX0、EX1、ET0、ET1、ES,中断允许开关分二级,不允许中断即中断屏蔽。IP中断中断优先级寄存器,中断源有两个中断优先级别,可以形成中断嵌套。中断控制系统结构示意图如图4.4所示。图4.4中断控制系统结构示意图
4.1.1中断系统的功能
可以实现CPU与外部设备的并行工作,提高CPU利用效率。由于CPU的高速度和外部设备的慢速度,利用中断技术来协调它们之间的速度匹配。可以实现CPU对外部事件的实时处理,进行实时控制。在测控系统中,要求测量和控制参数在任何时间随机地向单片机发出中断请求,CPU要快速响应和及时处理,才能达到测控系统的质量和要求。实现故障的及时发现和处理。由于环境及其他原因,单片机应用系统在实际使用中会出现一些硬件和软件故障,使用中断技术,就可以及时发现故障并处理之。实现人机对话。在一些单片机应用系统使用过程中,需要人为地设置测控参数或者实时干预单片机的状态,一般就要利用中断技术。
4.1.2中断源AT89C51有5个中断源,包括2个芯片外部中断源和3个芯片内部中断源。从用途的角度分为三类:1.外部中断由外部信号引起的中断,譬如外部设备的中断请求信号等,外部中断源有两个。INT0:外部中断0,低电平或负跳变有效,中断请求信号由P3.2引脚输入。INT1:外部中断1,低电平或负跳变有效,中断请求信号由P3.3引脚输入。2.定时/计数中断定时/计数中断属于内部中断,因为芯片内部有2个16位定时/计数器。启用定时/计数器后,定时时间已到或者计数值已满,即刻向CPU请求中断。定时/计数中断源有两个。T0:定时/计数器0溢出中断,对外部脉冲计数由P3.4引脚输入。T1:定时/计数器1溢出中断,对外部脉冲计数由P3.5引脚输入。3.串行通信中断串行通信功能集成在单片机芯片内部,故串行通信中断属于内部中断。当串行口完成一帧数据的发送或接收时,便向CPU请求中断。TX/RX:串行口发送或接收中断请求。4.1.3中断矢量当AT89C51单片机响应中断时,对应某个中断源系统硬件直接发出一个固化的程序空间地址,称之为矢量地址。矢量地址仅仅是标明各个中断源的中断服务子程序的入口,并非是中断服务子程序的真正所在的地址。因为每个中断矢量地址的字节数量只有8个,一般的中断服务子程序容纳不下,所以,通常中断矢量地址区域存放一条跳转指令,而跳转指令指向的地址才是中断服务子程序的真正所在的地址。这种使用矢量地址的中断控制响应方法称之为矢量中断控制。它有利于中断源的管理和软件编程,并得到广泛应用。AT89C51单片机有5个中断源,对应地有5个矢量地址,见表4-1AT89C51中断矢量地址表。中断矢量地址中断源0003H外部中断0000BH定时/计数器0溢出中断0013H外部中断1001BH定时/计数器1溢出中断0023H串行通信中断表4-1AT89C51中断矢量地址表4.2AT89C51中断控制机制AT89C51中断控制机制通过中断源有中断请求而产生中断标志,再经过中断允许控制、中断优先级控制以及外中断触发方式的设置等环节来实现。4.2.1中断标志位中断标志位出现置1,表示相应的中断源有中断请求,所以又称为中断请求标志位。AT89C51使用TCON、SCON两个SFR中的6个标志位作为中断标志位,中断标志位的英文名称是IE0、IE1、TF0、TF1、TI和RI。INT0、INT1、T0、T1中断请求标志放在TCON中,串行通信中断请求TI或RI标志放在SCON中。①TCON中的中断标志位TCON为定时器/计数器T0和T1的寄存器,字节地址88H,可位寻址。同时也锁存T0和T1的溢出中断标志及外部中断INT0和INT1的中断标志等。TCON存储的中断标志位等数据图如图4.5所示。图4.5TCON存储的中断标志位等数据图
TF0:定时器/计数器T0溢出中断请求标志位。
当启动T0计数后,从初始值开始加1计数,计数器最高位产生溢出时,由系统硬件自动使TF0置1,并向CPU发出中断请求。当CPU响应中断时,系统硬件将自动对TF0清0。TF1:定时器/计数器T1溢出中断请求标志位。
与TF0功能含义相同,只是对应定时器/计数器T1。IE0:外部中断0的中断请求标志。当检测到外部中断0的引脚INT0(P3.2)上存在有效的中断请求信号时,由系统硬件自动使IE0置1,并向CPU发出中断请求。当CPU响应中断请求时,同时中断请求信号处在无效的状态,系统硬件方可使IE0自动清0。IE1:外部中断1的中断请求标志。
与IE0功能含义相同,只是对应外部中断1的引脚INT1(P3.3)IT0:外部中断0中断触发方式控制位。IT0=0时,外部中断0控制为低电平触发方式。
IT0=1时,外部中断0控制为负跳变触发方式。IT1:外部中断1中断触发方式控制位。与IT0功能含义相同。只是对应外部中断1。
TR0、TR1是定时器/计数器T0、T1的启停控制位,细节我们将在第五章讨论。当AT89C51复位后,TCON等寄存器被清0,CPU关中断,所有中断请求被禁止。②SCON中的中断标志位SCON是串行通信控制寄存器,字节地址98H,可位寻址。其低2位锁存串行口的接收中断请求和发送中断请求标志位RI和TI,其余6位数据我们将在第六章讨论。SCON存储的中断标志位数据图如图4.6所示。
图4.6SCON存储的中断标志位数据图
TI:串行口发送中断请求标志。CPU将一个数据写入发送缓冲器SBUF时,就启动发送。每发送完一帧串行数据后,由系统硬件自动使TI置1。但CPU响应串行口发送中断时,系统并不自动对TI清0,必须在中断服务程序中由软件对TI清0。RI:串行口接收中断请求标志。在串行口允许接收时,每接收完一帧串行数据后,由系统硬件自动使RI置1。同样,CPU响应串行口接收中断时不会对RI清0,必须在中断服务程序中由软件对RI清0。4.2.2中断允许控制
AT89C51单片机中的特殊功能寄存器IE称为中断允许寄存器,它控制CPU对中断源的开放或关闭(或称屏蔽)。字节地址A8H,可位寻址。数据格式请见图4.7。
图4.7IE中断允许寄存器存储数据图EA:中断允许总控制位。EA=0,屏蔽所有的中断请求;EA=1,CPU开放中断。对各个中断源的中断请求是否允许,也取决于各个中断源的中断允许控制位的自身状态。这就构成了两级控制机制。ES:串行口中断允许位。ES=0,禁止串行口中断;ES=1,允许串行口中断。ET1:定时器/计数器T1的溢出中断允许位。
ET1=0,禁止T1中断;ET1=1,允许T1中断。EX1:外部中断1的中断允许位。EX1=0,禁止外部中断1中断;EX1=1,允许外部中断1中断。ET0:定时器/计数器T0的溢出中断允许位。ET0=0,禁止T0中断;ET0=1,允许T0中断。EX0:外部中断0的中断允许位。EX0=0,禁止外部中断0中断;EX0=1,允许外部中断0中断。4.2.3中断优先级设置AT89C51有两个中断优先级。每个中断源均可编程为高优先级中断或低优先级中断。中断系统中有两个不可寻址的“优先级生效”触发器,分别指出CPU正在执行的高、低优先级的中断服务程序。这样就可以实现二级中断嵌套。详见图4.8实现二级中断嵌套示意图。图4.8实现二级中断嵌套示意图AT89C51中断优先控制的基本原则:高优先级中断可以中断正在响应的低优先级中断,反之则不能;同优先级中断不能互相中断;同一中断优先级中,若有多个中断源同时请求中断,CPU将先响应优先权高的中断,后响应优先权低的中断。优先权的排序取决于内部硬件查询的顺序。从高到低分别是:①外部中断0、②定时器T0中断、③外部中断1、④定时器T1中断、⑤串行口中断。
特殊功能寄存器IP为中断优先级寄存器,字节地址B8H,可位寻址。它锁存5个中断源优先级的控制位,数据格式请见图4.9。图4.9IP中断允许寄存器存储数据图
中断优先级控制寄存器IP各位的含义:PS:串行口中断优先级控制位PT1:定时器/计数器T1中断优先级控制位PX1:外部中断1中断优先级控制位PT0:定时器/计数器T0中断优先级控制位PX0:外部中断0中断优先级控制位以上各个控制位,若控制位置1,则相应的中断源确定为高优先级中断;若控制位置0,则相应的中断源规定为低优先级中断。4.2.4外部中断触发方式进一步讨论中断触发方式的细节。由图4.5TCON存储的中断标志位等数据图我们了解IT1和IT0是外部中断中断触发方式控制位。
IT1=0时,外部中断1控制为低电平触发方式。CPU在每一个机器周期S5P2期间采样外部中断请求引脚INT1(P3.3)的输入电平。若外部中断1请求为低电平,则使IE1置1;若为高电平,则使IE1清0。
IT1=1时,外部中断1控制为负跳变触发方式。CPU在每一个机器周期S5P2期间采样外部中断请求引脚INT1(P3.3)的输入电平。如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断1请求引脚为高电平,接着的下一个机器周期采样到为低电平,则使IE1置1。直到CPU响应该中断时,才由硬件使IE1清0。4.2.5中断请求的设置和撤除CPU响应中断请求,转向中断服务程序执行,在其执行中断返回指令(RETI)之前,中断请求信号必须撤除,否则将会再一次引起中断而出错。中断请求撤除的方式有三种:①由单片微机内部硬件自动复位。对于T0、T1的溢出中断和采用负跳变触发方式的外部中断请求,在CPU响应中断后,由内部硬件自动对中断标志TF0、TF1以及IE0、IE1清0,进而自动撤除中断请求。②应用软件清除相应标志。对于串行接收/发送中断请求,在CPU响应中断后,必须在中断服务程序中应用软件指令对串行通信中断标志RI或TI清0,方能撤除中断。③对于采用低电平触发方式的外部中断请求。
当时的中断标志撤消是自动的,但中断请求信号的低电平可能继续存在,这样,在以后机器周期采样时又会把已清“0”的IE0或者IE1外中断标志重新置“1”,再次申请不需要的多余的中断。为此,应保证中断响应后把中断请求信号从低电平强制改变为高电平。一般附加硬件电路在触发信号回路中即可解决。4.3AT89C51中断响应
我们要熟悉中断响应的过程,它可以分成3个阶段:中断响应、中断处理与中断返回。我们还要掌握中断响应时间,才能设计实时性能要求高的单片机应用系统。
4.3.1中断响应过程1、中断响应在每个机器周期的S5P2期间,CPU对各中断源的相应中断标志采样,在下一个机器周期S6期间按优先级顺序查询中断标志。若查到某个中断标志为1,就在再下一个机器周期S1期间按优先级进行中断处理。这时,中断控制系统通过硬件生成长调用指令(LCALL),控制程序转入中断矢量地址单元,进入相应的中断服务子程序。如果CPU正在处理同级的或高一级的中断服务子程序;如果当前周期不是执行当前指令的最后一个周期;如果当前执行的指令是RETI中断返回指令或是对IE、IP寄存器进行读/写指令,以上三种情况,若有任何一种情况出现,那么硬件生成的LCALL指令将被封锁。
①有中断源发出中断请求。②IE寄存器中的中断总允许位EA=1,即CPU开中断。③该中断源的中断允许位为1,即中断没有被屏蔽。④无同级或更高级中断正在被服务。⑤当前的指令周期已经结束。⑥若现行指令为RETI或是访问IE或IP指令时,该指令以及紧接着的另一条指令已执行完。
中断响应条件有哪些?中断响应操作过程是怎样的?①把当前PC值压入堆栈,保护断点。②将相应的中断服务子程序的入口地址送入PC。③对有些中断源,CPU会自动清除中断标志。④执行中断服务子程序。⑤执行返回指令RETI,中断服务子程序结束,将堆栈内容弹出到PC,返回到原来断点继续执行。中断服务子程序是从矢量地址开始,一直到中断返回指令RETI结束。中断返回指令RETI指令的操作,就是告诉中断控制系统该中断服务已经结束,同时把原来压入堆栈保护的断点地址从栈里面弹出,装入程序计数器PC,使得程序转到被中断的程序断点处,继续按主程序的顺序执行。2、中断处理中断处理就是单片机稳妥地运行中断服务子程序,达到中断源的具体服务要求。CPU响应中断后,转入中断服务子程序的入口(矢量地址),接着执行中断服务子程序,从中断服务子程序的第一条指令开始到返回指令为止。通常中断处理包括两部分内容:
①保护现场:如在中断服务子程序中要用到PSW、工作寄存器和SFR等寄存器时,在进入中断服务之前应将它们的内容保护起来,以免中断返回后丢失原来累加器、寄存器中的信息。在中断结束前即执行RETI指令前应恢复现场。
②为中断源服务:针对中断源的具体服务要求,中断服务子程序中在进行相应的信息处理在编写中断服务子程序时还要注意一些问题:①在中断矢量地址单元处放一条无条件转移指令,使中断服务子程序可灵活地安排在64KB程序存储器的任何空间;②若要在执行当前中断服务子程序时,欲禁止更高优先级中断源的打扰,可以在中断服务子程序的开始部分,先用软件关闭CPU中断(中断总允许位EA=0),或者关闭某些中断源的中断,在中断返回前再开放中断;③在中断服务子程序中,进栈和出栈指令必须成对使用,否则,不能正确返回断点。④中断服务子程序的最后一条指令只能是返回指令RETI。
3、中断返回在中断服务子程序中,最后一条指令必须为中断返回指令RETI。CPU执行该指令时,一方面清除中断响应时所置位的“优先级生效”触发器,另一方面从当前栈顶弹出断点地址送入程序计数器PC,从而返回主程序。中断响应时间是有条件的。CPU不是在任何情况下都对中断请求予以响应,在不同的情况下对中断响应的时间是不同的。对于顺畅的中断响应,其最短的响应时间为3个机器周期,其中中断请求标志位查询占1个机器周期,子程序调用指令LCALL转到相应的中断服务程序入口,需要2个机器周期。
4.3.2中断响应时间
对于中断响应条件不完全具备而阻塞的中断响应,响应时间会长一些,响应时间为4~8个机器周期之间。一般情况下,发生在CPU进行中断标志查询时,刚好是开始执行RETI指令或是访问IE或IP的指令,需要把当前指令执行完,再继续执行一条指令后,才能响应中断,当前指令执行完最长需2个机器周期。接着再执行一条指令,按最长指令(乘法指令MUL和除法指令DIV)来算,要用4个机器周期。加上硬件子程序调用指令LCALL的执行,需要2个机器周期。所以,外部中断响应最长时间为8个机器周期
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 糖尿病皮肤病变的老年患者用药调整
- 糖尿病患者运动指导方案
- 糖尿病患者肠道菌群指导的个体化降糖策略
- 糖尿病患者的营养补充与自主神经病变
- 糖尿病患者的碳水化合物替代策略
- 糖尿病患者的心理干预依从性模型
- 糖尿病患者的出院计划与随访
- 糖尿病基层筛查能力评估及优化方案
- 2026广东省云浮市云城区赴高校招聘事业编制教师50人备考题库(广州专场)含答案详解
- 2026广东警官学院保卫工作部校卫队队员招聘备考题库及答案详解参考
- 2026中工国际工程股份有限公司社会招聘笔试备考试题及答案解析
- 物业总经理培训课件
- 短险销售技巧培训课件
- 山东省济南市2024-2025学年高二上学期1月期末考试英语含答案
- 2026云南省产品质量监督检验研究院招聘编制外人员2人笔试模拟试题及答案解析
- (高清版)T∕CES 243-2023 《构网型储能系统并网技术规范》
- 科学、文化与海洋智慧树知到期末考试答案2024年
- 机房设备操作规程
- ASMEBPE介绍专题知识
- GB/T 15087-1994汽车牵引车与全挂车机械连接装置强度试验
- GB/T 10922-200655°非密封管螺纹量规
评论
0/150
提交评论