微控制器的時鐘,系統時鐘

2022-02-28 19:04:36 字數 2836 閱讀 2110

我們先來理解幾個比較重要的概念:時間週期、指令週期、機器週期,以及系統時鐘的工作原理。

時鐘週期:

時鐘週期也叫振盪週期或晶振週期,即晶振的單位時間發出的脈衝數,一般有外部的振晶產生,比如12mhz=12×10的6次方,即每秒發出12000000個脈衝訊號,那麼發出乙個脈衝的時間就是時鐘週期,也就是1/12微秒。通常也叫做系統時鐘週期。是計算機中最基本的、最小的時間單位。

在8051微控制器中把乙個時鐘週期定義為乙個節拍(用p表示),二個節拍定義為乙個狀態週期(用s表示)。

機器週期:

在計算機中,為了便於管理,常把一條指令的執行過程劃分為若干個階段,每一階段完成一項工作。例如,取指令、儲存器讀、儲存器寫等,這每一項工作稱為乙個基本操作。完成乙個基本操作所需要的時間稱為機器週期。一般情況下,乙個機器週期由若干個s週期(狀態週期)組成。8051系列微控制器的乙個機器週期同6個s週期(狀態週期)組成。前面已說過乙個時鐘週期定義為乙個節拍(用p表示),二個節拍定義為乙個狀態週期(用s表示),8051微控制器的機器週期由6個狀態週期組成,也就是說乙個機器週期=6個狀態週期=12個時鐘週期。

在標準的51微控制器中,一般情況下,乙個機器週期等於12個時鐘週期,也就是機器週期=12*時鐘週期,(上面講到的原因)如果是12mhz,那麼機器週期=1微秒。微控制器工作時,是一條一條地從rom中取指令,然後一步一步地執行。微控制器訪問一次儲存器的時間,稱之為乙個機器週期,這是乙個時間基準。

據 小編了解機器週期不僅對於指令執行有著重要的意義,而且機器週期也是微控制器定時器和計數器的時間基準。例如乙個微控制器選擇了12mhz晶振,那麼當定時器的數值加1時,實際經過的時間就是1us,這就是微控制器的定時原理。

但是在8051f310中,cip-51微控制器核心採用流水線結構,與標準的8051結構相比指令執行速度有很大的提高。在乙個標準的8051中,除mul和div以外所有指令都需要12或24個系統時鐘週期,最大系統時鐘頻率為12-24mhz.而對於cip-51核心,70%的指令的執行時間為1或2個系統時鐘週期,只有4條指令的執行時間大於4個系統時鐘週期。所以在計算定時器的值時要注意這裡的變化。

指令週期:

指令週期是執行一條指令所需要的時間,一般由若干個機器週期組成。指令不同,所需的機器週期數也不同。對於一些簡單的的單位元組指令,在取指令週期中,指令取出到指令暫存器後,立即解碼執行,不再需要其它的機器週期。對於一些比較複雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器週期。

系統時鐘:

系統時鐘:系統時鐘就是cpu指令執行的頻率,這個才是cpu真正的頻率。

微控制器內部所有工作,都是基於由晶振產生的同乙個觸發訊號源,由這個訊號來同步協調工作步驟,我們把這個訊號稱為系統時鐘,系統時鐘一般由晶振產生,但在微控制器內部系統時鐘不一定等於晶振頻率,有可能小於晶振頻率,也有可能大於晶振頻率,具體是多少由微控制器內部結構決定,正常情況和晶振頻率會存在乙個整數倍關係。系統時種是整個微控制器工作節奏的基準,它每振盪一次,微控制器就被觸發執行一次操作。

一般來說,微控制器只有乙個時鐘源。用了外部晶振,就不用內部rc,用了內部rc,就不用外部晶振。振盪器振盪,產生週期波。微控制器在這樣的週期波的作用一下有規律的一拍一拍的工作,波的頻率越高,單片工作得就越快,波的頻率越低,微控制器工作得就越慢。

有了以上的概念以後,就可以正確的理解定時器的工作原理了,在8051f310微控制器中,有3個定時器,如果定時器1工作在模式1下,如工作模式1下,是16位的計時器,最大數值是65535,當再加1時(=65536),就會發生溢位,產生中斷,所以如果我們要它計1000個數,那麼定時初值就是65536-1000,結果就是64536,這個值送給th、tl,因為是16進製制的,所以高位是64536/256取商,低位是64536%6取餘。

再者,就是每一計數的時間是多久?一般我們取12m晶振時,乙個週期剛好是1us,計數1000個就是1ms,這是因為標準的51微控制器是12時鐘週期的(stc有6時鐘和1時鐘方式)。那麼,如果我們晶振是12m,就比較好算,如果是其它的,就用12去除好了。比如是6m的,那麼就是12/6=2,每個計數是2us,那麼你要定時1ms就只要計數500個即可以。

定時器的初值跟定時器的工作方式,跟晶振頻率都有關係。乙個機器週期tcy=晶振頻率x12,計數次數n=定時時間t/機器週期tcy,那麼初值就x=65536-n,得出的數化成十六進製制就行了。這裡是用定時器o工作方式1做例子,如果是其它工作方式,就不能是65535了。工作方式0是8192,方式2,3是256.這裡有乙個公式:

th=(65536-time/(12/ft))/256

其中,time就是要延時的100ms(要取100000us),ft是晶振頻率。這個式子又可以簡化成

th=(65536-time*ft/12)/256

tl=(65536-time*ft/12)%6

在一本書上還看到了這樣計算定時初值的:

th0=-(50235/256);//重灌100ms定時初值

tl0=-(50235%6);///這裡使用的6m晶體,

這裡是6m晶體,延時100ms,那麼按上面講的原理,6m是每個計數為2us,100ms定時就是計數50000個。

那麼,定時器初值要65536-50000=15536,轉成16進是3cb0.這就是要送給th(=3c)和tl(=b0)的值。

程式中寫th0=-(50235/256);其實它是這樣的th0=0x100-(50235/256);在51中,取負數,其結果就是它的值取反+1,也可以用0x100(十進位制的256)去減,結果是多少呢?結果就是3c。

微控制器 51微控制器時鐘 利用中斷

include include delay delay.h define timeport p0 sbit bit select p2 0 sbit seg select p2 1 sbit key1 p2 2 sbit key2 p2 3 code unsigned char timedata 1...

PIC微控制器之時鐘設定

什麼時鐘?首先我們先講講什麼是時鐘。時鐘就是微控制器的心臟。每跳動一下。整個微控制器的各個電路就同步的動作一下。就好像我們做廣播體操的時候 廣播上喊的節拍1234 2234 3234。然後我們全部的同學就按照這個節奏進行乙個個動作。節拍越快我們動作越快。節拍越慢我們動作的越慢。內部時鐘和外部時鐘?p...

微控制器之時鐘工作原理

時鐘電路就是乙個振盪器,給微控制器提供乙個節拍,微控制器執行各種操作必須在這個節拍的控制下才能進行。因此微控制器沒有時鐘電路是不會正常工作的。時鐘電路本身是不會控制什麼東西,而是你通過程式讓微控制器根據時鐘來做相應的工作。在mcs 51微控制器片內有乙個高增益的反相放大器,反相放大器的輸入端為xta...