标题: 关于51单片机的定时器 [打印本页]

作者: zydgyy    时间: 2010-3-11 20:55
标题: 关于51单片机的定时器

      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怎么不见效啊?!

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


作者: qufo    时间: 2010-3-16 08:54
 MS要重新启动计时器中断.
C中是
TR0=1;
不知道汇编如何描述.

作者: yanyunyin    时间: 2010-3-16 15:51
TR0=1;
就是  SETB       TR0

作者: watchman    时间: 2010-3-16 16:01

很明显,你的用法不对。

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






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1