找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1589|回復(fù): 0
收起左側(cè)

我為網(wǎng)友解答 ”51單片機(jī)T0計(jì)數(shù)溢出中斷對(duì)計(jì)時(shí)精度影響“問(wèn)題.

[復(fù)制鏈接]
ID:858964 發(fā)表于 2020-12-22 16:51 | 顯示全部樓層 |閱讀模式
本帖最后由 Kxuan163 于 2020-12-22 17:00 編輯

【問(wèn)題】:
51單片機(jī)T0計(jì)數(shù)溢出中斷子程序如下:
T0_INT:
     ...
     MOV   TL0,  #1FH   
     MOV   TH0,  #FCH   
     ...
     RETI
問(wèn):一次計(jì)數(shù)溢出中斷后, 計(jì)數(shù)溢出中斷子程序重裝計(jì)數(shù)初值會(huì)影響計(jì)時(shí)精度嗎?
.
【解答】:
會(huì)影響計(jì)數(shù)精度。影響計(jì)數(shù)精度有如下兩個(gè)因數(shù):
1.執(zhí)行重裝TH0、TL0初值兩條指令需耗用2個(gè)機(jī)器周期;
2.等待中斷響應(yīng)須3~6個(gè)機(jī)器周期,
若還有其它中斷源同時(shí)申請(qǐng)中斷或T0中斷未設(shè)置為最高優(yōu)先級(jí),須等待更多個(gè)機(jī)器周期;
.
解決辦法:
為了提高計(jì)時(shí)精度,中斷處理子程序可采取修正重裝時(shí)間常數(shù)的措施,
以下是T0工作于方式1的修正重裝時(shí)間常數(shù)中斷處理子示例程序:
T0_INT:
        CLR  EA
        CLR  TR0
        MOV  A,#1FH  ;; 原定初裝值低8位
        ADD  A,TL0   ;; A←(原定初裝值低8位+TL0實(shí)時(shí)值)
        MOV  TL0,A   ;; 重裝修正后的初裝值低8位
        MOV  A,#FCH  ;; 原定初裝值高8位
        ADDC A,TH0   ;; A←(進(jìn)位標(biāo)志+原定初裝值高8位+TH0實(shí)時(shí)值)
        MOV  TH0,A   ;; 重裝修正后的初裝值高8位
        SETB TR0
       RETI
;; 若等待中斷響應(yīng)是時(shí)間長(zhǎng),重新賦值時(shí)TH0已自動(dòng)計(jì)數(shù)至溢出、進(jìn)位標(biāo)志為1, 所以用帶進(jìn)位加法ADDC指令來(lái)修正重裝值高8位。  





評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表