一、TH1 TH0是怎么得的?
因为1个机器周期=6个状态周期=12个振荡周期,所以对于12mhz的晶振,振荡周期/时钟周期为1/12us,一个机器周期为1us,也就是1us产生一次计数。
理解参考了
https://blog.csdn.net/yueniaoshi/article/details/52530156 ;https://blog.csdn.net/henryheheng/article/details/80356711
中断方式1中有16位定时器,最大计数为2^16 = 65536。如果要以50ms为一个单位计时,那么就需要1100050=50000个机器周期。需要设置一个TH0,TL0来作为50ms溢出的阈值。ps.它们不是两个数字,而是一个数字的十位和个位。
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
如何理解?TH0为高八位,TL0为低八位。八位的二进制11111111转化为十进制是255。把TH0和TL0分别看作十位和个位的一个两位数,这个算法就相当于是一个256进制,逢256进1。
同时还有中断方式0,13位定时器,计算方法同理。
具体的值这个网站罗列了一些:http://www.sohu.com/a/202755409_464086
二、