一,模式2下的Timer特点
1)Timer工作在模式2下是1个8位的定时器/计数器,当计数至FFH之后就溢出,TFx位就会被硬件置1。
2)自动重新装载:当Timer溢出时,TLx自动从THx中复制原来保存的计数初始值。这时只要把TFx位清0,就可以自动重复计数的过程。
二,模式的设置步骤:
(1)设置Timer的工作模式。向TMOD装载20H,以设置Timer1工作在模式2。
(2)往THx和TLx中载入相同的计数初始值。
(3)启动Timer。将TRx置1以启动Timer X。
(4)检测Timer溢出标志TFx。
(5)关闭Timer,将TRx清0。
(6)清溢出标志TFx,将溢出标志TF1清0。
三,模式2如何设置计数初始值:如果给定一个设计时间,
一)计算式为:t=Val(FF-TT+1)*1/fc(MHz)*1/12us.
二)如果给定一个设计时间,计算THx和TLx中的计数初始值:
1)将设计时间(250us),(以us微秒为单位,且小于256)除以12/fc(MHz)
2)用256减去步骤1)得到的数。则(256-250)/12/12=6,所以256-250=6。
3)用科学计算器把步骤(2)中得到的数转换成十六进制数形式TT。
6转换成十六进制数形式TT=06H;
4) 最后得计数初始值:THx=TLx=TT.=06H;
ORG 00H;
START:
MOV TMOD,#20H; 设置Timer1工作在模式2下
LOAD:
MOV TL1,#06H; 往TL1和TH1中载入计数的初始值06H(6十进制)
MOV TH1,#06H;
SETB TR1; 启动Timer1
CHECK:
JNB TF1,CHECK; 检测Timer1标志,当TF1=1,跳出执行下一行,否则返回CHECK
CLR TR1; TR1清0 关闭Timer1
CLR TF1; 将TF1清0
;````````; 这里是所要处理的程序(如CLR P1.7;)
;````````;
JMP START; 循环
END; 程序结束(总延时260us)
|