可以这样打比方:
如果你有一个可以装3L的桶,如果你提前向里面装1.2L,那么这个桶就只有1.8L的容量。
计数器也是这样,一个16位的计数器可以计到65535(再计一次就溢出,相当于65536一个周期),如果你事前放入60536,那么计数器再加5000次就会溢出。
设置的初值一般是反相计算的。比如你的计数器是16位的,每1uS计数1次,你想1mS溢出一次,那么其实是计数1000次,65536-1000=64536(0xHC18),向这个计数器赋予0xHC18就可以了。
每次溢出后计数器值为0x0000,所以每次溢出后都要再重新填充一次(自动重装载的除外)。
设置初值后,计数器将从此开始计数,知道数据溢出时,向主程序请求中断;
例如:TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
计数器将从(65536-50000)开始计数;
计满65536后溢出,定时了50ms,
如果不设初值,单片机默认从0开始;
决定你要定时的时间,因为计数器是减法计算,所以要定初值,