ch5_中断系统_第1页
ch5_中断系统_第2页
ch5_中断系统_第3页
ch5_中断系统_第4页
ch5_中断系统_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

第5章 中断系统,5.1 微机的输入/输出方式 程序控制传送方式 无条件传送方式 查询传送方式 中断传送方式 直接存储器存取方式(DMA),断点,响应中断请求,继续执行主程序,主程序,返回主程序,RETI,中断服务子程序,采用中断可提高CPU的工作效率,实现以下功能: 1.分时操作 2.实时处理 3.故障处理,5.2 中断的概念,CPU中止正在运行的程序,转向为外部设备服务的过程称为中断。当完成中断后,CPU再回到原来的“断点”继续原来的程序。 中断是由外部产生,具有随机性、不可知性。,一、中断系统结构 8051共有五个中断源,两个中断优先级 INT0-外部中断0请求,通过P3.2脚输入 INT1-外部中断1请求,通过P3.3脚输入 T0-定时器/计数器0溢出中断请求 T1-定时器/计数器1溢出中断请求 TX/RX -串行口中断请求,当串行口完成一帧数据的发送或接收时,便请求中断 每个中断源都对应一个中断请求标志位,它们分别设置在TCON和SCON中。,5.3 8051的中断系统,中断控制器8259A方框图,MCS-51的中断系统结构图,返回优先级结构,二、中断控制,定时器控制寄存器TCON (用6位) 串行口控制寄存器SCON (用2位) 中断允许寄存器IE 中断优先级寄存器IP,中断请求标志 TCON中的中断标志位,SCON中的中断标志位,SCON中的中断标志位,中断允许控制位(IE),EA:总允许位。EA=0:禁止一切中断;EA=1中断开放。 ES:串行口中断允许位。ES=1:允许RI、TI引发中断; ES=0:禁止中断。 ET1、ET0:定时器T1、T0允许位。ET=1允许,=0禁止。 EX1、EX0:外中断/ int1、/int0允许位。 ET =1允许,=0禁止。,中断允许寄存器IE(0A8H),中断优先级控制位(IP),PS:串行口中断优先级设定位; PT1、PT0:定时器T1、T0中断优先级设定位; PX1、PX0:外中断 int1、0中断优先级设定位; =1: 高优先级,=0:为低优先级。,中断优先级寄存器IP(0B8H),表 同级内第二优先级次序,例如, 某软件中对寄存器IE、 IP设置如下: MOV IE, 8FH MOV IP, 06H 则此时该系统中: CPU中断允许; 允许外部中断 0、 外部中断 1、 定时器 /计数器 0、 定时器 /计数器1提出的中断申请; 允许中断源的中断优先次序为: 定时器 /计数器 0外部中断 1外部中断 0定时器/计数器 1。,优先级结构,由于IP寄存器的设定,将5个中断源分为两个级别。中断的发生将遵循下面的3条基本原则: 1. 低级中断在响应执行中可被高级中断所中断,反之则不能。 2. 一个中断(不论是什么优先级)一旦得到响应,与它同级的中断则不能再中断它。 3. 当CPU同时收到几个同一级别的中断要求时,CPU响应哪个中断源取决于硬件的查询顺序(见图)。,如何改变中断源的优先级顺序,从中断系统的结构图可以清楚地看出同一级别中5个中断源的查询顺序。很明显,要改变这种顺序只能通过IP的设置。 如:要想将串行口的级别设为最高时,将IP中的PS置1。 即使用指令:setb ps 或 mov 0b8h,#10h 完成对IP设置。,IP寄存器,例: 能否由高到低安排下列中断源的优先级结构? 定时器0 串行口中断 外部中断0 外部中断1 定时器1,解答:能。 设定时器0、串行口中断为高级别中断;设外部中断0、外部中断1 、定时器1为低级别中断。再由内部查询顺序即可得到。,三、中断查询与响应条件,在每一个机器周期中,所有的中断源都要按照其顺序检查一遍。到S6状态时,就查找到所有被激活的中断申请并排好优先权。在下一个机器周期的S1状态,只要不受阻断,就开始响应高级中断。 如果发生下列情况,中断将被阻止: 1,同级或高级中断正在执行时; 2,当前的机器周期不是指令的最后一个机器周期; 3,CPU正在执行的指令是RETI或访问IE、IP寄存器时,CPU是不会响应中断,而且要等到该指令的下一条指令执行完后中断才能响应。,四、中断响应过程 CPU查询到某一中断源后,使相应的“优先级激活触发器”置位,用以阻断同级或低级中断。 在硬件控制下,将当前程序计数器PC的内容断点地址进栈,并将相应的中断矢量装入PC,使CPU转向对应的中断服务程序,同时清除中断请求标志(TI、RI除外)。 中断服务程序最后一条指令是RETI,它将清除“优先级激活触发器”,从堆栈中弹出断点地址并装入PC中,使CPU回到原来的主程序继续运行。 矢量入口的指令应当是转移指令。,0000H,0003H,000BH,0013H,001BH,0023H,注意:,1、上述过程只保护断点而不保护现场(如PSW的内容)。 2、不能清除RI、TI以及外部输入申请信号/INT0和/INT1。 3、中断服务子程序的最后一条指令应是RETI,它将清除“优先级激活”触发器。,编程中应注意: (1) 在 0000H放一条跳转到主程序的跳转指令, 这是因为 MCS-51单片机复位后, PC的内容变为 0000H, 程序从 0000H 开始执行, 紧接着 0003H是中断程序入口地址, 故在此中间只能插入一条转移指令; (2) 响应中断时, 先自动执行一条隐指令“LCALL 0013H”, 而 0013H至 001BH(定时器 1 溢出中断入口地址)之间可利用的存储单元不够, 故放一条无条件转移指令。 (3) 在中断服务程序的末尾, 必须安排一条中断返回指令RETI, 使程序自动返回主程序。,五、 外部中断,在MCS-51引脚上有/INT0、/INT1两个外部的中断输入,作为外部事件的触发信号。 CPU在每一个机器周期对它们进行一次检测。 系统设定了两种触发方式: 边沿触发(下降沿); 电平触发(低电平)。 具体由TCON中的IT0、IT1来确定。,MCS-51 /INT0 /INT1,1. 边沿触发方式:在相邻的两个机器周期,如果第一次采集是高电平,第二次采集是低电平时,则TCON中的标志IE0或IE1置位。所以,在边沿触发方式时:外部设备发出的边沿信号(高电平和低电平)的时间应大于一个机器周期,否则信号将可能漏检。 2.“电平”触发方式:CPU采集到/INT0或/INT1的引脚为低电平时将激活中断。所以在这种触发方式中,外部的低电平至少应保留一个机器周期。 如果外电路的信号不能满足要求,可使用触发器解决。,MCS-51单片机对/INT信号的要求,六、中断请求的撤除,以外中断电平触发为例:当CPU响应该中断并进入到服务程序后,在执行RETI返回主程序前,必须将外部的低电平撤掉,否则,当CPU返回主程序后,会因为外部的低电平信号而再次进入中断,使主程序无法正常运行。 同理,其它中断源也存在类似的问题。所以在使用中断时必须清楚在响应某一中断时,其中断请求(标志)是否要撤除,如何撤除等问题。,MCS-51的中断标志的撤除方法,注:此表指使用中断服务程序来处理中断事件时的情况。 如果采用查询的方法来处理事件时,都需要软件来清除标志。,撤除外部电平请求信号的方案,七、中断响应时间(以外部中断INTx为例),每个机器周期的S5P2时刻,INTx引脚的电平被锁存到内部寄存器中,待下一个周期查询。 1、最短时间:中断请求有效,查询后在下一个周期便开始执行一条硬件的子程序的调用(时间是两个周期),然后开始执行服务程序的第一条指令。这样从锁存电平的周期到执行中断服务程序,中间相隔3个机器周期。,2、最长时间:如果中断信号发生在前面所说的3种情况时,响应时间就要变长: 第1种情况: 响应时间取决于正在执行的同级或高级中断的执行时间; 第2种情况: 指当前CPU执行的指令是多周期指令,如乘除法指令(4个周期),最坏情况,还要等3个周期。这样响应周期变为3+3=6个周期; 第3种情况: CPU当前执行的指令是RETI或访问IE、IP寄存器时,本指令(1个周期)没有响应,且下一条指令执行完后才能响应,这样附加的等待时间最长不会超过5个周期(1+4)。整个响应为5+3=8个周期。若为单中断源系统,整个中断响应的时间范围应当是: 38个机器周期。,5.4中断应用程序举例,例1: 将P1口的P1.4P1.7作为输入口,P1.0P1.3作为输出口,要求利用8031将开关所设的数据读入单片机内,并依次通过P1.0P1.3输出,驱动发光二极管,以检查P1.4P1.7输入的电平情况.采用中断边沿触发方式,每次中断完成一次读/写操作.,ORG 0000H AJMP MAIN ORG 0003H AJMP INSER ORG 0030H MAIN: SETB EX0 SETB IT0 SETB EA HERE: SJMP HERE INSER: MOV A,#0F0H ;P1.4P1.7为输入口 MOV P1,A MOV A,P1 SWAP A MOV P1,A RETI END,例2: 用中断电路实现系统的故障显示,当系统的各部分正常工作时,四个故障源的输入均为低电平,显示灯不亮,当某个部分出现故障时,则相应的低电平变为高电平,相应的灯亮。,ORG 0000H AJMP MAIN ORG 0003H AJMP INSER ORG 0030H MAIN: ANL P1,#55H SETB EX0 SETB IT0 SETB EA HERE: SJMP HERE INSER: JNB P1.0,L1 SETB P1.1 L1: JNB P1.2,L2 SETB P1.3 L2: JNB P1.4,L3 SETB P1.5 L3: JNB P1.6,L4 SETB P1.7 L4: RETI END,5.5 外部中断的扩展,5.5.1 利用定时器扩展外部中断源 当设定时器为计数方式,计数初值设置为满量程FFH,一旦外部信号从计数器引脚输入一个负跳变时,计数器加1产生溢出中断从而可实现外部中断。 5.5.2 中断加查询扩展中断源 利用8051的两根外部中断输入线,每个中断输入线可以通过“线或”的关系连接多个外部中断源,同时利用输入端口线作为各中断源的识别线。,ORG 0003H LJMP INTRP ;INT0中断服务程序入口 . INTRP:

温馨提示

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

评论

0/150

提交评论