找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2276|回复: 0
收起左侧

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

[复制链接]
ID:59980 发表于 2014-9-22 23:21 | 显示全部楼层 |阅读模式
一,模式0

  模式0和模式1基本相同,不同的是模式1下的Timer寄存器是16位的。而模式0下的Timer寄存器是13位的。
   在载入计数初始值时,向THx载入高8位,向TLx的低5位上载入低5位。

二,模式0的计数初值的计算方法如下:
   (1)将设计时间,(以us微秒为单位,且小于8192)除以12/fc(MHz)
   (2)用8192减去步骤(1)得到的数。
   (3)用科学计算器把步骤(2)中得到的数转换成13位二进制数,高位如果是空的用0补上,依次填入THx的高8位和TLx的低5位中,TLx的高3位用0代替。
    (4)最后得计数初始值。

三,Timer工作在模式0下产生一个500us的延时,晶振12MHz,计数初值的计算:
     01)500us/1us=500;
     02)8192-500=7692;
     03)7692=1111 0000 01100B;(以B结尾代表是二进制数) ;
     04)THx=1111 0000B,TLx=0000,1100B。转换成十六进制数:THx=0F0H,TLx=0CH.所以Timer寄存器计数初值为F00CH。


    程序:

ORG 00H;
START:
      MOV TMOD,#00H;设置Timer1工作在模式0下
      MOV R1,#200;   R1为重复定时计数器
LOAD:
      MOV TL1,#0CH; 往TL1和TH1中载入计数的初始值F00CH(7692十进制)低5位0CH.
      MOV TH1,#0F0H;高8位0F0H,
      SETB TR1;     使TR1置1,启动Timer1。
CHECK:
      JNB TF1,CHECK;检测Timer1溢出标志位值,当TF1=1,跳出执行下一行,否则返回CHECK;
      CLR TR1;      TR1清0  关闭Timer1
      CLR TF1;      将TF1清0
      DJNZ R1,LOAD; 如果R1≠0,跳回LOAD重新装载计数初始值
      ;~~~~~~~~~~~; 这里是所要处理的程序(如CLR P1.7;)
      JMP START;   循环
      END;         程序结束(总延时100ms)


评分

参与人数 1威望 +50 黑币 +50 收起 理由
admin + 50 + 50 共享资料的积分奖励,

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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