天天看點

時鐘周期/機器周期/指令周期/12M晶振和1us有啥關系

作者:自由翺翔9651

時鐘周期

時鐘周期也叫振蕩周期或晶振周期,即晶振的機關時間發出的脈沖數,一般有外部的振晶産生,比如12MHZ=12×10的6次方,即每秒發出12000000個脈沖信号,那麼發出一個脈沖的時間就是時鐘周期,也就是1/12微秒。通常也叫做系統時鐘周期。是計算機中最基本的、最小的時間機關。

在傳統的8051單片機中把一個時鐘周期定義為一個節拍(用P表示),二個節拍定義為一個狀态周期(用S表示)。

機器周期

單片機在執行指令的過程中,其實需要完成很多個操作,比如,取指令、存儲器讀、存儲器寫等,這每一項工作稱為一個基本操作。在計算機中,為了便于管理,常把一條指令的執行過程劃分為若幹個階段,每一階段完成一項工作。完成一個基本操作所需要的時間稱為機器周期。一般情況下,一個機器周期由若幹個S周期(狀态周期)組成。傳統8051系列單片機的一個機器周期由6個S周期(狀态周期)組成。節拍和狀态周期前面已經介紹過了。傳統8051單片機的機器周期由6個狀态周期組成,也就是說一個機器周期=6個狀态周期=12個時鐘周期。

在傳統的51單片機中,一般情況下,1個機器周期=12個時鐘周期。在一個單片機最小系統中,如果外接的是12MHZ的晶振,那麼機器周期=1微秒(前幾天問小編為什麼是1us的小夥伴到此處來領取答案)。

單片機工作時,是一條一條地從ROM中取指令,然後一步一步地執行。單片機通路一次存儲器的時間,稱之為一個機器周期,這是一個時間基準。

機器周期不僅對于指令執行有着重要的意義,而且機器周期也是單片機定時器和計數器的時間基準。例如一個單片機選擇了12MHZ晶振,那麼當定時器的數值加1時,實際經過的時間就是1us,這就是單片機的定時原理。

指令周期

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

時鐘周期/機器周期/指令周期/12M晶振和1us有啥關系

系統時鐘

系統時鐘:系統時鐘就是CPU指令運作的頻率,這個才是CPU真正的頻率。

一般來說,單片機隻有一個時鐘源.用了外部晶振,就不用内部RC,用了内部RC,就不用外部晶振。振蕩器振蕩,産生周期波.單片機在這樣的周期波的作用一下有規律的一拍一拍的工作,波的頻率越高,單片工作得就越快,波的頻率越低,單片機工作得就越慢。

單片機内部所有工作,都是基于由晶振産生的同一個觸發信号源,由這個信号來同步協調工作步驟,我們把這個信号稱為系統時鐘,系統時鐘一般由晶振産生,但在單片機内部系統時鐘不一定等于晶振頻率,有可能小于晶振頻率,也有可能大于晶振頻率,具體要看單片機的實際設計及其原理。比如傳統的51單片機,其實際的系統時鐘就隻有晶振頻率的1/12,;比如大家覺得比較進階的STM32單片機,内部具有時鐘倍頻電路,可以通過程式設定系統時鐘是實際晶振的多少倍,常見的STM32開發闆上實際的晶振都是8Mhz的,可以通過倍頻,實際的系統時鐘都是運作在72Mhz。

系統時鐘是整個單片機工作節奏的基準,它每振蕩一次,單片機就被觸發執行一次操作。

12T模式和1T模式

前面我們說的絕大部分都是傳統51單片機的例子,現在傳統51單片機已經可以收藏了,51單片機中小夥伴們最常見應該是手推車(STC)。STC51的單片機基本已經把51核心壓榨到了極緻,本節标題裡說的額12T和1T也就是STC提出來的。STC把絕大部分的彙編指令所需要的的時鐘周期壓縮到了1個時鐘周期,而傳統的51單片機是最快的指令都需要12個時鐘周期,是以STC官方就把他們的單片機叫做是1T的單片機。說到1T和12T,還有一個常用到的就是在用STC單片機的定時器時,和定時器相關的寄存器中專門有設定定時器是1T模式還是12T模式,如果是1T模式,而我們計算初值時又計算為了12T模式,那這樣出來的定時器會比實際的速度快12倍,在使用時需要注意。

時鐘周期/機器周期/指令周期/12M晶振和1us有啥關系

總結

時鐘周期/機器周期/指令周期/12M晶振和1us有啥關系

說了那麼多的周期,其這些周期和一個電子元件直接相關,那就是晶振。以上說的所有的時間單元,都和晶振頻率相關。是以在程式設計時一定記得注意自己闆子上的晶振頻率是多少。

最後一點說明,因為生産制造的原因,實際的晶振頻率和标稱的數值會有一定的差距,因為任何物品在制作時都會産生誤差。既然是誤差,那就隻要在允許的範圍内就能正常使用,不會對系統産生大的影響。也正是因為這個誤差,用單片機定時器制作的時鐘,你會發現時鐘走上幾天後就會出現時間的偏差。這正是目前市面上的絕大部分電子時鐘都會有走時不精準的根本原因,就算用了RTC時鐘晶片,那時鐘晶片的時間來源也是晶振産生,常見的RCT時鐘晶振的頻率是32.768Khz。‍

繼續閱讀