首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

关于定时器的启动位 TR,该如何解决

2012-04-06 
关于定时器的启动位 TR..今天上课的时候, 老师写了一串代码..ORG 0000HSJMP MAINORG 000BHSJMP INT0MAIN:M

关于定时器的启动位 TR
..今天上课的时候, 老师写了一串代码.. 
ORG 0000H
SJMP MAIN
ORG 000BH
SJMP INT0

MAIN:MOV TMOD,#01H
  MOV A, #FEH
  MOV P1,A
  MOV TH0, #23H
  MOV TL,#45H
  SETB TR0
  …………
  SJMP $
INT0:MOV THO,#23H
  MOV TL0,#45H
  RL A
  MOV P1 A
  RETI

代码大概就是这个样子
我的疑问是当 TF 置1后TR会不会自动清零..
如果不会清零
那么当中断返回后 定时器是什么时候开始下一次启动.. 是在TH 和TL完成赋值之后还是什么时候 .. 还是这段代码在关于定时器中断有错误


[解决办法]
定时器启动后,只要不停止,就一直不停的在计数

溢出后,定时器立刻清零,从零开始重新计数

TH和TL赋完值后定时器的计数器就变为赋的值继续计数

明白了吗
[解决办法]
//TF 置1后TR会不会自动清零..

由于是递增式的定时器,寄存器会不停的自增,假设是八位的当到0xff这个边界值后

再自增1变成0x100这个时候,1被送入TF而寄存器的值相当于“清零”了

这方面的东西,可以在单片机数据手册中的定时器结构中看到

//中断返回后 定时器是什么时候开始下一次启动.. 是在TH 和TL完成赋值之后还是什么时候
通常TF可以由中断返回指令自动清除,一般认为TF被清零后定时器从新启动。不过我没有手动去清过TF。所以不敢确切的说死。不过印象中有用过置定时器初值就启动定时器的片子

热点排行