新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 單片機定時器中斷時間誤差的分析及補償

單片機定時器中斷時間誤差的分析及補償

作者: 時間:2012-03-22 來源:網(wǎng)絡(luò) 收藏

3.3 實例

要求每1ms產(chǎn)生一次溢出時的響應(yīng)延遲的。若振蕩器振蕩頻率fosc=12MHZ,工作在計數(shù)方式,工作模式為1,則響應(yīng)時的新初值X1為:
X1=216-t3× fosc/12=216-(t0+ t1)- t2=216-(1000+ 13)- t2

程序為:
……
0 CLR EA ;關(guān)CPU中斷
1 CLR TRi ;停止定時器計數(shù)
2 MOV R0, #OOH ;R0清零
3 MOV R0, #LOW(216) ;定時器最大計數(shù)值的低8位送R0
4 MOV A, R0
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)用范圍都有較高的實用價值。

參考文獻
[1]曹巧媛,原理及應(yīng)用,電子工業(yè)出版社,1997、5
[2]汪吉鵬等,微機原理及接口,高等教育出版社,2001、7


上一頁 1 2 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉