<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > PIC單片機(jī)定時(shí)器初值計(jì)算方法及幾種周期小結(jié)

          PIC單片機(jī)定時(shí)器初值計(jì)算方法及幾種周期小結(jié)

          作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
          PIC定時(shí)器也用是蠻多的,據(jù)說網(wǎng)上還有計(jì)算初值的強(qiáng)力軟件,不過我還是手動算下吧??偨Y(jié)了下————2013.8.27

          PIC單片機(jī)定時(shí)器初值計(jì)算方法

          本文引用地址:http://www.ex-cimer.com/article/201611/323858.htm

          PIC的指令周期是4個(gè)震蕩周期,在沒有使用分頻器的情況下,TMR0 會在每個(gè)指令周期信號(等于晶體振蕩器產(chǎn)生的主時(shí)鐘周期的 4 倍)到來時(shí)自動加 1。在配置了分頻器的情況下,TMR0 會在每次收到由分頻器將指令周期信號分頻一個(gè)固定倍數(shù)后產(chǎn)生的信號時(shí)自動加 1。如果 TMR0在累加計(jì)數(shù)的過程中,CPU 執(zhí)行一條往 TMR0 中寫入數(shù)據(jù)的指令,則累加計(jì)數(shù)器的加 1 操作將被推遲兩個(gè)指令周期,重新開始計(jì)數(shù)。這兩個(gè)指令周期的偏差在用戶編寫時(shí)間精度要求較高的程序時(shí)應(yīng)引起注意,可以通過在每次寫入 TMR0 時(shí)給一個(gè)調(diào)整值的方法來解決。

          假設(shè)的是時(shí)鐘頻率為 4MHz。因此,一個(gè)指令周期就是一個(gè)微秒(μs)的時(shí)間。

          ,也就是計(jì)數(shù)一次時(shí)間是1us。

          沒有分頻比定時(shí)器的初值計(jì)算公式:T0=256-Tc+2

          其中TC是想得到的次數(shù)。加2的原因是寫值的時(shí)候要消耗兩個(gè)指令周期。

          如果分頻器給了定時(shí)器,最好不要再讀寫TMR0了,不然會照成誤差。

          假設(shè)分頻器是16,晶振是4Mhz,一次由00到FF的時(shí)間是16*256=4096us。假設(shè)50ms的時(shí)間

          在中斷每次加上4096,

          主程序檢查是不是超過5000,超過了就減掉5000,這樣算是50ms就得到了。

          1:8

          再來張圖,就更加一目了然了,有木有?哈哈。


          EG:

          晶振8M 需定時(shí)25us 分頻比1:2

          初值(EE)=256 - 25/ (4/8*2) + 14/2 = 256- 25 + 7 = 238


          PS:
          簡述時(shí)鐘周期、機(jī)器周期、指令周期的概念及三者之間的關(guān)系
          時(shí)鐘周期

          時(shí)鐘周期也稱為振蕩周期,定義為時(shí)鐘脈沖的倒數(shù)(可以這樣來理解,時(shí)鐘周期就是單片機(jī)外接晶振的倒數(shù),例如12M的晶振,它的時(shí)間周期就是1/12 us),是計(jì)算機(jī)中最基本的、最小的時(shí)間單位。

          在一個(gè)時(shí)鐘周期內(nèi),CPU僅完成一個(gè)最基本的動作。對于某種單片機(jī),若采用了1MHZ的時(shí)鐘頻率,則時(shí)鐘周期為1us;若采用4MHZ的時(shí)鐘頻率,則時(shí)鐘周期為250us。由于時(shí)鐘脈沖是計(jì)算機(jī)的基本工作脈沖,它控制著計(jì)算機(jī)的工作節(jié)奏(使計(jì)算機(jī)的每一步都統(tǒng)一到它的步調(diào)上來)。顯然,對同一種機(jī)型的計(jì)算機(jī),時(shí)鐘頻率越高,計(jì)算機(jī)的工作速度就越快。但是,由于不同的計(jì)算機(jī)硬件電路和器件的不完全相同,所以其所需要的時(shí)鐘周頻率范圍也不一定相同。我們學(xué)習(xí)的8051單片機(jī)的時(shí)鐘范圍是1.2MHz-12MHz。

          在8051單片機(jī)中把一個(gè)時(shí)鐘周期定義為一個(gè)節(jié)拍(用P表示),二個(gè)節(jié)拍定義為一個(gè)狀態(tài)周期(用S表示)。

          機(jī)器周期

          在計(jì)算機(jī)中,為了便于管理,常把一條指令的執(zhí)行過程劃分為若干個(gè)階段,每一階段完成一項(xiàng)工作。例如,取指令、存儲器讀、存儲器寫等,這每一項(xiàng)工作稱為一個(gè)基本操作。完成一個(gè)基本操作所需要的時(shí)間稱為機(jī)器周期。一般情況下,一個(gè)機(jī)器周期由若干個(gè)S周期(狀態(tài)周期)組成。8051系列單片機(jī)的一個(gè)機(jī)器周期同6個(gè)S周期(狀態(tài)周期)組成。前面已說過一個(gè)時(shí)鐘周期定義為一個(gè)節(jié)拍(用P表示),二個(gè)節(jié)拍定義為一個(gè)狀態(tài)周期(用S表示),8051單片機(jī)的機(jī)器周期由6個(gè)狀態(tài)周期組成,也就是說一個(gè)機(jī)器周期=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期。

          指令周期

          指令周期是執(zhí)行一條指令所需要的時(shí)間,一般由若干個(gè)機(jī)器周期組成。指令不同,所需的機(jī)器周期數(shù)也不同。對于一些簡單的的單字節(jié)指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執(zhí)行,不再需要其它的機(jī)器周期。對于一些比較復(fù)雜的指令,例如轉(zhuǎn)移指令、乘法指令,則需要兩個(gè)或者兩個(gè)以上的機(jī)器周期。
          通常含一個(gè)機(jī)器周期的指令稱為單周期指令,包含兩個(gè)機(jī)器周期的指令稱為雙周期指令。



          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();