PIC單片機定時器初值計算方法及幾種周期小結
PIC單片機定時器初值計算方法
本文引用地址:http://m.butianyuan.cn/article/201611/323858.htmPIC的指令周期是4個震蕩周期,在沒有使用分頻器的情況下,TMR0 會在每個指令周期信號(等于晶體振蕩器產生的主時鐘周期的 4 倍)到來時自動加 1。在配置了分頻器的情況下,TMR0 會在每次收到由分頻器將指令周期信號分頻一個固定倍數后產生的信號時自動加 1。如果 TMR0在累加計數的過程中,CPU 執(zhí)行一條往 TMR0 中寫入數據的指令,則累加計數器的加 1 操作將被推遲兩個指令周期,重新開始計數。這兩個指令周期的偏差在用戶編寫時間精度要求較高的程序時應引起注意,可以通過在每次寫入 TMR0 時給一個調整值的方法來解決。
假設的是時鐘頻率為 4MHz。因此,一個指令周期就是一個微秒(μs)的時間。
,也就是計數一次時間是1us。
沒有分頻比定時器的初值計算公式:T0=256-Tc+2
其中TC是想得到的次數。加2的原因是寫值的時候要消耗兩個指令周期。
如果分頻器給了定時器,最好不要再讀寫TMR0了,不然會照成誤差。
假設分頻器是16,晶振是4Mhz,一次由00到FF的時間是16*256=4096us。假設50ms的時間
在中斷每次加上4096,
主程序檢查是不是超過5000,超過了就減掉5000,這樣算是50ms就得到了。
1:8
再來張圖,就更加一目了然了,有木有?哈哈。
EG:
晶振8M 需定時25us 分頻比1:2
初值(EE)=256 - 25/ (4/8*2) + 14/2 = 256- 25 + 7 = 238
PS:
簡述時鐘周期、機器周期、指令周期的概念及三者之間的關系
時鐘周期
時鐘周期也稱為振蕩周期,定義為時鐘脈沖的倒數(可以這樣來理解,時鐘周期就是單片機外接晶振的倒數,例如12M的晶振,它的時間周期就是1/12 us),是計算機中最基本的、最小的時間單位。
在一個時鐘周期內,CPU僅完成一個最基本的動作。對于某種單片機,若采用了1MHZ的時鐘頻率,則時鐘周期為1us;若采用4MHZ的時鐘頻率,則時鐘周期為250us。由于時鐘脈沖是計算機的基本工作脈沖,它控制著計算機的工作節(jié)奏(使計算機的每一步都統(tǒng)一到它的步調上來)。顯然,對同一種機型的計算機,時鐘頻率越高,計算機的工作速度就越快。但是,由于不同的計算機硬件電路和器件的不完全相同,所以其所需要的時鐘周頻率范圍也不一定相同。我們學習的8051單片機的時鐘范圍是1.2MHz-12MHz。
在8051單片機中把一個時鐘周期定義為一個節(jié)拍(用P表示),二個節(jié)拍定義為一個狀態(tài)周期(用S表示)。
機器周期
在計算機中,為了便于管理,常把一條指令的執(zhí)行過程劃分為若干個階段,每一階段完成一項工作。例如,取指令、存儲器讀、存儲器寫等,這每一項工作稱為一個基本操作。完成一個基本操作所需要的時間稱為機器周期。一般情況下,一個機器周期由若干個S周期(狀態(tài)周期)組成。8051系列單片機的一個機器周期同6個S周期(狀態(tài)周期)組成。前面已說過一個時鐘周期定義為一個節(jié)拍(用P表示),二個節(jié)拍定義為一個狀態(tài)周期(用S表示),8051單片機的機器周期由6個狀態(tài)周期組成,也就是說一個機器周期=6個狀態(tài)周期=12個時鐘周期。
指令周期
指令周期是執(zhí)行一條指令所需要的時間,一般由若干個機器周期組成。指令不同,所需的機器周期數也不同。對于一些簡單的的單字節(jié)指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執(zhí)行,不再需要其它的機器周期。對于一些比較復雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器周期。
通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。
評論