关于定时器的启动位 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。所以不敢确切的说死。不过印象中有用过置定时器初值就启动定时器的片子