看来,你对定时器真是不理解呀。
1.关于定时器最长的定时时间,假如晶振频率是12MHz,机器周期是1us,最长定时的时间是65.536ms。所以,你想定时1秒是不可能的。通常是定时50ms,以中断方式,这样,每中断一次50ms,则中断20次就是1秒。
2.你这个程序就是定时50ms的,变成50000us。晶振频率是12M,初始值计算,X=65535-50000=15536=3CB0H,所以,高8位,TH0=0x3C;
低8位,TL0=0xB0;
工作方式1是16位的自动重装定时计数器,能装的最大数为65536(0-65535);那么初值为65536-50000=15536(0x3cb0),就是你说的50ms溢出一次;12M的晶振,一个时钟周期刚好1us,50000us=50ms;
如果你需要1秒的定时,可以在定时器计数器中断里设一个计数变量x,进一次中断x+1;然后在程序里检查x的值,当x加够20次,把x清零,计时时间就是1秒了。