单片机定时计数中断时间计算方法

总结如下
1.定时器 方式0
由于定时器方式0为13位计数器,即最多能装载的数为2^13=8192个,
当TLO和TH0的初始值为0时,最多经过8192个机器周期该计数器就会
溢出一次,向CPU申请中断。
当用定时器的方式0时,设机器周期为Tcy,定时器产生一次中断的
时间为t,那么需要计数的个数N=t/Tcy,装入THX和TLX中的数分别为
THX=(8192-N)/32, TLX=(8192-N)%32
先计算机器周期Tcy,TX-1C 实验板上时钟频率为11.0592MHZ,那么
机器周期为12*(1/11059200)=1.0851us,若t=5ms,那么
N=5000/1.0851=4607,这是晶振在11.0592MHZ下定时5ms时初值的
计算方法。当晶振为12MHZ时,计算起来就比较方便了,用同样方法
计算N=5000.
这里用THX=(8192-N)/32;对32求模是因为定时器方式0为13位计数器,计数时哈哈使用了TL0的低八位,这5位中最多装载32个数,再加1便会进位,与16位计数器装载256个数有所不同,因此在这里对32 求模。求余同理。

2.定时器 方式2
定时器0 方式 2 特别适合用做较精确的脉冲信号发生器,因为其只有8位计数器,当定较长时间时同样会给编写程序带来麻烦,同时也可能影响到精度,当我们使用一般的较精确定时时,用方式0 或方式1就完全足够了若要做确的频率较高的信号发生器时可以选用方式2,但要注意,此时的晶振频率务必要选择精准,一定要是12的整数倍,因为这样计算机器周期时才不会产生误差。
由于定时器方式0为8位计数器,即最多能装载的数为2^8=256个,当TL0和TH0的初始值为为时,最多经过256个机器周期该计数器就会溢出,若使用12MHZ晶振,也只有256US的时间,若使用11.0592晶振,那么计算器周期时,晶振自身产生的误差也已经不少了再加上累积过程,误差便会更大。
总结如下:当用定时器方式0时,设机器周期为Tcy,定时器产生一次中断的时间为t,那么计数的个数N=t/Tcy,装入THX和TLX中的数分别为
THX=256-N TLX=256-N
先计算机器周期Tcy,TX-1C实验板上时时钟频率为11.0592MHZ,那么机器周期为
12*(1/11059200)=1.0851us,以计时1s为例,当计250个数时,需耗时1.0851*250=271.27us.再来计算定时1s计数数器需要溢出多少次,即1000000/271.125==3686,这是晶振在11。0592MHZ下定时1s时计数器溢出次数方法。当晶振为12MHZ时,计算起来就非常方便了,用同样方法可算得计数器溢出 次数为4000次。

相关文档
最新文档