您当前的位置:五五电子网电子知识单片机-工控设备51单片机第十四课:定时器/计数器的基本结构及工作原理 正文
第十四课:定时器/计数器的基本结构及工作原理

第十四课:定时器/计数器的基本结构及工作原理

点击数:7392 次   录入时间:03-04 11:50:11   整理:http://www.55dianzi.com   51单片机

定时器/计数器的初始化:

    由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始货的步骤一般如下:

1、确定工作方式(即对TMOD赋值);
2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1);
3、根据需要开放定时器/计数器的中断(直接对IE位赋值);
4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。

下面介绍一下确定时时/计数器初值的具体方法。
因为在不同工作方式下计数器位数不同,因而最大计数值也不同。

现假设最大计数值为M,那么各方式下的最大值M值如下:
方式0:M=213=8 192
方式1:M=216=65 536
方式2:M=28=256
方式3:定时器0分成两个8位计数器,所以两个M均为256。

因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算:
X=M-计数值

下面举例说明初值的确定方法。
    例1、选择T1方式0用于定时,在P1.1输出周期为1ms方波,晶振fosc=6MHz。
    解:根据题意,只要使P1.1每隔500us取反一次即可得到1ms的方波,因而T1的定时时间为500us,因定时时间不长,取方式0即可。则M1 M0=0;因是定时器方式,所以C/T=0;在此用软件启动T1,所以GATE=0。T0不用,方式字可任意设置,只要不使其进入方式3即可,一般取0,故TMOD=00H。系统复位后TMOD为0,可不对TMOD重新清0。

下面计算500us定时T1初始值:
      机器周期T=12/fosc=12/(6×106)Hz=2μs

设初值为X,则:
(1013-X)×2×10-6s=500×10-6s
X=7942D=1111100000110B=1F06H

因为在作13位计数器用时,TL1的高3位未用,应填写0,TH1占用高8位,所以X的实际填写应为:

X=111100000000110B=F806H

结果:TH1=F8H,TL1=06H

源程序如下: 

ORG    2000H    
MOV    TL1,#06H     ;给TL1置初值
MOV    TH1,#0F8H  ;给TH1置初值
SETB    TR1               ;启动T1
LP1:JBC    TF1,LP2      ;查询计数溢出否?
AJMP   LP1
LP2:MOV   TL1,#06H     ;重新设置计数初值
MOV   TH1,#0F8H
CPL    P1.1          ;输出取反
AJMP   LP1          ;重复循环

定时器/计数器的四种工作方式:

    定T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面以T1为例,分述各种工作方式的特点和用法。

工作方式0: 13位方式由TL1的低5位和TH1的8位构成13位计数器(TL1的高3位无效)。工作方式0的结构见下图:

    为定时/计数选择:C/T=0,T1为定时器,定时信号为振荡周期12分频后的脉冲;C/T=l,T1为计数器,计数信号来自引脚T1的外部信号。

    定时器T1能否启动工作,还受到了R1、GATE和引脚信号INT1的控制。由图中的逻辑电路可知,当GATE=0时,只要TR1=1就可打开控制门,使定时器工作;当GATE=1时,只有TR1=1且INT1=1,才可打开控制门。GATE,TR1,C/T的状态选择由定时器的控制寄存器TMOD,TCON中相应位状态确定,INT1则是外部引脚上的信号。

    在一般的应用中,通常使GATE=0,从而由TRl的状态控制Tl的开闭:TRl=1,打开T1;TRl=0,关闭T1。在特殊的应用场合,例如利用定时器测量接于INT1引脚上的外部脉冲高电平的宽度时,可使GATE=1,TRl=1。当外部脉冲出现上升沿,亦即INT1由0变1电平时,启动T1定时,测量开始;一旦外部脉冲出现下降沿,亦即INT1由l变O时就关闭了T1。

    定时器启动后,定时或计数脉冲加到TLl的低5位,从预先设置的初值(时间常数)开始不断增1。TL1计满后,向THl进位。当TL1和THl都计满之后,置位T1的定时器回零标志TFl,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。如需进一步定时/计数,需用指令重置时间常数。

方式013位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成。当TL0的低5

计数溢出时,向TH0进位,而全部13位计数溢出时,则向计数溢出标志位TF0进位。

在方式0下,当为计数工作方式时,计数值的范围是:  1~8192(213

当为定时工作方式时,定时时间的计算公式为:

          (213-计数初值)×晶振周期×12   或  (213-计数初值)×机器周期

其时间单位与晶振周期或机器周期相同(ms)。

例题1:当某 单片机 系统的外接晶振频率为6MHz,该系统的最小定时时间为:

          [213-(213-1)]×[1/(6×106)]×12=2×106=2(ms)

最大定时时间为:
       (213-0)×[1/(6×106)]×12=16384×106=16384(ms)

或:最小定时单位×1013=16384(ms)

例题2: 设某 单片机 系统的外接晶振频率为6MHz,使用定时器1以方式0产生周期为500ms的等宽正方波连续脉冲,并由P1.0输出。

以查询方式完成。

⑴ 计算计数初值

    欲产生500ms的等宽正方波脉冲,只需在P1.0端以250ms为周期交替输出高低电平即可实现,为此定时时间应为250ms。使用6MHz晶振,根据上例的计算,可知一个机器周期为2ms。方式0为13位计数结构。设待求的计数初值为X,则:

       (213-X)×2×10-6=250×10-6

求解得:

      X=213-(250÷2)=8067。

    二进制数表示为1111110000011。十六进制表示,高8位为FCH,放入TH1,即TH1=FCH;低5位为03H。放入TL1,即TL1=03H。

⑵ TMOD寄存器初始化

为把定时器/计数器1设定为方式0,则M1M0=00;为实现定时功能,应使C/T=0;为实现定时器/计数器1的运行控制,则GATE=0。定时器/计数器0不用,有关位设定为0。因此TMOD寄存器应初始化为00H。

⑶ 由定时器控制寄存器TCON中的TR1位控制定时的启动和停止    TR1=1启动,TR1=0停止。

⑷ 程序设计:

  MOV    TMOD,#00H       ;设置T1为工作方式0
  MOV    TH1,#OFCH       ;设置计数初值
  MOV    TL1,#03H
  MOV    IE,#00H         ;禁止中断
LOOP:
  SETB   TR1               ;启动定时
  JBC    TF1,LOOP1        ;查询计数溢出
  AJMP   LOOP
LOOP1:
  MOV    TH1,#FCH        ;重新设置计数初值

上一页  [1] [2] [3] [4]  下一页


本文关键字:工作原理  计数器  定时器  51单片机单片机-工控设备 - 51单片机

《第十四课:定时器/计数器的基本结构及工作原理》相关文章>>>