找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3255|回复: 0
打印 上一主题 下一主题
收起左侧

定时器程序设计方法--模式2

[复制链接]
跳转到指定楼层
楼主
ID:59980 发表于 2014-9-22 23:23 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
一,模式2下的Timer特点

1)Timer工作在模式2下是1个8位的定时器/计数器,当计数至FFH之后就溢出,TFx位就会被硬件置1。

2)自动重新装载:当Timer溢出时,TLx自动从THx中复制原来保存的计数初始值。这时只要把TFx位清0,就可以自动重复计数的过程。


二,模式的设置步骤:
    (1)设置Timer的工作模式。向TMOD装载20H,以设置Timer1工作在模式2。
    (2)往THx和TLx中载入相同的计数初始值。
    (3)启动Timer。将TRx置1以启动Timer X。
    (4)检测Timer溢出标志TFx。
    (5)关闭Timer,将TRx清0。
    (6)清溢出标志TFx,将溢出标志TF1清0。

三,模式2如何设置计数初始值:如果给定一个设计时间,

     一)计算式为:t=Val(FF-TT+1)*1/fc(MHz)*1/12us.
     二)如果给定一个设计时间,计算THx和TLx中的计数初始值:

       1)将设计时间(250us),(以us微秒为单位,且小于256)除以12/fc(MHz)
       2)用256减去步骤1)得到的数。则(256-250)/12/12=6,所以256-250=6。
       3)用科学计算器把步骤(2)中得到的数转换成十六进制数形式TT。

         6转换成十六进制数形式TT=06H;

       4) 最后得计数初始值:THx=TLx=TT.=06H;


ORG 00H;
START:
      MOV TMOD,#20H; 设置Timer1工作在模式2下
LOAD:  
      MOV TL1,#06H;  往TL1和TH1中载入计数的初始值06H(6十进制)
      MOV TH1,#06H;
      SETB TR1;        启动Timer1
CHECK:
      JNB TF1,CHECK;   检测Timer1标志,当TF1=1,跳出执行下一行,否则返回CHECK
      CLR TR1;          TR1清0  关闭Timer1
      CLR TF1;         将TF1清0
;````````;  这里是所要处理的程序(如CLR P1.7;)
;````````;
      JMP START;        循环
      END;              程序结束(总延时260us)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表