您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > MCS-51系列单片机的中断系统及定时器计数器
第三章MCS-51系列单片机的中断系统及定时器/计数器3.1中断的概念众所周知,CPU的工作速度愈来愈快,CPU启动外部设备输入/输出一个字节数据只需要微秒级甚至更短的时间,而低速的外设工作速度一般在毫秒级,若CPU和外部设备是串行工作的,则CPU就浪费了很多时间去等待外设,其效率大大降低。若没有中断技术,CPU难于为多个设备服务,对故障的处理能力也极差。为了解决这些问题,在计算机中引入了中断技术,目前所有的计算机都有中断处理的能力。3.1.1中断的基本概念及相关术语中断是CPU在执行现行程序的过程中,发生随机事件和特殊请求时,使CPU中止现行程序的执行,而转去执行随机事件或特殊请求的处理程序,待处理完毕后,再返回被中止的程序继续执行的过程。实现中断的硬件逻辑和实现中断功能的指令统称为中断系统。引起中断的事件称为中断源,实现中断功能的处理程序称为中断服务程序。中断的响应过程如图3.1所示,(a)为单级中断,(b)为两级中断嵌套。对于中断系统来说,引起中断的事件称为中断源;由中断源向CPU所发出的请求中断的信号称为中断请求信号;CPU中止现行程序执行的位置称为中断断点;中断断点处的程序位置称为中断现场;由中断服务程序返回到原来程序的过程称为中断返回;CPU接受中断请求而中止现行程序,转去为中断源服务称为中断响应。在中断系统中,对中断断点的保护是CPU在响应中断时自动完成的,中断服务完成时执行中断返回指令而得到恢复;对于中断断点处其他数据的保护与恢复是通过在中断服务程序中采用堆栈操作指令PUSH及POP来实现的,这种操作通常称为保护现场与恢复现场。3.1.2中断的作用中断系统在计算机系统中有很重要的作用,利用中断可以实现以下功能:(1)分时操作。利用中断系统可以实现CPU和多台外设并行工作,能对多道程序分时操作,以及实现多机系统中各机间的联系,提高计算机系统的工作效率。(2)实时处理。利用中断系统可以对生产过程的随机信息及时采集和处理,实现实时控制,提高计算机控制系统的灵活性。(3)故障处理。利用中断系统可以监视现行程序的程序性错误(如运算溢出、地址错等)和系统故障(如电源掉电、I/O总线奇偶错误等),实现故障诊断和故障的自行处理,提高计算机系统的故障处理能力。3.1.3中断源通常,计算机的中断源有下列几种:(1)一般输入/输出设备。当外设准备就绪时可以向CPU发出中断请求,从而实现外设与CPU的通信。如键盘、打印机等。(2)实时时钟或计数信号。如定时时间或计数次数一到,则向CPU发出中断请求,要求CPU予以处理0(3)故障源。当采样或运算结果出现超出范围或系统停电时,可以通过报警、掉电等信号向CPU发出中断请求,要求CPU加以处理。(4)为调试程序而设置的中断源。为了便于控制程序的调试,及时检查中间结果可以在程序中设置一些断点或单步执行等。3.1.4中断系统的基本功能为了满足系统中各种中断请求的要求,中断系统应该具备如下的基本功能:(1)识别中断源。在中断系统中必须能够正确识别各个中断源,以便区分各个中断请求,从而为不同的中断请求服务。(2)能实现中断响应及中断返回。当CPU收到中断请求申请后,能根据具体情况决定是否响应中断,如果没有更高级别的中断请求,则在执行完当前指令后响应这一请求。响应过程应包括:保护断点、保护现场、执行相应的中断服务程序、恢复现场、恢复断点等。当中断服务程序执行完毕后返回被中断的程序继续执行。(3)能实现中断优先权排队。如果在系统中有多个中断源,可能会出现两个或多个中断源同时向CPU提出中断请求的情况,这样就必须要求设计者事先根据轻重缓急,给每个中断源确定一个中断级别,即优先权。当多个中断源同时发出中断请求时,CPU能找到优先权级别最高的中断源,并优先响应它的中断请求;在优先权级别最高的中断处理完了以后,再响应级别较低的中断源。(4)能实现中断嵌套。当CPU响应某一中断的请求,在进行中断处理时,若有优先权级别更高的中断源发出中断请求,CPU要能中断正在进行的中断服务程序,保留这个程序的断点和现场,而响应高优先权的中断,在高优先权处理完以后,再继续执行被中断的中断服务程序,即形成中断嵌套,如图3.1(b)所示。而当发出新的中断请求的中断源的优先权与正在处理的中断源同级或更低时,则CPU就可以不响应这个中断请求,直至正在处理的中断服务程序执行完以后才去处理新的中断申请。3.2MCS-51系列单片机的中断系统MCS-51系列单片机中不同型号芯片的中断源数量是不同的,最基本的8051单片机有5个中断源,分别是INTO、INT1、TO、Tl。中断源分为两个中断优先权级别,可以实现两级中断服务程序嵌套。每一个中断源可以编程为高优先权级别或低优先权级别中断,允许或禁止向CPU请求中断。MCS-51列单片机基本的中断系统结构图如图3.2所示。图3.2MCS一51系列单片机8051的中断系统内部结构图由图3.2可知,所有的中断源都要产生相应的中断请求标志,这些标志分别放在特殊功能寄存器TCON和SCON的相关位。每一个中断源的请求信号需经过中断允许IE和中断优先权选择IP的控制才能够得到单片机的响应。3.2.1中断源与中断请求由图3.2可以看出,MCS-51系列单片机有5个中断源,它们是:外部中断INTO(P3.2)、INTI(P3.3);定时器肼数器T0、Tl溢出中断;串行口的发送(TXD)和接收(RXD)中断源(只占1个中断源)。外部中断的中断请求标志位和T0、Tl的溢出中断请求标志位锁存在定时器/计数器控制寄存器TCON中,而串行口对应的中断请求标志位锁存在串行口控制寄存器SCON中。1.定时器/计数器控制寄存器TCONTCON为定时器/计数器控制寄存器,其字节映像地址为88H,可位寻址,它除了控制定时器/计数器T0、Tl的溢出中断外,还控制着两个外部中断源的触发方式和锁存两个外部中断源的中断请求标志。其格式如下:TFlTRlTF0TROIElITlIEOIT0TCON寄存器各位的含义如下:IT0:外部中断INTO的中断触发方式选择位。当IT0位清为0时,外部中断INTO为电平触发方式。在这种触发方式中,CPU在每一个机器周期的$5P2采样INTO(P3.2)引脚的输入电平,当采样到低电平时,置INT0的中请求标志位为1,采样到高电平清IE0位为0。在采用电平触发方式时,外部中断源(输入到INTO,即P3.2引脚)上的必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行结束之前,外部中断源的有效信号必须被清除,否则将产生另一次中断。为了保证CPU能正确采样电平状态,要求外部中断源INTO有效的低电平信号至少要维持一个机器周期以上。当IT0位置为1时,外部中[新IN-T0为边沿触发方式。在这种触发方式中,CPU在每个机器周期的$5P2采样INTO(P3.2)引脚上的输入电平。如果在相继的两个机器周期,一个周期采样到INTO为高电平,而接着的下一个周期采样到低电平,则置INTO的中断请求标志位IE0为1,即当IE0位为l时,表示外部中断INTO正在向CPU请求中断,直到该中断被CPU响应时,才由硬件自动将IE0位清为0。因为CPU在每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中断源输入的高电平信号和低电平信号时间必须保持在一个机器周期以上,才能保证CPU检测到此信号由高到低的负跳变。IE0:外部中断:INT0的中断请求标志位。当IE0位为0时,表示外部中断源INT0没有向CPU请求中断;当IE0位为l时,表示外部中断INTO正在向CPU请求中断,且当CPU响应该中断时由硬件自动对IE0进行清0。1T1:外部中断INTO的中断触发方式选择位。功能与ITo相同。IEl:外部中断INTO的中断请求标志位。功能与IE0相l司。TR0:定时器/计数器T0的启动标志位。当TR0位为0时,不允许T0计数工作;当TRO位为l时,允许T0定时或计数工作。TF0:定时器/计数器T0的溢出中断请求标志位。在定时器/计数器T0被允许计数后,从初值开始加l计数,当产生计数溢出时由硬件自动将TF0位置为1,通过TF0位向CPU申请中断,一直保持到CPU响应该中断后才由硬件自动将TF0位清为0。当TF0位为0时,表示T0未计数或计数未产生溢出。当T0工作在不允许中断时,TF0标志可供程序查询。TRl:定时器/计数器Tl的启动标志位。功能与TR0相l司。TFl:定时器/计数器Tl的溢出中断请求标志位。功能与TF0相I司。2.串行口控制寄存器SC,ON’SCON为串口控制寄存器,其字节映像地址为98H,也可以进行位寻址。串口的接收和发送数据中断请求标志位(R1、TI)被锁存在串口控制寄存器SCON中,其格式如下:SM0SMlSM2RENTB8RB8TIRISCON寄存器各位的含义如下:R1:串口接收中断请求标志位。当串行以一定方式接收数据时,每接收完一帧数据,由硬件自动将Rl位置为1。而Rl位的清0必须由用户用指令来完成。T1:串l3发送中断请求标志位。当串口以一定方式发送数据时,每发送完一帧数据,由硬件自动将Tl位置为l。而Tl位的清0也必须由用户用指令来完成。注意:在中断系统中,将串行口的接收中断Rl和发送中断Tl经逻辑或运算后作为内部的一个中断源。当CPU响应串口的中断请求时,CPU并不清楚是由接收中断产生的中断请求还是由发送中断产生的中断请求,所以用户在编写串口的中断服务程序时,在程序中必须识别是RI还是Tl产生的中断请求,从而执行相应的中断服务程序。SCON其他位的功能和作用与串行通信有关,将在第6章中介绍。在上述的特殊功能寄存器中的所有中断请求标志位,都可以由软件加以控制,即用软件置位或清0。当某位置位时,就相当于该位对应的中断源向CPU发出中断请求,如果清。就撤销中断请求。3.2.2中断允许控制在计算机中断系统中有两种不同类型的中断:一类为非屏蔽中断,另一类为可屏蔽中断。对于非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断请求,CPU就必须予以响应。而对于可屏蔽中断,用户则可以通过软件方法来控制它们是否允许CPU去响应。允许CPU响应某一个中断请求称为中断开放(或中断允许),不允许CPU响应某一个中断请求称为中断屏蔽(或中断禁止)。MCS一51系列单片机的5个中断源都是可屏蔽中断。由图3.2可知,CPU对中断源的中断开放或中断屏蔽的控制是通过中断允许控制寄存器IE来实现的。IE的字节映像地址为0A8H,既可以按字节寻址,也可以按位寻址。当单片机复位时,IE被清为0。通过对IE的各位的置1或清0操作,实现开放或屏蔽某个中断,也可以通过对EA位的清O来屏蔽所有的中断源。IE的格式如下.EA---------ESET1EX1ETOEX0IE寄存器各位的含义为:EA:总中断允许控制位。当EA位为0时,屏蔽所有的中断;当EA位为l时,开放所有的中断。ES:串口中断允许控制位。当ES位为0时,屏蔽串口中断;当ES位为l且EA位也为1时,开放串口中断。ETl:定时器/计数器Tl的中断允许控制位。当ETl位为0时,屏蔽Tl的溢出中断;当ETl位为l且EA位也为1时,开放Tl的溢出中断。EXl:INT1的中断允许控制位。当EXl位为0时,屏蔽INTl;当EXl位为l且EA位也为1时,开放丽。ET0:定时器/计数器T0的中断允许控制位。功能与ETl相同。EX0:INT0的中断允许控制位。功能与EXl相同。比如要开放INTl和Tl的溢出中断,屏蔽其他中断,则对应的中断允许控制字为:l00011008,即8CH。只要将这个结果送人IE中,中断系统就按所设置的结果来管理这些中断源。形成这个控制结果的方法可以对IE按字节操作,也可以按位操作。按字节操作形式按位操作形式SETBEXlMOVIE,#8CHSETBETlSETBEA思考题3.1:如果要开放外部中断0和串口的中断,而屏蔽其他中断的控制字是什么?如何来实现这个控制结果呢?3.2.3中断优先权管理在中断系统中,要使某一个中断被优先响应的话,就
本文标题:MCS-51系列单片机的中断系统及定时器计数器
链接地址:https://www.777doc.com/doc-6017347 .html