mcs51单片机计数器/定时器工作方式2 计数初值计算与编程举例- 克隆人的 ...

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

2010-06-04 18:33:21 阅读14 评论0 字号:

  

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

mcs51单片机计数器/定时器工作方式2 计数初值计算与编程举例 - 克隆人 - 与天奋斗其乐无穷,与地奋斗其乐无穷

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

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

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

重装指令,而且也有利于提高定时精度。但这种工作方式下是8位计数结构,计数值有限,{zd0}只能

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

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

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

    定时器/计数器0为工式方式2,=10;为实现定时功能 C/T=0;为实现定时器/计数器0的运行

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

LOOP:,;查询计数溢出

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

MOV TMOD,#;定时器0工作方式2

MOV     TL0,#;设置计数初值

SETB     EA                 ;开中断

;定时器0允许中断

LOOP:;开始定时

HERE:$                 ;等待中断

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

CPL         P1.0                              ;输出方波

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

=156D=则

=10,C/T=1,GATE=因此

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

MOV    TH1, #;保存计数初值

MOV     TL1, #;设置计数初值

;启动计数

DEL:;查询计数溢出

LOOP:;累加器加1




引文来源  
<#--{zx1}日志--> <#--推荐日志--> <#--引用记录--> <#--相关日志--> <#--推荐日志--> <#--推荐阅读--> <#--相关文章--> <#--历史上的今天--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构-->
郑重声明:资讯 【mcs51单片机计数器/定时器工作方式2 计数初值计算与编程举例- 克隆人的 ...】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——