返回首页
当前位置: 主页 > 定时器/计数器 >

mcs51单片机计数器/定时器工作方式2 计数初值计算与编程举例

时间:2009-03-20 18:48来源:未知 作者:牛牛 点击:
8 位自动装入时间常数方式。由 TLl 构成 8 位计数器, THl 仅用来存放时间常数。启动 T1 前, TLl 和 THl 装入相同的时间常数,当 TL1 计满后,除定时器回零标志 TFl 置位,具有向 CPU 请求中断的条件外, THl 中的时间常数还会自动地装入 TLl ,并重新开始

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

单片机

  单片机

当计数溢出后,不是像前两种工作方式那样通过软件方法,而是由预置寄存器TH以硬件方法自动给计数器TL重新加载。变软件加载为硬件加载。

内容来自单片机之家www.dpj100.com

 

单片机

    初始化时,8位计数初值同时装入TL0TH0中。当TL0计数溢出时,置位TF0,同时把保存在预置寄 单片机

  单片机

存器TH0中的计数初值自动加载TL0,然后TL0重新计数。如此重复不止。这不但省去了用户程序中的 单片机

  单片机

重装指令,而且也有利于提高定时精度。但这种工作方式下是8位计数结构,计数值有限,最大只能 内容来自单片机之家www.dpj100.com

  内容来自单片机之家www.dpj100.com

255 内容来自单片机之家www.dpj100.com

  单片机

    这种自动重新加载工作方式非常适用于循环定时或循环计数应用,例如用于产生固定脉宽的脉冲,

内容来自单片机之家www.dpj100.com

 

单片机

此外还可以作串行数据通信的波特率发送器使用。

单片机

 

单片机

例题1 使用定时器0以工作方式2产生100ms定时,在P1.0输出周期为200ms的连续正方波脉冲。已知

单片机

  内容来自单片机之家www.dpj100.com

晶振频率fosc6MHz 内容来自单片机之家www.dpj100.com

  内容来自单片机之家www.dpj100.com

计算计数初值

单片机

 

单片机

    6MHz晶振下,一个机器周期为2ms,以TH0作重装载的预置寄存器,TL08位计数器,假设计数初

单片机

  单片机

值为X,则: 单片机

    28-X×2×10-6100×10-6

单片机

 

内容来自单片机之家www.dpj100.com

求解得:

单片机

 

单片机

    X206D11001110B0CEH 单片机

 

单片机

0CEH分别装入TH0TL0中: 内容来自单片机之家www.dpj100.com

  单片机

    TH00CEHTL00CEH

单片机

 

单片机

TMOD寄存器初始化

单片机

  内容来自单片机之家www.dpj100.com

    定时器/计数器0为工式方式2M1M010;为实现定时功能 C/T0;为实现定时器/计数器0的运行

内容来自单片机之家www.dpj100.com

 

单片机

 GATE0;定时器/计数器1不用,有关位设定为0

单片机

  单片机

    综上情况TMOD寄存器的状态应为02H

单片机

 

单片机

程序设计(查询方式)

单片机

  单片机

MOV     IE,#00H       ;禁止中断

单片机

 

单片机

MOV     TMOD,#02H     ;设置定时器0为方式2

单片机

 

单片机

MOV     TH0,#0CEH     ;保存计数初值

单片机

 

内容来自单片机之家www.dpj100.com

MOV     TL0,#0CEH     ;设置计数初值 单片机

 

单片机

SETB     TR0            ;启动定时 单片机

 

单片机

LOOP JBC        TF0LOOP1           ;查询计数溢出

单片机

  单片机

AJMP    LOOP 单片机

  单片机

LOOP1 CPL        P1.0                ;输出方波 单片机

  单片机

AJMP     LOOP           ;重复循环

单片机

 

内容来自单片机之家www.dpj100.com

    由于方式2具有自动重装载功能,因此计数初值只需设置一次,以后不再需要软件重置。 内容来自单片机之家www.dpj100.com

 

单片机

程序设计(中断方式) 单片机

  单片机

    主程序: 单片机

MOV TMOD,#02H      ;定时器0工作方式2 单片机

 

单片机

MOV     TH0,#0CEH     ;保存计数初值 单片机

 

单片机

MOV     TL0,#0CEH     ;设置计数初值

内容来自单片机之家www.dpj100.com

  单片机

SETB     EA                 ;开中断 内容来自单片机之家www.dpj100.com

 

内容来自单片机之家www.dpj100.com

SETB     ET0            ;定时器0允许中断 单片机

 

单片机

LOOP SETB     TR0             ;开始定时 单片机

  单片机

HERE SJMP                      ;等待中断 单片机

  单片机

CLP        TF0                  ;计数溢出标志位清0 单片机

 

单片机

AJMP    LOOP

内容来自单片机之家www.dpj100.com

  单片机

    中断服务中断: 内容来自单片机之家www.dpj100.com

CPL         P1.0                              ;输出方波

单片机

  内容来自单片机之家www.dpj100.com

RETI                 ;中断返回 单片机

  内容来自单片机之家www.dpj100.com

 

内容来自单片机之家www.dpj100.com

例题2 用定时器1以工作方式2实现计数,每计100次进行累加器加1操作。

单片机

 

单片机

计算计数初值 内容来自单片机之家www.dpj100.com

        28-100156D09CH   

内容来自单片机之家www.dpj100.com

 

内容来自单片机之家www.dpj100.com

        TH109CHTL109CH

单片机

 

内容来自单片机之家www.dpj100.com

TMOD寄存器初始化

单片机

 

单片机

        M1M010C/T1GATE0    因此

内容来自单片机之家www.dpj100.com

 

单片机

        TMOD60H 单片机

 

单片机

程序设计 内容来自单片机之家www.dpj100.com

MOV    IE, 00H     ;禁止中断 内容来自单片机之家www.dpj100.com

  单片机

MOV    TMOD, 60H   ;设置计数器1为方式2

单片机

 

单片机

MOV    TH1, 9CH    ;保存计数初值 单片机

  内容来自单片机之家www.dpj100.com

MOV     TL1, 9CH      ;设置计数初值

单片机

 

单片机

SETB    TR1          ;启动计数

单片机

  单片机

DEL  JBC        TF1, LOOP     ;查询计数溢出

内容来自单片机之家www.dpj100.com

  单片机

AJMP    DEL

单片机

  内容来自单片机之家www.dpj100.com

LOOP INC         A            ;累加器加1

单片机

  单片机

AJMP    DEL          ;循环返回  单片机

  单片机

顶一下
(15)
65.2%
踩一下
(8)
34.8%
------分隔线----------------------------
推荐内容