日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當(dāng)前位置:首頁 >> 技術(shù)中心 >> 單片機(jī)入門 >> PIC單片機(jī)的定時(shí)器精準(zhǔn)計(jì)時(shí)的計(jì)算

PIC單片機(jī)的定時(shí)器精準(zhǔn)計(jì)時(shí)的計(jì)算

關(guān)鍵字:PIC 單片機(jī) 定時(shí)器 計(jì)時(shí) 作者:admin 來源:不詳 發(fā)布時(shí)間:2018-05-18  瀏覽:6

關(guān)于PIC單片機(jī)的定時(shí)器精準(zhǔn)計(jì)時(shí)的計(jì)算

在此用了16C711單片機(jī)的TMR0做定時(shí)中斷,希望實(shí)現(xiàn)精準(zhǔn)計(jì)時(shí),在程序中,TMR0用了晶振的32分頻,初值#0FCH,因此POPBEAR兄弟計(jì)算出每個(gè)定時(shí)中斷的計(jì)時(shí)時(shí)間為(256-X)*32*4/32768=0.015625秒。注意,問題就在這里!實(shí)際上這個(gè)時(shí)間是TMR0的初值被置入后兩個(gè)指令周期后(見PIC單片機(jī)定時(shí)器/計(jì)數(shù)器資料)到下一次中斷發(fā)生時(shí)的時(shí)間。如果要用到定時(shí)器的精準(zhǔn)定時(shí),必須理解這一概念!

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

那么怎樣得到精準(zhǔn)計(jì)時(shí)呢?這就要在對(duì)定時(shí)器的初值賦值上和中斷處理程序中做文章。

關(guān)于如何產(chǎn)生一個(gè)大致比較精準(zhǔn)的時(shí)間中斷

使用TMR0的時(shí)候,如果僅TMR0一個(gè)中斷,顯然,使用 TMR0=TMR0+OFFSET的方式就能夠產(chǎn)生一個(gè)比較精準(zhǔn)的時(shí)間中斷。特別是不用考慮從中斷到TMR0的賦值中間間隔了多少時(shí)間的延時(shí)。

但是使用TMR1時(shí),就產(chǎn)生了問題,因?yàn)門MR1是16位的,所以TMR1L=TMR1L+OFFSET_L時(shí),就得考慮TMR1H得進(jìn)位問題。

使用C內(nèi)欠套匯編如下(如用賦值而不是增量方式,C中就得中斷到賦值得時(shí)間了),且TMR1_Revalue_H得值不會(huì)為0xFF。

[cpp] view plaincopyprint? #asm

movf _TMR1_Revalue_L & 0x7F,W

addwf _TMR1L,F

btfss _STATUS,0

movf _TMR1_Revalue_H & 0x7F,W

btfsc _STATUS,0

incf _TMR1_Revalue_H & 0x7F,W

addwf _TMR1H

#endasm

1.jpg

方法兩種

1)利用CCP模塊在Compare模式下特殊事件觸發(fā)功能實(shí)現(xiàn)精確的TMR1定時(shí)中斷。

2)普通模式下在重裝定時(shí)初值前TMR1暫停計(jì)數(shù),設(shè)定完畢后再開啟。注意補(bǔ)償中間置初值的延時(shí)時(shí)間。

擴(kuò)展閱讀:PIC的配置位

編輯:admin  最后修改時(shí)間:2018-05-18

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

墨玉县| 宜黄县| 天等县| 金昌市| 类乌齐县| 清水河县| 扶风县| 琼结县| 东山县| 庐江县| 巴马| 信宜市| 平度市| 江西省| 红桥区| 榕江县| 天峻县| 定远县| 南充市| 无极县| 中方县| 锦屏县| 新晃| 三门县| 安溪县| 梁平县| 镇原县| 紫金县| 云林县| 榆中县| 巴彦淖尔市| 嘉黎县| 德江县| 万宁市| 衡山县| 万年县| 富川| 马尔康县| 双柏县| 连云港市| 嘉善县|