想精确定时就要用汇编
这是一个项目中的精确定时方式,按此思路保证能让你设定的时间准确
;-----------------------------------
;定时器中断0
;功能:定时采集脉冲
;要求:精确定时
;说明:
;晶振22.1184,时钟周期:1 000,000,000/22,118,400=45.21ns
;定时器选12分频:45.21*12=542.52ns
;中断周期:100us
;中断次数:100,000ns/542.52ns=184.32=184次
;定时器初值:65536-184=65352=FF48H,实际定时时间542.52ns*184=99,823.68ns
;对定时时间的影响因素:
;1、中断响应最小(1+6=7时钟周期)
;2、跳转指令LJMP(4时钟周期)
;3、入栈指令PUSH ACC(4时钟周期),PUSH PSW(4时钟周期)
;4、关总中断指令CLR EA(4时钟周期)
;5、定时器装载初值2条指令,(2*3=6时钟周期)
;共计:7+4+4+4+4+6=25
;耗时:25*45.21ns=1130.25ns=1.13025us
;1次中断耗时:99.82368us+1.13025us=100.95393us
;1秒钟中断次数:1S/100.953us=9905.5996=9906=26B2H,实际时间100.953us*9906=1000,040.418us,每秒误差约40.418us
|
受教了!