找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5470|回复: 3
收起左侧

关于51单片机的定时器

[复制链接]
ID:18088 发表于 2010-3-11 20:55 | 显示全部楼层 |阅读模式

      ORG       0000H
      LJMP  SYS
         
     ORG       000BH
   1----》  RETI

   

 

SYS:
    MOV        IE,#0FFH
    MOV        TMOD,#01H
    ;MOV       TL0,#01EH
    ;MOV       TH0,#02FH
    SETB       TR0
    JMP   $
    ;RETI

   

    END

 

以上代码是测试定时器1代码,我在1处打断点,当随机连续取两个断点的时间差是0.065536是,改变TL0,TH0的值,但是这时间差仍然不变,为什么计时器的计时值不改变?!

定时时间的计算公式为不是:
(216—计数初值)╳晶振周期╳12

为什么改变计数初值TH0,TL0怎么不见效啊?!

                         请哪位大侠解释一下啊?!

回复

使用道具 举报

ID:21895 发表于 2010-3-16 08:54 | 显示全部楼层
 MS要重新启动计时器中断.
C中是
TR0=1;
不知道汇编如何描述.
回复

使用道具 举报

ID:22275 发表于 2010-3-16 15:51 | 显示全部楼层
TR0=1;
就是  SETB       TR0
回复

使用道具 举报

ID:22301 发表于 2010-3-16 16:01 | 显示全部楼层

很明显,你的用法不对。

你想,当程序走到哪里会停下呢,当然是走到JMP   $,那就一直在等待了,进入中断后,你开始计时,那中断返回到哪里呢,当然还是JMP   $,这个期间,你根本没有给定时器重新赋值,所以它只能从0开始加,然后再进入中断,然后再返回JMP   $,无限循环了.....

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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