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

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

点击数:7392 次   录入时间:03-04 11:50:11   整理:http://www.55dianzi.com   51单片机
  MOV    TL1,#03H
  CLR    TF1                  ;计数溢出标志位清0
  CPL    P1.0                 ;输出取反
  AJMP   LOOP              ;重复循环

工作方式1:

方式1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成。与工作方式0基本相同,区别仅在于工作方式1的计数器TL1和TH1组成16位计数器,从而比工作方式0有更宽的定时/计数范围。

当为计数工作方式时,计数值的范围是:

            1~65536(216

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

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

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

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

最大定时时间为:

         (216-0)×1/6×106×12=131072×106(s)=131072(ms)≈131(ms)

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

⑴ 计算计数初值

    TH1=FFH     TL1=83H

⑵ TMOD寄存器初始化

    TMOD=10H

⑶ 程序设计

主程序:

  MOV       TMOD,#10H       ;定时器1工作方式1
  MOV       TH1,#0FFH       ;设置计数初值
  MOV       TL1,#0A1H
  SETB      EA                ;开中断
  SETB      ET1               ;定时器1允许中断
LOOP:    
  SETB      TR1               ;定时开始
HERE: 
   SJMP     $                ;等待中断

中断服务程序:

MOV TH1,#0FFH          ;重新设置计数初值
MOV TL1,#0A1H
CPL P1.0                 ;输出取反
RETI                     ;中断返回

工作方式2
    8位自动装入时间常数方式。由TLl构成8位计数器,THl仅用来存放时间常数。启动T1前,TLl和THl装入相同的时间常数,当TL1计满后,除定时器回零标志TFl置位,具有向CPU请求中断的条件外,THl中的时间常数还会自动地装入TLl,并重新开始定时或计数。所以,工作方式2是一种自动装入时间常数的8位计数器方式。由于这种方式不需要指令重装时间常数,因而操作方便,在允许的条件下,应尽量使用这种工作方式。当然,这种方式的定时/计数范围要小于方式0和方式1。工作方式2的结构见下图.

    当计数溢出后,不是像前两种工作方式那样通过软件方法,而是由预置寄存器TH以硬件方法自动给计数器TL重新加载。变软件加载为硬件加载。
    初始化时,8位计数初值同时装入TL0和TH0中。当TL0计数溢出时,置位TF0,同时把保存在预置寄存器TH0中的计数初值自动加载TL0,然后TL0重新计数。如此重复不止。这不但省去了用户程序中的重装指令,而且也有利于提高定时精度。但这种工作方式下是8位计数结构,计数值有限,最大只能到255。
    这种自动重新加载工作方式非常适用于循环定时或循环计数应用,例如用于产生固定脉宽的脉冲,此外还可以作串行数据通信的波特率发送器使用。

例题1: 使用定时器0以工作方式2产生100ms定时,在P1.0输出周期为200ms的连续正方波脉冲。已知晶振频率fosc=6MHz。
⑴ 计算计数初值
    6MHz晶振下,一个机器周期为2ms,以TH0作重装载的预置寄存器,TL0作8位计数器,假设计数初值为X,则:

    (28-X)×2×10-6=100×10-6
求解得:
    X=206D=11001110B=0CEH
把0CEH分别装入TH0和TL0中:
    TH0=0CEH,TL0=0CEH
⑵ TMOD寄存器初始化
    定时器/计数器0为工式方式2,M1M0=10;为实现定时功能 C/T=0;为实现定时器/计数器0的运行 GATE=0;定时器/计数器1不用,有关位设定为0。
    综上情况TMOD寄存器的状态应为02H。

⑶ 程序设计(查询方式)

  MOV     IE,#00H            ;禁止中断
  MOV     TMOD,#02H          ;设置定时器0为方式2
  MOV     TH0,#0CEH          ;保存计数初值
  MOV     TL0,#0CEH          ;设置计数初值
  SETB    TR0                  ;启动定时
LOOP:  
  JBC     TF0,LOOP1           ;查询计数溢出
  AJMP    LOOP
LOOP1:
  CPL     P1.0                 ;输出方波
  AJMP    LOOP                 ;重复循环

    由于方式2具有自动重装载功能,因此计数初值只需设置一次,以后不再需要软件重置。

⑷ 程序设计(中断方式)
    主程序:

  MOV      TMOD,#02H                     ;定时器0工作方式2
  MOV      TH0,#0CEH                     ;保存计数初值
  MOV      TL0,#0CEH                     ;设置计数初值
  SETB     EA                              ;开中断

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


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

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