不能用延时程序来定时,误差太大,即使修正之后也会残留千分之一的误差,算上其他语句占用的时间误差就更大了,所以必须使用定时器中断的形式。
以12MHz的晶振为例:
用方式1定时,初值设为3CAFH就可以产生50ms的定时中断,中断服务程序的第一二句必须是MOV TH0,#3CH和MOV TL0,#0B2H,之所以设为3CB2H而不设为3CAFH是因为中断入口的跳转语句和这两个赋值语句耗掉了3个机器周期,所以补偿3个周期以修正误差。
这是我做的:
http://hi.baidu.com/yiyu3344/blog/item/0366282beeac7ff6e7cd4052.html希望对你有帮助。
如果你使用的是定时器中断方式来计时的话,你的计时和显示就是分开的,所以用于显示的延时(12.5ms那个)对计时精度是没有影响的。