定时器工作原理:从TH和TL里的值开始向上计数直到溢出触发中断,在晶振12M,12T单片机的情况下,时钟周期为1MHz,执行一次加计数用1us,这样,从0记到两个寄存器的最大值65535就要用去65.536ms,这就是51单片机最大计数范围。此时,为了计出10ms的时间,那么就要更改TH和TL的值,使定时器不从0开始计,这个值,就是65536-10000=55536,即从55536开始向上计数到溢出刚好用去10ms。另外由于单片机寄存器是8位的,所以要把TH和TL组合起来用,TH放高8位,TL放低8位,于是有了TH0=(65536-10000)/256; TL0=(65536-10000)%256;明白?
(以上基于定时器工作方式1)
这是我之前回答的答案,道理都是一样的,TMOD是设置定时器计数模式,TH0=TL0=0;意思就是每次定时器产生溢出中断之后都从0开始继续向上计数。