1、假设定时的要求是5000个计时脉冲。那么我们希望T0的16位计数模式初值为X=65536-5000。
2、T0计数初值X的高8位,将X除以256,或X右移8位得到。给TH0。
3、T0计数初值X的低8位,将X取余256,或者X&0x00ff,或者左移8位右移8位得到。给TL0。
4、采用常量表达式交给编译器完成计算过程,程序可读性更好。方便阅读,改写,效果与实际定时值写法完全一致。
第一句就是将,(65536-5000)的高八位赋值给TH0
第二句就是将,(65536-5000)的低八位赋值给TL0
256就是2的8次方,一个数除以256相当于右移8位。MOD是求模的意思。
65536-5000的结果为16位,结果的高8位整数送到TH0(定时器高八位),结果的低8位送到TL0(定时器低八位),#(65536-5000)/256就是求结果高8位,#(65536-5000)MOD 256就是求结果低,8位。
因为定时器分高8位和低8位,所以TH0取的是65536-5000的转换成16进制的高8位,TL0取低8位!