1、MCS-51系列单片机的中断系统及定时器计数器 作者: 日期:22 个人收集整理 勿做商业用途第三章MCS51系列单片机的中断系统及定时器/计数器31 中断的概念众所周知,CPU的工作速度愈来愈快,CPU启动外部设备输入输出一个字节数据只需要微秒级甚至更短的时间,而低速的外设工作速度一般在毫秒级,若CPU和外部设备是串行工作的,则CPU就浪费了很多时间去等待外设,其效率大大降低。若没有中断技术,CPU难于为多个设备服务,对故障的处理能力也极差.为了解决这些问题,在计算机中引入了中断技术,目前所有的计算机都有中断处理的能力。311 中断的基本概念及相关术语 中断是CPU在执行现行程序的过程中,发
2、生随机事件和特殊请求时,使CPU中止现行程序的执行,而转去执行随机事件或特殊请求的处理程序,待处理完毕后,再返回被中止的程序继续执行的过程.实现中断的硬件逻辑和实现中断功能的指令统称为中断系统.引起中断的事件称为中断源,实现中断功能的处理程序称为中断服务程序。中断的响应过程如图31所示,(a)为单级中断,(b)为两级中断嵌套。对于中断系统来说,引起中断的事件称为中断源;由中断源向CPU所发出的请求中断的信号称为中断请求信号;CPU中止现行程序执行的位置称为中断断点;中断断点处的程序位置称为中断现场;由中断服务程序返回到原来程序的过程称为中断返回;CPU接受中断请求而中止现行程序,转去为中断源服
3、务称为中断响应。在中断系统中,对中断断点的保护是CPU在响应中断时自动完成的,中断服务完成时执行中断返回指令而得到恢复;对于中断断点处其他数据的保护与恢复是通过在中断服务程序中采用堆栈操作指令PUSH及POP来实现的,这种操作通常称为保护现场与恢复现场。312 中断的作用中断系统在计算机系统中有很重要的作用,利用中断可以实现以下功能:(1)分时操作。利用中断系统可以实现CPU和多台外设并行工作,能对多道程序分时操作,以及实现多机系统中各机间的联系,提高计算机系统的工作效率。(2)实时处理.利用中断系统可以对生产过程的随机信息及时采集和处理,实现实时控制,提高计算机控制系统的灵活性.(3)故障处
4、理.利用中断系统可以监视现行程序的程序性错误(如运算溢出、地址错等)和系统故障(如电源掉电、IO总线奇偶错误等),实现故障诊断和故障的自行处理,提高计算机系统的故障处理能力。313 中断源通常,计算机的中断源有下列几种: (1)一般输入输出设备。当外设准备就绪时可以向CPU发出中断请求,从而实现外设与CPU的通信.如键盘、打印机等。(2)实时时钟或计数信号。如定时时间或计数次数一到,则向CPU发出中断请求,要求CPU予以处理0(3)故障源。当采样或运算结果出现超出范围或系统停电时,可以通过报警、掉电等信号向CPU发出中断请求,要求CPU加以处理.(4)为调试程序而设置的中断源。为了便于控制程序
5、的调试,及时检查中间结果可以在程序中设置一些断点或单步执行等.314 中断系统的基本功能为了满足系统中各种中断请求的要求,中断系统应该具备如下的基本功能:(1)识别中断源。在中断系统中必须能够正确识别各个中断源,以便区分各个中断请求,从而为不同的中断请求服务。(2)能实现中断响应及中断返回。当CPU收到中断请求申请后,能根据具体情况决定是否响应中断,如果没有更高级别的中断请求,则在执行完当前指令后响应这一请求。响应过程应包括:保护断点、保护现场、执行相应的中断服务程序、恢复现场、恢复断点等。当中断服务程序执行完毕后返回被中断的程序继续执行.(3)能实现中断优先权排队。如果在系统中有多个中断源,
6、可能会出现两个或多个中断源同时向CPU提出中断请求的情况,这样就必须要求设计者事先根据轻重缓急,给每个中断源确定一个中断级别,即优先权.当多个中断源同时发出中断请求时,CPU能找到优先权级别最高的中断源,并优先响应它的中断请求;在优先权级别最高的中断处理完了以后,再响应级别较低的中断源。(4)能实现中断嵌套。当CPU响应某一中断的请求,在进行中断处理时,若有优先权级别更高的中断源发出中断请求,CPU要能中断正在进行的中断服务程序,保留这个程序的断点和现场,而响应高优先权的中断,在高优先权处理完以后,再继续执行被中断的中断服务程序,即形成中断嵌套,如图31(b)所示。而当发出新的中断请求的中断源
7、的优先权与正在处理的中断源同级或更低时,则CPU就可以不响应这个中断请求,直至正在处理的中断服务程序执行完以后才去处理新的中断申请。32 MCS-51系列单片机的中断系统MCS51系列单片机中不同型号芯片的中断源数量是不同的,最基本的8051单片机有5个中断源,分别是INTO、INT1、TO、Tl。中断源分为两个中断优先权级别,可以实现两级中断服务程序嵌套。每一个中断源可以编程为高优先权级别或低优先权级别中断,允许或禁止向CPU请求中断。MCS-51列单片机基本的中断系统结构图如图32所示。文档为个人收集整理,来源于网络本文为互联网收集,请勿用作商业用途图32 MCS一51系列单片机8051的
8、中断系统内部结构图由图32可知,所有的中断源都要产生相应的中断请求标志,这些标志分别放在特殊功能寄存器TCON和SCON的相关位.每一个中断源的请求信号需经过中断允许IE和中断优先权选择IP的控制才能够得到单片机的响应。321 中断源与中断请求由图32可以看出,MCS51系列单片机有5个中断源,它们是:外部中断INTO(P3。2) 、INTI(P33);定时器肼数器T0、Tl溢出中断;串行口的发送(TXD)和接收(RXD)中断源(只占1个中断源)。外部中断的中断请求标志位和T0、Tl的溢出中断请求标志位锁存在定时器计数器控制寄存器TCON中,而串行口对应的中断请求标志位锁存在串行口控制寄存器S
9、CON中。1定时器计数器控制寄存器TCON TCON为定时器计数器控制寄存器,其字节映像地址为88H,可位寻址,它除了控制定时器计数器T0、Tl的溢出中断外,还控制着两个外部中断源的触发方式和锁存两个外部中断源的中断请求标志.其格式如下:TFlTRlTF0TROIEl ITl IEOIT0 TCON寄存器各位的含义如下:IT0:外部中断INTO的中断触发方式选择位。当IT0位清为0时,外部中断INTO为电平触发方式。在这种触发方式中,CPU在每一个机器周期的5P2采样INTO(P32)引脚的输入电平,当采样到低电平时,置INT0的中请求标志位为1,采样到高电平清IE0位为0.在采用电平触发方式
10、时,外部中断源(输入到INTO,即P32引脚)上的必须保持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行结束之前,外部中断源的有效信号必须被清除,否则将产生另一次中断.为了保证CPU能正确采样电平状态,要求外部中断源INTO有效的低电平信号至少要维持一个机器周期以上。当IT0位置为1时,外部中新IN-T0为边沿触发方式。在这种触发方式中,CPU在每个机器周期的5P2采样INTO(P32)引脚上的输入电平.如果在相继的两个机器周期,一个周期采样到INTO为高电平,而接着的下一个周期采样到低电平,则置INTO的中断请求标志位IE0为1,即当IE0位为l时,表示外部中断INTO正在向C
11、PU请求中断,直到该中断被CPU响应时,才由硬件自动将IE0位清为0。因为CPU在每一个机器周期采样一次外部中断源输入引脚的电平状态,因此采用边沿触发方式时,外部中断源输入的高电平信号和低电平信号时间必须保持在一个机器周期以上,才能保证CPU检测到此信号由高到低的负跳变。IE0:外部中断:INT0的中断请求标志位.当IE0位为0时,表示外部中断源INT0没有向CPU请求中断;当IE0位为l时,表示外部中断INTO正在向CPU请求中断,且当CPU响应该中断时由硬件自动对IE0进行清0。1T1:外部中断INTO的中断触发方式选择位。功能与ITo相同。IEl:外部中断INTO的中断请求标志位.功能与
12、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串行口控制寄
13、存器SC,ONSCON为串口控制寄存器,其字节映像地址为98H,也可以进行位寻址.串口的接收和发送数据中断请求标志位(R1、TI)被锁存在串口控制寄存器SCON中,其格式如下:文档为个人收集整理,来源于网络本文为互联网收集,请勿用作商业用途SM0SMlSM2RENTB8RB8TIRISCON寄存器各位的含义如下:R1:串口接收中断请求标志位。当串行以一定方式接收数据时,每接收完一帧数据,由硬件自动将Rl位置为1.而Rl位的清0必须由用户用指令来完成。T1:串l3发送中断请求标志位。当串口以一定方式发送数据时,每发送完一帧数据,由硬件自动将Tl位置为l。而Tl位的清0也必须由用户用指令来完成。注
14、意:在中断系统中,将串行口的接收中断Rl和发送中断Tl经逻辑或运算后作为内部的一个中断源.当CPU响应串口的中断请求时,CPU并不清楚是由接收中断产生的中断请求还是由发送中断产生的中断请求,所以用户在编写串口的中断服务程序时,在程序中必须识别是RI还是Tl产生的中断请求,从而执行相应的中断服务程序.SCON其他位的功能和作用与串行通信有关,将在第6章中介绍。在上述的特殊功能寄存器中的所有中断请求标志位,都可以由软件加以控制,即用软件置位或清0。当某位置位时,就相当于该位对应的中断源向CPU发出中断请求,如果清。就撤销中断请求.322中断允许控制在计算机中断系统中有两种不同类型的中断:一类为非屏
15、蔽中断,另一类为可屏蔽中断。对于非屏蔽中断,用户不能用软件方法加以禁止,一旦有中断请求,CPU就必须予以响应。而对于可屏蔽中断,用户则可以通过软件方法来控制它们是否允许CPU去响应。允许CPU响应某一个中断请求称为中断开放(或中断允许),不允许CPU响应某一个中断请求称为中断屏蔽(或中断禁止)。MCS一51系列单片机的5个中断源都是可屏蔽中断.由图32可知,CPU对中断源的中断开放或中断屏蔽的控制是通过中断允许控制寄存器IE来实现的。IE的字节映像地址为0A8H,既可以按字节寻址,也可以按位寻址。当单片机复位时,IE被清为0。通过对IE的各位的置1或清0操作,实现开放或屏蔽某个中断,也可以通过
16、对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:定时
17、器计数器T0的中断允许控制位。功能与ETl相同。EX0:INT0的中断允许控制位。功能与EXl相同。比如要开放INTl和Tl的溢出中断,屏蔽其他中断,则对应的中断允许控制字为:l00011008,即8CH。只要将这个结果送人IE中,中断系统就按所设置的结果来管理这些中断源。形成这个控制结果的方法可以对IE按字节操作,也可以按位操作。按字节操作形式 按位操作形式SETB EXlMOV IE,8CHSETB ETlSETB EA思考题31:如果要开放外部中断0和串口的中断,而屏蔽其他中断的控制字是什么?如何来实现这个控制结果呢?323中断优先权管理在中断系统中,要使某一个中断被优先响应的话,就要依
18、靠中断优先权控制。MCS-51系列单片机对所有中断设置了两个优先权,每一个中断请求源都可以编程设置为高优先权中断或低优先权中断,从而实现二级中断嵌套.为了实现对中断优先权的管理,在MCS一51内部提供了一个中断优先级寄存器IP,其字节地址为088H,既可以按字节形式访问,又可以按位的形式访问.其格式如下:个人收集整理,勿做商业用途个人收集整理,勿做商业用途- PS PTl PXl PT0 PXO IP寄存器各位的含义如下:PX0、PT0、PXl、PTl和PS分别为INTO、TO、INT1、Tl和串口中断优先级控制位。当相应的位为0时,所对应的中断源定义为低优先级,相反则定义为高优先级.比如要将
19、T0定义为高优先级,使CPU优先响应其中断,其他中断均定义为低优先级,对应的优先级控制字为O00000108,即02H。只要将这个控制字送人IP中,CPU就优先响应TO产生的溢出中断,并将其他中断按低优先级中断处理。具体操作形式如下:按字节操作形式 按位操作形式MOV IP,#02H SETB PT0在同一个优先级中,各中断源的优先级别由一个内部的硬件查询序列来决定,所以在同级的中断中按硬件查询序列也确定了一个自然优先级,其从高到低的优先级排列如下:INTOTOINT1-Tl-串口(RI、TI)按中断优先权设置后,响应中断的基本原则是:若多个中断请求同时有效,CPU优先响应优先权最高的中断请求
20、.同级的中断或更低级的中断不能中断CPU正在响应的中断过程.低优先权的中断响应过程可以被高优先权的中断请求所中断,CPU会暂时中止当前低优先权的中断过程,而优先响应高优先权中断.等到高优先权中断响应结束后再继续响应原低优先权的中断过程,形成中断的嵌套.为了实现上述功能和基本原则,在MCS51系列单片机中断系统的内部设置了两个不可寻址的优先级触发器,一个是指出CPU是否正在响应高优先权中断的高优先级触发器,另一个是指出CPU是否正在响应低优先权中断的低优先级触发器。当高优先级触发器状态为l时,屏蔽所有的中断请求;当低优先级触发器状态为1时,屏蔽所有同级的中断请求而允许高优先权中断的中断请求。MC
21、S一51系列单片机复位后,特殊功能寄存器IE、IP的内容均为0,由用户的初始化程序对IE、IP进行初始化,开放或屏蔽某些中断并设置它们的优先权。324中断响应单片机一旦工作,并由用户对各中断源进行使能和优先权初始化编程后,MCS51系列单片机的CPU在每个机器周期顺序检查每一个中断源。那么,在什么情况下CPU可以及时响应某一个中断请求呢?若CPU响应某一个中断请求,它又是如何工作的呢?1中断响应条件单片机的CPU在每个机器周期的最后一个状态周期采样并按优先权设置的结果处理所有被开放中断源的中断请求。一个中断源的请求要得到响应,必须满足一定的条件. (1)CPU正在处理相同的或更高优先权的中断请
22、求.这种情况下只有当前中断响应结束后才可能响应另一个中断请求。(2)现行的机器周期不是当前所执行指令的最后一个机器周期。此时只有在当前指令执行结束周期的下一个机器周期才可能响应中断请求。(3)正在执行的指令是中断返回指令(RETI)或者是对IE、IP的写操作指令。在这种情况下,只有在这些指令执行结束并至少再执行一条其他指令后才可能响应中断请求。如果上述条件中有一个存在,CPU将自动丢弃对中断查询的结果;若一个条件也不存在,则将在紧接着的下一个机器周期执行中断查询的结果,响应相应的中断请求。2中断响应过程如果某一个中断被开放,且中断请求符合响应条件,CPU会及时响应该中断请求,并按下列过程进行处
23、理:(1)置相应的优先级触发器状态为1,指明了CPU正在响应的中断优先权的级别,并通过它屏蔽所有同级或更低级的中断请求,允许更高级的中断请求。(2)执行一条硬件子程序调用,清相应的中断请求标志位为0(R1、Tl和电平触发的外部中断除外)。(3)保护断点。即将被中断程序的断点位置(Pc的值)压人堆栈保存起来。(4)将被响应的中断源的中断服务程序入口地址送程序计数器PC.各中断源的中断服务程序入口地址的分配情况如表l4所示。(5)执行相应的中断服务程序。当CPU执行完中断服务程序中的中断返回指令后,清相应的优先级触发器为0,然后恢复断点,即将保存在堆栈中的程序计数器PC的值再弹给PC,使CPU再继
24、续执行原来被中断的程序。3中断响应的时间本文为互联网收集,请勿用作商业用途本文为互联网收集,请勿用作商业用途在MCS51系列单片机中的外部中断请求信号在每一个机器周期的第5个状态周期的第2个时钟脉冲被采样并锁存到相应的中断请求标志中,这个状态等到下一个机器周期才被查询。如果中断被开放,并符合响应条件,CPU接着执行一个硬件子程序调用指令以转到相应的中断服务程序入口,该调用指令需要2个机器周期,所以从外部产生中断请求到CPU开始执行中断服务程序的第l条指令之间,最少需要3个完整的机器周期。如果中断请求被阻止,则需要更长的时间。如果已经在处理同级或更高级中断,额外的等待取决于中断服务程序的处理过程
25、。如果正处理的指令没有执行到最后的机器周期,即使是需要时间最长的乘法或除法指令,所需的额外等待时间不会超过3个机器周期;如果是CPU正在执行中断返回指令RETl或对IE、IP的写操作指令,加上另外一条指令的执行时间,额外的等待时间不会多于5个机器周期。所以在单一中断系统中,外部中断响应时间总是在38个机器周期。325外部中断应用举例 如图33所示,Pl口输出控制8只发光二极管,实现8位二进制计数器,对INT0上出现的脉冲数进行计数。 在图33中,由与非门构成去抖动电路,S开关每动作一次,就输出一个脉冲去单片机的INT0引脚上,让INT0工作于边沿触发方式,每按一次开关S,就产生一次中断,在中断
26、服务程序中计一次数,并把计数结果从Pl口输出,显示在发光二极管上。文档为个人收集整理,来源于网络本文为互联网收集,请勿用作商业用途程序清单如下: ORG 0000HSTART:AJMP MAINORG 0003HAJMP EXINT0MAIN: SETB 在上例中,由于主程序和中断服务程序都很简单,所以在中断服务程序中没有安排现场保护和恢复,如果在中断服务程序中使用的寄存器和存储单元与主程序有冲突时,必须进行现场保护和恢复。思考题32:MCS一5 1单片机只有两个外部中断,如果需要单片机处理两个以上的外部中断,该怎样进行呢?33 MGS51系列单片机的定时器计数器各种型号的单片机,不管其功能强
27、弱都提供有定时器计数器,因为定时器计数器面向控制领域的单片机系统是一项极为重要的功能。定时器计数器可以实现以下功能:(1)定时操作:产生定时中断,实现定时采样输入信号,定时扫描键盘、显示器等操作。(2)测量外部脉冲信号:对脉冲信号计数统计或测量脉冲信号的周期等.(3)定时输出:定时触发输入引脚的电平,使输出脉冲的宽度、占空比、周期达到预定值,其精度不受程序状态的影响。(4)监视系统正常工作:一旦系统工作异常时自动产生复位,重新启动系统正常工作.MCS51系列单片机的51子系列有两个l6位定时器计数器T0、Tl,而52子系列有3个16位定时器计数器T0、Tl、T2。本书只学习T0、Tl的应用.3
28、31定时器计数器仰、Tl的结构8051单片机内部有两个l6位定时器计数器:定时器计数器T0和定时器计数器Tl.它们都具有定时和计数功能,可用于定时或延时控制、对外部事件检测、计数等,其内部结构框图如图34所示.1定时器计数器T0、Tl的资源由图34知,定时器计数器T0、Tl主要由存放计数初值和经过值的两对8位寄存器(TH0、TL0和THl、TLl),方式寄存器TMOD和控制寄存器TCON组成.其中TH0、TL0专门用于存放定时器计数器T0的计数初值和经过值;THl、TLl用于存放定时器计数器Tl的计数初值和经过值;TMOD用于设置T0、Tl的工作方式;TCON中的TR0、TRl用于控制T0、T
29、l的运行;P34、P35引脚用于输入在计数器方式下的外部计数脉冲信号。 定时器计数器T0、Tl用做定时器时,对机器周期进行计数,每经过一个机器周期计数器加1,直到计数器计满溢出。由于一个机器周期由l2个时钟周期组成,所以计数频率为时钟频率的112.所以定时器的定时时间不仅与计数器的初值即计数长度有关,而且还与系统的时钟频率大小有关。本文为互联网收集,请勿用作商业用途本文为互联网收集,请勿用作商业用途图34定时器计数器结构框图定时器计数器T0、Tl用做计数时,计数器对来自输入引脚To(P34)和Tl(P3。5)的外部信号计数。计数器对外部脉冲信号的占空比没有特别的要求,但必须保证输入的高电平和低
30、电平信号至少应维持一个完整的机器周期。2定时器计数器T0、Tl的方式寄存器TMOD特殊功能寄存器TMOD为T0、Tl的工作方式寄存器,其格式如下:TMOD的低4位为T0的方式字段,高4位为Tl的方式字段,它们的含义是完全相同的。M1 M0:T0Tl的工作方式选择位,其对应关系如表31所示。表31 T0T1工作方式选择位的意义M1 M2工作方式功能说明 方式03位定时器计数器工作方式方式16位定时器计数器工作方式方式自动再装入的8位定时器计数器工作方式 方式T0:分为两个8位定时器肘数器,Tl:停止计数 CT:定时器或计数器方式选择位.当CT位为0时,选择定时器方式。在定时器方式中,以时钟信号的
31、l2分频信号作为计数信号,也就是每一个机器周期定时器加1。当系统的时钟信号频率确定后,定时器从初值开始加1,到定时器溢出所需要的时间是固定的,所以称为定时器方式.当CT位置为1时,选择计数器方式。在计数器方式中,对外部引脚(T0为P34,Tl为P35)上的输入脉冲信号进行计数.GATE:T0Tl的门控位。当GATE位为0时,定时器肼数器T0、Tl的运行仅受TR0、TRl的控制,不受外部引脚电平的状态的影响。当GATE位置为l时,定时器计数器T0、Tl的运行不仅受TR0、TRl的控制,而且还受到外部引脚电平状态的控制(INT0控制T0,INT1控制Tl)。即只有当INT0(INTl)引脚为高电平
32、且TRO(TRl)位为l时才启动TO(T1)计数,当INTO(INTl)引脚为低电平或TR0(TRl)位为0时均使T0(T1)停止计数。TMOD的字节映像地址为89H,只能按字节形式操作,不能进行位寻址。复位时TMOD所有位均清为0。比如,要使T0以方式2实现定时,Tl以方式1进行计数,且均与外部引脚电平无关的方式控制字为010100108,即52H;若与外部引脚电平状态有关时的方式控制字为ll011010B。即0DAH.文档为个人收集整理,来源于网络个人收集整理,勿做商业用途3定时器计数器T0、Tl的控制寄存器TCON特殊功能寄存器TCON的高4位存放定时器计数器T0、Tl的运行控制位和计数
33、溢出标志位,低4位存放外部中断的触发方式控制位和锁存外部中断的请求标志位.其格式如下:TFlTR1TF0TR0IE1IT1IE0IT0各位的功能和作用已在321节中介绍了,在此不再重复。 332定时器计数器T0、Tl的工作方式定时器计数器TO有4种工作方式,而定时器计数器Tl只有3种工作方式。不同的工作方式其内部的结构有所不同,功能上也有差别.1方式0方式0为13位定时器计数器工作方式,方式0的内部结构如图35所示.方式0由TL0TLl的低5位和TH0THl的8位组成.当TL0TLl的低5位产生溢出进位时向TH0THl进位,TH0THl计数溢出时置溢出中断请求标志位TF0TFl为1,向CPU请
34、求中断。由图35可知,在方式0的T0Tl计数脉冲控制电路中,有一个方式电子开关和允许计数控制电子开关。当CT位为0时,方式电子开关与上面接通,以时钟频率的l2分频信号作为T0Tl的计数信号;当CT位为l时,方式电子开关与下面接通,此时以TO(P34)Tl(P35)引脚上的输入脉冲作为T0Tl的计数脉冲.当GATE位为0时,由TR0TRl控制定时器工作,当GATE位为l时,定时器不仅受TR0TRl的控制,而且还受INT0/INT1引脚上的电平控制。文档为个人收集整理,来源于网络本文为互联网收集,请勿用作商业用途T0Tl以方式0工作时定时计数初值的计算方法如下:当T0Tl以方式0定时时,假设时钟频
35、率以fosc表示,定时初值以a表示,定时时间以t表示,那么三者关系为:12t= - (213a) fosc若给定定时时间的要求,定时初值a的大小为:12213tfosca=-12 比如fosc=12MHz,T0的定时时间t=5ms,则定时初值a为:12213510-312106a=-=8192-5000=3192=110001111000B12 因此,TL0的初值为l8H,TH0的初值为63H,对T0的初始化的子程序为:INTT0: MOV TH0,#63HMOV TL018HSETB EASETB ET0SETB TRO当T0Tl以方式0计数时,假设系统所需计取脉冲的个数以x表示,计数初值以
36、a表示,则二者的关系为: a=213-x2方式1方式l为16位定时器计数器工作方式,方式1的内部结构如图36所示。方式l由TL0TLl的8位和TH0THl的8位组成。当TL0TLl的8位产生溢出进位时向TH0THl进位,TH0THl计数溢出时置溢出中断请求标志位TF0TFl为1,向CPU请求中断。本文为互联网收集,请勿用作商业用途个人收集整理,勿做商业用途图36方式l的内部结构图由图36可知,方式1的T0Tl计数脉冲控制电路与它们方式0的情况相似,仅仅是计数器的位数不同而已.T0Tl以方式1工作时,定时计数初值的计算方法如下:当T0Tl以方式1定时时,假设时钟频率以.表示,定时初值以.表示,定
37、时时间以t表示,那么三者关系为:12t= - (216a) fosc若给定定时时间的要求,定时初值a的大小为:12216tfosca=-12 比如fosc=12MHz,Tl的定时时间t=20ms,则定时初值a为:122162010-312106a=-=65536-20000=45536=B1E0H12 因此TLl的初值为0EOH,THl的初值为0B1H,对Tl的初始化的子程序为:INTTl:MOV THl,0B1HMOV TLl,0EOHSETB EASETB ETlSETB TRl当T0Tl以方式1计数时,假设系统所需计取脉冲的个数以戈表示,计数初值以x表示,则二者的关系为:a=216-x3
38、方式2方式2为自动恢复计数初值的8位定时器计数器工作方式。T0Tl工作于方式0或方式1时,若需要重复计数,就需要用户用指令重新填充初值;而方式2在计数器溢出时会自动地装入新的计数初值,开始新一轮的计数。由于方式0或方式1是通过指令装入计数初值的,而执行指令需要时问,因此,在方式2的定时时间比较准确。方式2的内部结构如图37所示。个人收集整理,勿做商业用途本文为互联网收集,请勿用作商业用途 图37方式2的内部结构图在方式2时,TL0TLl作为8位计数器,TH0THl为自动恢复初值的8位计数器。当TL0TLl计数发生溢出时,一方面置溢出中断请求标志TF0TFl为1,向CPU请求中断,同时又将T0T
39、Hl的内容送入TL0TLl,使T0Tl从初值开始重新加l计数.因此T0Tl工作于方式2时,定时精度高,但定时时间范围小。由图3。7可知,方式2的TO/T1计数控制与方式0和方式1完全相同,不同之处在于当CPU响应T0Tl的溢出中断后会自动将TH0THl的内容填充到TL0TLl。T0Tl以方式2工作时,定时计数初值的计算方法如下:当T0Tl以方式2定时时,假设时钟频率以fosc表示,定时初值以a表示,那么三者关系为:12t= - (28-a) fosc若给定定时时间的要求,定时初值a的大小为:1228-tfosca=-12 比如fosc=12MHz,Tl的定时时间t=200s,则定时初值a为:1
40、228-2010312106a=-=256200=5612 因此,TL0的初值为56,TH0的初值为56,对T0的初始化的子程序为:INTT0: MOV TH0,#56MOV TL0, #56SETB EASETB ET0SETB TR0当T0Tl以方式0计数时,假设系统所需计取脉冲的个数以菇表示,计数初值以。表示,则二者的关系为:a=28-x4方式3方式3为两个8位定时器肘数器工作方式,它只适用于定时器计数器T0,若将Tl设置为方式3,则Tl将停止计数。方式3内部逻辑结构如图38所示。 个人收集整理,勿做商业用途本文为互联网收集,请勿用作商业用途由图38可知,方式3是将T0拆分为两个8位定时
41、器计数器.其中8位计数器TL0,使用原来T0的控制位(CT、GATE、TR0、IN T0)形成一个8位的定时器计数器,它既可以定时(对时钟频率的l2分频信号进行计数),也可以实现计数;而8位计数器TH0,占用原来Tl的控制位(TRl、TFl),它只能对内部计数脉冲进行计数,其运行仅受TRl位的控制,而与外部引脚INTl的电平状态无关。定时器计数器T0工作于方式3时,定时器计数器Tl仍可设置为方式0、方式1、方式2。但由于TRl、TFl已被定时器TH0占用,此时定时器计数器仅由控制位CT设置其定时或计数方式,当计数器计满发生溢出时,只能将输出送往串行口。在这种情况下,Tl一般用做串行口波特率发生器,或不需要中断的场合。方式3的两个8位定时器计数器的定时或计数初值的计算方法与方式2完全相同,不再重复。333定时器计数器应用举例MCS51系列单片机的定时器计数器均是可编程的,在利用定时器计数器进行定时或计数之前,必须要通过软件对它们进行初始化。初始化包括的内容如下:根据实际需要确定工作方式,对方式寄存器TMOD初始化.即根据实际的需要选择工作方式,形成相应的方式控制字,在程序中将方式控制字填充给TMOD。根