您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 5第5章定时器计数器
第5章MCS-51定时器/计数器本章主要介绍51系列单片机定时器和计数器问题,本章将介绍以下具体内容:定时/计数器----定时/计数器的定时和计数功能、定时器/计数器的控制寄存器、定时器/计数器的工作方式、定时/计数器用作外部中断扩展、定时中断联合举例。基本概念(1)计数:计数是指对外部事件的个数进行计量。其实质就是对外部输入脉冲的个数进行计量。实现计数功能的器件称为计数器。(2)定时:8051单片机中的定时器和计数器是一个部件,只不过计数器记录的是外界发生的事件,而定时器则是由单片机内部提供一个非常稳定的计数源进行定时的。这个计数源是由单片机的晶振经过12分频后获得的一个脉冲源。所以定时器计数脉冲的时间间隔与晶振有关。§5.1MCS-51单片机的定时/计数器(3)定时的种类软件定时:利用执行一个循环程序进行时间延迟。其特点是定时时间精确,不需外加硬件电路,但占用CPU时间。因此软件定时的时间不宜过长。不可编程硬件定时:利用硬件电路实现定时。其特点是不占用CPU时间,通过改变电路元器件参数来调节定时,但使用不够灵活方便。对于时间较长的定时,常用硬件电路来实现。可编程定时:通过专用的定时器/计数器芯片实现。其特点是通过对系统时钟脉冲进行计数实现定时,定时时间可通过程序设定的方法改变,使用灵活方便。也可实现对外部脉冲的计数功能。MCS-51单片机内部有两个16位可编程的定时器/计数器,简称为T0和T1,均可作定时器用也可计数器,它们均是二进制加法计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已终止。适用于定时控制、延时、外部计数和检测等。计数器:对引脚T0(P3.4)和T1(P3.5.)输入的外部脉冲信号计数,当输入脉冲信号从1到0的负跳变时,计数器就自动加1。计数的最高频率一般为振荡频率的1/24。定时器:对系统晶振振荡脉冲的12分频输出进行计数。定时器/计数器的结构组成:16位加法计数器、工作方式寄存器TMOD和控制寄存器TCON。T0:TL0(低8位)和TH0(高8位)T1:TL1(低8位)和TH1(高8位)8051单片机内部的定时器/计数器的结构如下图所示。一、定时/计数器的定时和计数功能在TMOD中,各有一个控制位(C/T),分别用于控制定时/计数器T0和T1是工作在定时器方式还是计数器方式。1.定时功能----计数输入信号是内部时钟脉冲,每个机器周期使寄存器的值加1。所以,计数频率是振荡频率的1/12。2.计数功能----计数脉冲来自相应的外部输入引脚,T0为P3.4,T1为P3.5。定时/计数器的核心部件是二进制加1计数器(TH0、TL0或TH1、TL1)。二、定时器/计数器的控制寄存器与定时器/计数器有关的控制寄存器有:2.定时器控制寄存器TCON1.工作方式控制寄存器TMOD1.工作方式控制寄存器TMODT1控制T0控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7GATE—门控位C/T—计数/定时选择M1M0—工作方式选择TMOD用于控制定时器/计数器的工作模式及工作方式,其字节地址为89H,格式如下。其中,低4位用于决定T0的工作方式,高4位用于决定T1的工作方式。(1)、M1和M0工作方式控制位M0和M1为工作方式控制位,确定4种工作方式,如表4-1所示。(2)、C/T定时器/计数器方式选择位C/T=0,设置为定时方式,对机器周期进行计数;C/T=1,设定为计数方式,对外部信号进行计数,外部信号接至T0(P3.4)或T1(P3.5)引脚。(3)、GATE门控位GATE=0时,只要用软件使TR0(或TR1)置1就能启动定时器T0(或T1);GATE=1时,只有在INT0(或INT1)引脚为高电平的情况下,且由软件使TR0(或TR1)置1时,才能启动定时器T0(或T1)工作。2.定时器/计数器的控制寄存器TCON设定好了定时器/计数器的工作方式后,它还不能进入工作状态,必须通过设置控制寄存器TCON中的某些位来启动它工。要使定时器/计数器停止运行,也必须通过设置TCON中的某些位来实现。当定时器/计数器计满溢出,或有外部中断请求时,TCON能标明溢出和中断情况。下面介绍控制寄存器TCON每位的含义:TF0/TF1:定时器溢出中断申请标志位(由硬件自动置位)。=0:定时器未溢出;=1:定时器溢出(由全“1”变成全“0”)时由硬件自动置位,申请中断,中断被CPU响应后由硬件自动清零。TR0/TR1:定时器运行启停控制位(可由用户通过软件设置)。=0:定时器停止运行;=1:定时器启动运行。D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0中断请求标志触发方式选择启动定时/计数器0低电平1下降沿0停止1启动IE0/IE1:外部中断申请标志位(由硬件自动置位,中断响应后转向中断服务程序时,由硬件自动清0)。=0:没有外部中断申请;=1:有外部中断申请。IT0/IT1:外部中断请求的触发方式控制位(可由用户通过软件设置)。=0:在INT0/INT1端申请中断的信号低电平有效;=1:在INT0/INT1端申请中断的信号负跳变有效。计数脉冲输入三、定时器/计数器的工作方式定时器/计数器共有四种工作方式1.方式0—13位方式TF0T0TR0GATEINT01≥1&C/T=1振荡器1/12C/T=0TL0TH08位低5位13位计数器定时器计数器工作方式0(M1M0=00,13位定时器/计数器)由TH0的全部8位和TL0的低5位(TL0的高3位未用)构成13位加1计数器,当TL0低5位计数满时直接向TH0进位,并当全部13位计数满溢出时,溢出标志位TF0置“1”。2.方式1—16位方式振荡器1/12TL0TH0TF01≥1&T0TR0GATEINT0C/T=0C/T=18位8位16位计数器工作方式1(M1M0=01,16位定时器/计数器)由TH0和TL0构成16位加1计数器,其他特性与工作方式0相同。3.方式2—8位自动装入时间常数方式TF0振荡器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TL0TH0工作方式2(M1M0=10,自动重装计数初值的8位定时器/计数器)16位定时器/计数器被拆成两个8位寄存器TH0和TL0,CPU在对它们初始化时必须装入相同的定时器/计数器初值。以TL0作计数器,而TH0作为预置寄存器。当计数满溢出时,TF0置“1”,同时TH0将计数初值以硬件方法自动装入TL0。这种工作方式很适合于那些重复计数的应用场合(如串行数据通信的波特率发生器)。振荡器÷121/12f1/12fTL0(8位)TF0中断T0引脚TR0+GATE门INT0引脚控制TH0(8位)TF1中断1/12fTR14.方式3—2个8位方式当定时器T0工作在方式3时,定时器T1只能工作在方式0~2,并且工作在不需要中断的场合。仅T0可以工作在方式3—此时T0分成2个独立的计数器—TL0和TH0,前者用原来T0的控制信号(TR0、TF0),后者用原来T1的控制信号(TR1、TF1)。TL0:8位定时器/计数器,使用T0原有控制资源TR0和TF0,其功能和操作与方式0或方式1完全相同。TH0:只能作为8位定时器,借用T1的控制位TR1和TF1,只能对片内机器周期脉冲计数。在方式3模式下,定时器/计数器0可以构成两个定时器或者一个定时器和一个计数器。工作方式3(M1M0=11,2个8位定时器/计数器,仅适用于T0)当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。综上所述,定时器/计数器是一种可编程部件,所以在定时器/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时/计数器。将控制字写入定时/计数器的过程叫定时器/计数器初始化。在初始化过程中,要将工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋定时/计数初值。由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始化的步骤一般如下:1、确定工作方式(即对TMOD赋值);2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);3、根据需要开放定时器/计数器的中断(直接对IE位赋值);4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。四、定时器/计数器的初始化确定时时/计数器初值的具体方法。因为在不同工作方式下计数器位数不同,因而最大计数值也不同。现假设最大计数值为M,那么各方式下的最大值M值如下:方式0:M=213=8192方式1:M=216=65536方式2:M=28=256方式3:定时器0分成两个8位计数器,所以两个M均为256。因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值可以这样计算:方法:用最大计数量减去需要的计数次数。即:TC=MC其中:TC——计数器需要预置的初值;M——计数器的模值(最大计数值);方式0时,M=213;方式1时,M=216;方式2,3时,M=28;C——计数器计满回0所需的计数值,即设计任务要求的计数值。例如:流水线上一个包装是12盒,要求每到12盒就产生一个动作,用单片机的工作方式0来控制,则应当预置的初值为:TC=MC=21312=8180定时时间的计算公式为:T=(MTC)×T0(或TC=MT/T0)其中:T——定时器的定时时间,即设计任务要求的定时时间;T0——计数器计数脉冲的周期,即单片机系统主频周期的12倍;M——计数器的模值;TC——定时器需要预置的初值。若设初值TC=0,则定时器定时时间为最大。若设单片机系统主频为12MHz,则各种工作方式定时器的最大定时时间为:工作方式0:Tmax=213×1s=8.192ms工作方式1:Tmax=216×1s=65.536ms工作方式2和3:Tmax=28×1s=0.256ms五、定时器/计数器对输入信号的要求当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:T=1/(12×106)Hz×12=1μs由于定时的精度取决于输入脉冲的周期,因此当需要高分辨率的定时时,应尽量选用频率较高的晶振(MCS-51最高为12MHz)。当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。所以检测一个由1至0的跳变需要两个机器周期,故外部事件的最高计数频率为振荡频率的1/24。例如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。由于确认一次下跳变要花两个机器周期的时间,因此外部输入的计数脉冲的最高频率为振荡器频率的1/24。例1、选择T1方式0用于定时,在P1.1输出周期为1ms方波,晶振fosc=6MHz。解:根据题意,只要使P1.1每隔500us取反一次即可得到1ms的方波,因而T1的定时时间为500us,因定时时间不长,取方式0即可。则M1M0=0;因是定时器方式,
本文标题:5第5章定时器计数器
链接地址:https://www.777doc.com/doc-4396506 .html