新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于PIC單片機的定時器精準計時的計算

        關于PIC單片機的定時器精準計時的計算

        作者: 時間:2011-02-24 來源:網絡 收藏
        在此用了16C711的TMR0做定時中斷,希望實現精準計時,在程序中,TMR0用了晶振的32分頻,初值#0FCH,因此POPBEAR兄弟計算出每個定時中斷的計時時間為(256-X)*32*4/32768=0.015625秒。注意,問題就在這里!實際上這個時間是TMR0的初值被置入后兩個指令周期后(見PIC定時器/計數器資料)到下一次中斷發生時的時間。如果要用到定時器的精準定時,必須理解這一概念!

        如采用32768Hz的晶振,每個指令周期為122us,在中斷處理程序中,到TMR0的初值被置入,共有7條指令,加上TMR0的初值被置入后兩個指令周期,如果中斷處理程序不直接放在0004H地址而采用GOTO指令的兩個周期,一共為11個指令周期。也就是說,每個定時中斷發生的間隔為0.015625秒+11*122us。程序中64次中斷為1秒,那么1秒誤差為64*11*122us=85.9375ms,1分鐘的誤差為5.156s。


        那么怎樣得到精準計時呢?這就要在對定時器的初值賦值上和中斷處理程序中做文章。




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 个旧市| 米易县| 松潘县| 海宁市| 德兴市| 津南区| 湘潭县| 卢氏县| 旺苍县| 通辽市| 武平县| 永州市| 沐川县| 定边县| 岫岩| 南涧| 延边| 城口县| 从江县| 湘乡市| 福州市| 伊春市| 正定县| 荥经县| 晋宁县| 永嘉县| 浦东新区| 屯留县| 桃源县| 扎赉特旗| 维西| 虎林市| 黔江区| 囊谦县| 五河县| 衡阳县| 商南县| 永善县| 海晏县| 伊宁县| 太保市|