單片機定時器中斷時間誤差的解決方案
5 SUBB A, #LOW(1000+13) ;216的低8位減去( t0+ t1)的低8位送累加器A
6 SUBB A, TLi ;216的低8位減去( t0+ t1+ t2)的低8位送TLi
7 MOV TLi, A
8 MOV R0, #OOH ;R0清零
9 MOV R0, #HIGH(216) ;216 的高8位送R0
10 MOV A, R0
11 SUBB A, #HIGH(1000+13) ;216的高8位減去( t0+ t1)的高8位送A
12 SUBB A, THi ;216的高8位減去( t0+ t1 +t2)的高8位送A
13 MOV THi, A
14 SETB TRi ;重新啟動定時器
……
在上式和上段程序中,由于fosc=12MHZ,中斷間隔時間為1ms,因此t0的機器周期數(shù)為1000。由于第1條指令到第14條指令的指令周期的機器周期數(shù)之和為13,因此,t1為13個機器周期。CPU雖在執(zhí)行第一條指令CLR TRi后停止定時器計數(shù),但在TLi、THi中分別保存了t2的低位數(shù)據(jù)和高位數(shù)據(jù)。
4 結(jié)束語
由于本文介紹的誤差補償方法能對定時器溢出中斷與CPU響應(yīng)中斷的非固定性時間誤差進行有效補償,因此,該方法對于提高高頻控制系統(tǒng)實時控制精度和擴大單片機應(yīng)用范圍都有較高的實用價值。
塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理
評論