您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 第5章80C51单片微机的中断系统原理及应用
普通高等教育“十一五”国家级规划教材单片微型计算机原理与接口技术(第二版)高锋编著科学出版社北京第五章80C51单片微机的中断系统原理及应用中断概念的出现,是计算机系统结构设计中的重大变革。现代计算机中操作系统实现的管理调度,其物质基础就是丰富的中断功能和完善的中断系统。一个CPU资源要面向多个任务,出现资源竞争,而中断技术实质上是一种资源共享技术。中断系统包括它的硬件和软件编程。⒈中断系统的几个概念:⑴中断程序执行过程中,允许外部或内部事件通过硬件打断程序的执行,使其转向为处理外部或内部事件的中断服务程序中去;完成中断服务程序后,CPU继续原来被打断的程序,这样的过程称为中断响应过程,如图5-1所示。⑵中断源能产生中断的外部和内部事件。5.1中断系统概述5.1.1单片微机的中断系统需要解决的问题⑶中断优先级当有几个中断源同时申请中断时,或者CPU正在处理某中断源服务程序时,又有另一中断源申请中断,那么CPU必须要确定优先去处理谁的能力。⑷中断嵌套优先级高的事件可以中断CPU正在处理的低级的中断服务程序,待完成了高级中断服务程序之后,再继续被打断的低级中断服务程序。⒊实现故障的及时发现及处理应用中由于外界的干扰、硬件或软件设计中存在问题等因素,在实际运行中会出现硬件故障、运算错误、程序运行故障等,有了中断技术,单片微机就能及时发现故障并自动处理。⒋实现人机联系如通过键盘向单片微机发出中断请求,可以实时干预计算机的工作。⒉单片微机的中断系统需要解决的问题⑴当单片微机内部或外部有中断申请时,CPU能及时响应中断,停下正在执行的任务,转去处理中断服务子程序,中断服务处理后能回到原断点处继续处理原先的任务;⑵当有多个中断源同时申请中断时,应能先响应优先级高的中断源,实现中断优先级的控制;⑶当低优先级中断源正在享用中断服务时,若这时优先级比它高的中断源也申请中断,要求能停下低优先级中断源的服务程序转去执行更高优先级中断源的服务程序,实现中断嵌套,并能逐级正确返回原断点处。⒈实现CPU与外部设备的速度配合通过中断的方法来协调快速CPU与慢速外部设备之间的工作。⒉实现实时控制依靠中断技术能实现实时控制。实时控制要求计算机能及时完成被控对象随机提出的分析和计算任务。在自动控制系统中,要求各控制参量随机地在任何时刻可向计算机发出请求,CPU必须作出快速响应、及时处理。5.1.2中断的主要功能80C51的中断系统包括中断源、中断允许寄存器IE、中断优先级寄存器IP、中断矢量等。在80C51中,只有两级中断优先级。图5–2是80C51的中断系统结构示意图。5.280C51的中断系统80C51有5个中断源,80C52增加了一个中断源——定时器/计数器T2。每一个中断源都能被程控为高优先级或低优先级。◆两个外部中断源INT0和INT1:外部设备的中断请求信号、掉电等故障信号都可以从INT0或INT1引脚输入。三个内部中断源:T0和T1的定时/计数谥出中断源和串行口发送或接收中断源。5.2.1中断源1.外部中断◆外部中断是由外部信号引起的,共有两个外部中断,它们的中断请求信号分别从引脚INT0和INT1上引入。◆外部中断请求有两种信号触发方式.可通过设置有关控制位进行定义。当设定为电平有效方式时,若INT0或INT1引脚上采样到有效的低电平,则向CPU提出中断请求;当设定为跳变有效方式时,若INT0或INT1引脚上采样到有效负跳变,则向CPU提出中断请求。⑴INT0:外部中断0。当IT0=0时,低电平有效;当IT0=1时,下降沿有效。⑵INT1:外部中断1。当IT1=0时,低电平有效;当IT1=1时,下降沿有效。⒉定时中断当计数器发生计数溢出时,表明设定的定时时间到或计数值已满,这时可以向CPU申请中断。80C51有两个源,即:⑴TF0:T0溢出中断。⑵TF1:T1溢出中断。⒊串行中断每当串行口发送或接收一帧串行数据时,就产生一个中断请求。RXD,TXD:串行中断。◆矢量中断:当CPU响应中断时,由硬件直接产生一个固定的地址,即矢量地址,由矢量地址指出每个中断源设备的中断服务程序的入口。◆当CPU识别出某个中断源时,由硬件直接给出一个与该中断源相对应的矢量地址,从而转入各自中断服务程序。中断矢量地址见表5-1。5.2.2中断矢量INT0,INT1,T0及T1的中断标志存放在TCON寄存器中;串行口的中断标志存放在SCON寄存器中。定时器/计数器控制寄存器TCON:◆IT1:INT1的中断申请触发方式控制位◆IT0:INT0的中断申请触发方式控制位。5.3中断的控制5.3.1中断标志◆TF1:T1计数溢出,由硬件置位,响应中断时由硬件复位。不用中断时用软件清0。◆TF0:T0计数溢出,由硬件置位,响应中断时由硬件复位。不用中断时用软件清0。◆IE1=1时,外部中断1向CPU申请中断。◆IE0=1时,外部中断0向CPU申请中断。串行口控制寄存器SCON:◆TI:串行口发送中断源。发送完一帧,由硬件置位。响应中断后,必须用软件清0。◆RI:串行口接收中断源。接收完一帧,由硬件置位。响应中断后,必须用软件清0。中断允许和禁止由中断允许寄存器IE控制。中断允许寄存器IE:5.3.2中断允许控制◆IE寄存器中各位设置:为0时,禁止中断;为1时,允许中断。◆系统复位后IE寄存器中各位均为0,禁止所有中断。⑴EX0:外部中断0中断允许位。⑵ET0:T0中断允许位。⑶EX1:外部中断1中断允许位。⑷ET1:T1中断允许位。⑸ES:串行口中断允许位。⑹EA:CPU中断允许位。当EA=1,允许所有中断开放,总允许后,各中断的允许或禁止由各中断源的中断允许控制位进行设置;当EA=0时,屏蔽所有中断。在80C51中有高、低两个中断优先级,通过IP来设定。中断优先级寄存器IP:◆IP寄存器中各位设置:为0时,为低中断优先级;为1时,设为高中断优先级。◆系统复位后IP寄存器中各位均为0,全部设定为低中断优先级。5.3.3中断优先级中断优先级控制,还有两个不可寻址的优先级状态触发器,一个用于指示某一高优先级中断正在进行服务,而屏蔽其它高优先级中断;另一个用于指示某一低优先级中断正在进行服务,从而屏蔽其它低优先级中断,但不能屏蔽高优先级中断。◆在中断执行过程中,高中断优先级可以中断低中断优先级的中断过程。但是若在中断服务程序中,关掉所有中断(CLREA)或关掉部分中断时除外。◆当CPU同时接收到两个不同优先级的中断请求时,先响应高优先级的中断,如果CPU同时接收到的是几个同一优先级的中断请求时,则由内部的硬件查询序列确定它们的优先服务次序,★在同一优先级内有一个由内部查询序列确定的笫二个优先级结构。其排列如下:中断源中断优先级⒈外部中断0最高⒉定时器T0中断⒊外部中断1⒋定时器T1中断⒌串行口中断⒍定时器T2中断最低(80C52)INT0,INT1的中断触发方式有两种:◆电平触发方式,低电平有效。◆跳变触发方式,电平发生由高到低的跳变时触发。●IT1、IT0=0,选择电平触发方式;●IT1、IT0=l,选择跳变触发方式,即当INT0,INT1引脚检测到前一个机器周期为高电平、后一个机器周期为低电平时,则置位IE0、IE1且向CPU申请中断。5.3.4外部中断触发方式由于CPU每个机器周期采样INTO、INT1引脚信号一次,为确保中断请求被采样到,外部中断源送INTO、INT1引脚的中断请求信号应至少保持一个机器周期。跳变触发方式,外部中断源送INT0、INT1引脚的中断请求信号高、低电平应至少各保持一个机器周期,才能确保CPU采集到电平的跳变;电平触发方式,则外部中断源送INT0、INT1引脚请求中断的低电平有效信号,应一直保持到CPU响应中断为止。1.由单片微机内部硬件自动复位。对于T0、T1的溢出中断和采用跳变触发方式的外部中断请求,在CPU响应中断后,由内部硬件自动清除中断标志TF0和TF1、IE0和IE1,而自动撤除中断请求。5.3.5中断请求的撤除2.应用软件清除相应标志。对于串行接收/发送中断请求和80C52中的T2的溢出和捕获中断请求,在CPU响应中断后,必须在中断服务程序中应用软件清除RI、TI、TF2和EXF2这些中断标志,才能撤除中断。3.采用外加硬件结合软件清除中断请求。对于采用电平触发方式的外部中断请求,中断标志的撤消是自动的,但中断请求信号的低电平可能继续存在,在以后机器周期采样时又会把已清“0”的IE0、IE1标志重新置“1”,再次申请中断。保证在中断响应后把中断请求信号从低电平强制改变为高电平。可在系统中加入如图5-3所示电路。从图5-3中可看到,用D触发器锁存外部中断请求低电平,并通过触发器输出端Q送INT0或INT1,所以D触发器对外部中断请求没有影响。但在中断响应后,为了撤消低电平引起的中断请求,可利用D触发器的直接置位端SD来实现。采用80C51的一根I/O口线来控制SD端。只要在SD端输入一个负脉冲即可使D触发器置“1”。ANLP1,#0FEH;Q置1ORLP1,#01H;SD无效使P1.0输出一个负脉冲,其持续时间为两个机器周期,足以使D触发器置位,撤除低电平中断请求。从中断请求发生直到被响应去执行中断服务程序,中断响应过程的时序如图5-4所示。⒈中断采样针对外部中断请求信号进行的,而内部中断请求都发生在芯片内部,可以直接置位TCON或SCON中的中断请求标志。在每个机器周期的S5P2期间,各中断标志采样相应的中断源,并置入相应标志。5.4中断响应过程和响应时间5.4.1中断的响应过程⒉中断查询若查询到某中断标志为1,则按优先级的高低进行处理,即响应中断。80C51的中断请求都汇集在TCON和SCON中。而CPU则在下一机器周期的S6期间按优先级的顺序查询各中断标志。先查询高级中断,再查询低级中断。同级中断按内部中断优先级序列查询。如果查询到有中断标志位为“1”,则表明有中断请求发生,接着从相邻的下一个机器周期的S1状态开始进行中断响应。⒊中断响应硬件自动生成长调用指令为LCALLaddr16,而addr16就是各中断源的中断矢量地址(参见表5-1)。◆先将程序计数器PC的内容压入堆栈进行保护,先低位地址,后高位地址,同时堆栈指针SP加2。◆将对应中断源的中断矢量地址装入PC,去执行中断服务程序。◆中断服务程序由中断矢量地址开始执行,直至遇到RETI为止。执行RETI,一是撤销中断申请,弹出断点地址进入PC,先弹出高位地址,后弹出低位地址,同时堆栈指针SP减2,恢复原程序的断点地址执行;二是恢复中断触发器原先状态。中断响应是有条件的,在接受中断申请时,如遇下列情况之一时,硬件生成的长调用指令“LCALL”将被封锁:⑴CPU正在执行同级或高一级的中断服务程序中。因为当一个中断被响应时,其对应的中断优先级触发器被置“1”,封锁了同级和低级中断;⑵查询中断请求的机器周期不是执行当前指令的最后一个周期。⑶当前正在执行RETI指令或执行对IE、IP的读/写操作指令。80C51中断系统的特性规定,在执行完这些指令之后,必须再继续执行一条指令,然后才能响应中断。中断的执行过程与调用子程序相似点:⑴都是中断当前正在执行的程序,转去执行子程序或中断服务程序。⑵都是由硬件自动地把断点地址压入堆栈,然后通过软件完成现场保护。⑶执行完子程序或中断服务程序后,都要通过软件完成现场恢复,并通过执行返回指令,重新返回到断点处,继续往下执行程序。⑷二者都可以实现嵌套,如中断嵌套和子程序嵌套。中断的执行与调用子程序差别⑴中断请求信号可以由外部设备发出,是随机的,比如故障产生的中断请求;子程序调用却是由软件编排好的。⑵中断响应后由固定的矢量地址转入中断服务程序,而子程序地址由软件设定。⑶中断响应是受控的,其响应时间会受一些因素影响;子程序响应时间是固定的。一般来说,在单级中断系统中,中断的响应时间最短为3个机器周期,最长为8个机器周期。当中断请求标志位查询占1个机器周期,而这个机器周期又恰好是指令的最后一个机器周期,在这个机器周期结束后,CPU即响应中断,产生硬件
本文标题:第5章80C51单片微机的中断系统原理及应用
链接地址:https://www.777doc.com/doc-3180153 .html