您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 金融资料 > 第5章 中断系统与定时计数器
第5章中断系统与定时/计数器5.1单片机中断系统5.3定时器/计数器5.2外部中断源的扩展第5章中断系统与定时、计数器5.4综合应用举例8XC51单片机中断系统5.1.1中断技术5.1.2中断系统与控制5.1.3中断响应过程5.1.4中断请求的撤消5.1单片机中断系统中断系统是计算机的重要特色之一。5.1中断技术日常事务程序中断服务程序一、中断概念:某人看书执行主程序中断过程电话铃响中断信号INTx=0中断请求暂停看书暂停执行主程序中断响应书中作记号当前PC值入栈保护断点电话谈话执行中断程序中断服务继续看书返回主程序中断返回5.1.1中断概述一、中断和中断系统CPU正在处理某件事的时候,外部发生了另一事件,请求CPU迅速处理,CPU暂时停止当时的工作,转入处理所发生的事件,处理结束后,再回到原来的地方,继续原来的工作,这样的过程称为中断,如图5-1所示。RETI主程序中断服务中断请求图5-1中断过程示意图中断系统——实现中断功能的部件中断源——产生中断请求的根源二、中断优先级一般计算机系统允许有多个中断源。当几个中断源同时向CPU请求中断,要求服务时,就存在CPU优先响应哪一个中断请求的问题。为此系统根据中断源的轻重缓急进行排队,规定每个中断源都有一个中断优先级别,优先处理最紧急事件的中断请求。三、中断嵌套中断嵌套是指CPU正在处理一个中断源请求的时候,又发生了另一个优先级比它高的中断源请求,使CPU能够暂时中止执行原来的处理程序,转而去处理优先级更高的中断请求,处理结束后,再继续执行原来的低级中断处理程序的过程。图5-2二级中断嵌套过程示意图主程序低级中断高级中断四、中断过程对于不同的计算机,中断过程可能不尽相同,但是一般应包括中断请求、中断响应、中断处理和中断返回等四个步骤。1.中断请求中断过程是由中断源向CPU发出中断请求而开始的。有效中断请求信号应该一直保持到CPU作出响应为止。2.中断响应CPU检测到中断请求信号后,在满足一定条件的情况下进行响应。其主要条件是:中断标志是否开放,是否高级中断,是否执行完一条指令等。3.中断处理中断处理或称为中断服务,就是执行中断源所要求的中断服务程序。在中断服务程序中需要完成的主要工作是:①保护现场——根据需要把断点处有关存储器的内容压入堆栈,以保护主程序运行的结果。②开/关中断标志——根据CPU响应中断后开/关中断情况,适当处理中断标志,以确保保护/恢复现场的正确进行,确保所需中断嵌套的实现。③中断处理——根据中断源的要求,完成相应的任务,这是中断服务的核心。④恢复现场——在完成中断服务之后,返回被中断的主程序之前,恢复堆栈中保护的各有关寄存器的内容。4.中断返回在中断服务程序后,用一条中断返回指令(RETI),保证返回主程序继续执行被中断的程序。5.1.2MCS-51中断系统与控制MCS51的51子系列(8031、8051、8751等)有5个中断源,它们有两个优先级,通过4个中断控制器(IE、IP、TCON、SCON)进行中断管理,其结构原理如图5-3所示。一、中断系统参见书P84图5.1PT1ITN1INT0T0T1IE1PX010ET0PS10ESEAET1EX1EX0RIIEIP中断源高级中断请求低级中断请求TXRXTISCON中断标志源允许总允许优先级硬件查询TF1IE0TF0TCON图5-3中断系统结构10≥中断源PT010PX110①.实现CPU与外设的速度配合;②.实现实时控制---即被控对象可以随时向CPU发出请求:要求及时处理,以确保被控对象保持在最佳状态;③.实现故障的及时发现(如断电.运算出错等)处理;④.实现人机对话(如人可以通过键盘.按钮等对CPU进行干预.控制).二、MCS--51中断的实际应用主要有四个方面:三、中断源:能发出中断请求信号的各种事件。如I/O设备、定时时钟、系统故障、软件设定等。有3类共5个中断:1、外中断2个:INT0、INT1由引脚INT0(P3.2)和INT1(P3.3)引入。2、定时中断2个:T0、T1无引入端,请求在芯片内部发生。以记数溢出信号作为中断请求去置位一个溢出标志位。3、串行中断1个:RI/TI无引入端,请求在芯片内部发生。接收或发送完一帧串行数据时,就产生一个中断请求。四、中断优先级控制原则和控制逻辑:中断优先级是为中断嵌套服务的。如图,MCS—51具有2级优先级。1、优先级控制原则:(1)低优先级中断不能打断高优先级的中断服务;但高优先级中断请求信号可以打断低优先级的中断服务,从而实现中断嵌套。(2)如果一个中断请求已被响应,则同级的其它中断服务将被禁止。即同级中断不能嵌套。(3)如同级的多个中断请求同时出现,则按CPU查询次序确定哪个中断请求被响应。查询次序为:INT0→T0→INT1→T1→RI/TI。2、控制逻辑:(1)利用中断优先级控制寄存器;(2)2个优先级状态触发器:状态“0”或“1”。主程序中断服务程序1中断服务程序2*中断源与其中断服务程序入口地址之间的关系是固定的,见表51。表518XC51中断服务程序入口地址表0003H定时器T0000BH0013H定时器T1001BH串行口中断0023H中断源中断服务程序入口INT1INT0表51中的5个中断服务程序入口地址之间,各有8个单元的空间,一般情况下难以容纳一个完整的中断服务程序。通常,总是在中断入口处安排一条无条件转移指令,使程序转向实际存放中断服务程序的存储器区域。例如:若INT0中断服务程序始址在1000H单元,则如下指令执行后便可转入1000H处执行中断服务程序:ORG0003HLJMP1000H五、中断系统的初始化中断系统初始化就是用户对管理中断系统的特殊功能寄存器中的各控制位进行赋值。中断系统初始化步骤如下:(1)开相应中断源的中断;(2)设定所有中断源的中断优先级;(3)若为外部中断,则应规定低电平还是负边沿的中断触发方式。例:请写出INT0为低电平触发的中断系统初始化程序。解:①采用位操作指令(常用)SETBEASETBEX0;开INT0中断SETBPX0;令INT0为高优先级CLRIT0;令INT0为电平触发②采用字节型指令MOVIE,#81H;开INT0中断ORLIP,#01H;令INT0为高优先级ANLTCON,#0FEH;令INT0为电平触发二、中断控制(参见书P84—86)MCS-51单片机设置了4个专用寄存器用于中断控制,用户通过设置其状态来管理中断系统。1.定时器控制寄存器(TCON)(参见书P84)TCON的格式如下:TCOND7D6D5D4D3D2D1D0(88H)TF1TR1TF0TR0IE1IT1IE0IT0如前所述,寄存器中TR1(TR0)用于定时器/计数器的启动控制,其余6位用于中断控制,其作用如下:IT0为外部中断0请求信号方式控制位。IT0=1,脉冲方式(负跳变有效);IT0=0,电平方式(低电平有效)。IE0为外部中断0请求标志位,当CPU检测到INT0(P3.2)端有中断请求信号时,由硬件置位,使IE0=1请求中断,中断响应后转向中断服务程序时,由硬件自动清零。IT1为外部中断1请求信号方式控制位,其作用同IT0。IE1为外部中断1请求标志位,其作用同IE0。TF0(TF1)为定时器/计数器溢出标志位,此标志作用将在定时器/计数器一节说明。2.串行口控制寄存器(SCON)(参见书P85)SCON格式如下:SCOND7D6D5D4D3D2D1D0(98H)TIRI串行口控制寄存器格式及各位功能将在串行接口一节介绍,其中高6位用于串行口控制,低2位(RI、TI)用于中断控制,其作用如下:TI为串行口发送中断请求标志位,发送完一帧串行数据后,由硬件置1,其清零须由软件完成。CLRTIRI为串行口接收中断请求标志位,接完一帧串行数据后,由硬件置1,其清零须由软件完成。CLRRI在MCS-51单片机串行口中,TI和RI的逻辑“或”作为一个内部中断源,二者之一置位都可以产生串行口中断请求,然后在中断服务程序中测试这两个标志位,以决定是发送中断还是接收中断。3.中断允许控制寄存器(IE)(参见书P85)中断允许寄存器格式如下:IED7D6D5D4D3D2D1D0(A8H)EA//ESET1EX1ET0EX0ES为串行口中断允许位,ES=1时,允许串行口中断;ES=0时,禁止串行口中断。寄存器中用于控制中断的共6位,实现中断的管理(该位1/0允许/禁止),其作用如下:EX1为外部中断1允许控制位,EX1=1允许外部中断1中断,EX1=0,禁止外部中断1中断。ET1为定时器/计数器1(T1)中断允许控制位,ET1=1时,允许T1中断;ET1=0时,禁止T1中断。ET0为定时器/计数器0(T0)中断允许控制位,其控制功能同ET1。EX0为外部中断0允许控制位,其控制功能同EX1。EA为中断允许总控制位(总闸)MCS51单片机中断系统的管理是由中断允许总控制位EA和各中断源的中断控制位联合作用实现的,缺一不可。4.中断优先级控制寄存器(IP)(参见书P86)中断优先级控制寄存器的格式如下:IPD7D6D5D4D3D2D1D0(B8H)///PSPT1PX1PT0PX0MCS-51单片机规定了两级中断优先级:高级中断和低级中断,用中断优先级寄存器(IP)的5位状态管理5个中断源的优先级别。相应位是“0”的中断源为低级中断,相应位是“1”的中断源为高级中断。各状态位的作用如下:PS为串行口中断优先控制位,PS=1,串行口为高优先级中断;PS=0,串行口为低优先级中断。PT1为定时器/计数器1(T1)中断优先控制位,PT1=1,T1为高优先级中断,PT1=0,T1为低优先级中断。PT0为定时器/计数器优先控制位,PT0=1,T0为高优先级中断;PT0=0,T0为低优先级中断。PX0为外部中断0中断优先控制位:PX0=1,外部中断0为高优先级中断;PX0=0,外部中断0为低优先级中断PX0为外部中断0中断优先控制位,PX0=1,外部中断0为高优先级中断;PX0=0,外部中断0为低优先级中断。MCS51单片机优先级的控制原则是:⑴为了实现中断嵌套,高优先级中断请求可以中断低优先级的中断服务;反之则不允许。⑵同等优先级中断源之间不能中断对方的中断服务过程。⑶多个同级中断源同时产生中断请求时,则按查询顺序确定哪个中断请求先被响应。MCS51单片机规定的查询顺序是:外部中断0、定时器/计数器0、外部中断1、定时器/计数器1和串行口中断。一、中断响应条件:1.有中断请求信号;2.系统处于开中断状态。二、中断响应过程:1.关中断:屏蔽其它中断请求信号。2.保护断点:将断点地址压入堆栈保存,即当前PC值入栈。3.寻找中断源:中断程序入口地址PC,转入中断服务。4.保护现场:将中断服务程序使用的所有寄存器内容入栈。5.中断处理:执行中断源所要求的程序段。链接中断处理6.恢复现场:恢复被使用寄存器的原有内容。7.开中断:允许接受其它中断请求信号。8.中断返回:执行RETI指令,堆栈断点地址PC,程序跳转回断点处执行。RETI=RET指令+通知CPU中断服务已结束(复位触发器)5.1.3中断响应过程执行一条指令取下一条指令中断请求?NY关中断开中断保护现场中断服务关中断开中断恢复现场返回图1中断响应过程:P871、中断采样——仅对外中断(INT0、INT1)请求信号;2、中断查询:单片机在每一个机器周期的最后一个状态S6,按优先级顺序对中断请求标志位进行查询,即先查询高级中断后再查询低级中断,同级中断按“INT0→T0→INT1→T1→RI/TI”的顺序查询。如果查询到有标志位为“1”,则表明有中断请求发生,接着就从相邻的下一个机器周期的S1状态开始进行中断响应。由于中断请求是随机发生的,CPU无法预先得知,因此在程序执行过程中,中断查询要在指令执行的每个机器周期中不停地重复进行。3、中断响应:当查询到有效的中断请求时,就进行中断响应。其主要内容是由硬件自动生成一条长调用指令LCALL。其格式为:LCALLad
本文标题:第5章 中断系统与定时计数器
链接地址:https://www.777doc.com/doc-3195448 .html