<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機機器周期的計算

單片機機器周期的計算

作者: 時(shí)間:2016-11-20 來(lái)源:網(wǎng)絡(luò ) 收藏
單片機的定時(shí)器的周期怎么算?就是比如定時(shí)器TF0置1的時(shí)間,我的晶振是11。0592MHz的 怎么算 還有就是時(shí)鐘周期,狀態(tài)周期,機器周期的概念和聯(lián)系及換算?
你的不明白其實(shí)就是對于定時(shí)器的初值問(wèn)題,11.0592是始終的晶振,時(shí)鐘周期就是1/11.0592M 而定時(shí)器的周期就是12/11.0592 因為51單片機是12分頻的
。
還有很多......
如果你寫(xiě)的是C的話(huà)建議這樣寫(xiě)
TMOD=0X01// 定時(shí)器0方式1
TH0=(65535-50000)/256;//因為是16位計數 假設晶振為12MHZ 11.0592的是4600多吧,自己算算...
TL=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
主要的計算就是其中的50000 中斷一次所需要的時(shí)間就是50000乘以剛才所算的定時(shí)器的周期 (這個(gè)是50MS) 
也就是你說(shuō)的:就是比如定時(shí)器TF0置1的時(shí)間 中斷的時(shí)候TF0 要求CPU中斷而引起中斷
好了
12倍的時(shí)間周期就是機械周期,(剛才說(shuō)過(guò)是12分頻的)
時(shí)鐘周期:
 時(shí)鐘周期也稱(chēng)為振蕩周期,定義為時(shí)鐘脈沖的倒數(可以這樣來(lái)理解,時(shí)鐘周期就是單片機外接晶振的倒數,例如12M的晶振,它的時(shí)間周期就是1/12 us),是計算機中最基本的、最小的時(shí)間單位。
 在一個(gè)時(shí)鐘周期內,CPU僅完成一個(gè)最基本的動(dòng)作。對于某種單片機,若采用了1MHZ的時(shí)鐘頻率,則時(shí)鐘周期為1us;若采用4MHZ的時(shí)鐘頻率,則時(shí)鐘周期為250us。由于時(shí)鐘脈沖是計算機的基本工作脈沖,它控制著(zhù)計算機的工作節奏(使計算機的每一步都統一到它的步調上來(lái))。顯然,對同一種機型的計算機,時(shí)鐘頻率越高,計算機的工作速度就越快。
 8051單片機把一個(gè)時(shí)鐘周期定義為一個(gè)節拍(用P表示),二個(gè)節拍定義為一個(gè)狀態(tài)周期(用S表示)。
機器周期:
 在計算機中,為了便于管理,常把一條指令的執行過(guò)程劃分為若干個(gè)階段,每一階段完成一項工作。例如,取指令、存儲器讀、存儲器寫(xiě)等,這每一項工作稱(chēng)為一個(gè)基本操作。完成一個(gè)基本操作所需要的時(shí)間稱(chēng)為機器周期。一般情況下,一個(gè)機器周期由若干個(gè)S周期(狀態(tài)周期)組成。
 8051系列單片機的一個(gè)機器周期同6個(gè) S周期(狀態(tài)周期)組成。前面已說(shuō)過(guò)一個(gè)時(shí)鐘周期定義為一個(gè)節拍(用P表示),二個(gè)節拍定義為一個(gè)狀態(tài)周期(用S表示),8051單片機的機器周期由6個(gè)狀態(tài)周期組成,也就是說(shuō)一個(gè)機器周期=6個(gè)狀態(tài)周期=12個(gè)時(shí)鐘周期。 
例如外接24M晶振的單片機,他的一個(gè)機器周期=12/24M 秒;
指令周期
 執行一條指令所需要的時(shí)間,一般由若干個(gè)機器周期組成。指令不同,所需的機器周期也不同。 
對于一些簡(jiǎn)單的的單字節指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執行,不再需要其它的機器周期。對于一些比較復雜的指令,例如轉移指令、乘法指令,則需要兩個(gè)或者兩個(gè)以上的機器周期。
 通常含一個(gè)機器周期的指令稱(chēng)為單周期指令,包含兩個(gè)機器周期的指令稱(chēng)為雙周期指令。
總線(xiàn)周期:
 由于存貯器和I/O端口是掛接在總線(xiàn)上的,CPU對存貯器和I/O接口的訪(fǎng)問(wèn),是通過(guò)總線(xiàn)實(shí)現的。通常把CPU通過(guò)總線(xiàn)對微處理器外部(存貯器或 I/O接口)進(jìn)行一次訪(fǎng)問(wèn)所需時(shí)間稱(chēng)為一個(gè)總線(xiàn)周期。
總結一下,時(shí)鐘周期是最小單位,機器周期需要1個(gè)或多個(gè)時(shí)鐘周期,指令周期需要1個(gè)或多個(gè)機器周期;機器周期指的是完成一個(gè)基本操作的時(shí)間,這個(gè)基本操作有時(shí)可能包含總線(xiàn)讀寫(xiě),因而包含總線(xiàn)周期,但是有時(shí)可能與總線(xiàn)讀寫(xiě)無(wú)關(guān),所以,并無(wú)明確的相互包含的關(guān)系。
指令周期:是CPU的關(guān)鍵指標,指取出并執行一條指令的時(shí)間。一般以機器周期為單位,分單指令執行周期、雙指令執行周期等?,F在的處理器的大部分指令(ARM、DSP)均采用單指令執行周期。
機器周期:完成一個(gè)基本操作的時(shí)間單元,如取指周期、取數周期。
時(shí)鐘周期:CPU的晶振的工作頻率的倒數。
(轉)
 以51為例,晶振11.0592M,時(shí)鐘周期(晶振周期)就是(1/11.0592)μs,一個(gè)機器周期包含12個(gè)時(shí)鐘周期(6個(gè)狀態(tài)周期),一個(gè)機器周期就是 1μs。一個(gè)機器周期一般是一條指令花費的時(shí)間,也有些是2個(gè)機器周期的指令,DJNZ,是雙周期指令. 

本文引用地址:http://dyxdggzs.com/article/201611/318660.htm

單片機定時(shí)器定時(shí)計算方法

對12MHz1個(gè)機器周期 1us 12/fosc = 1us

方式0 13位定時(shí)器最大時(shí)間間隔 = 2^13 =8.192ms
方式1 16位定時(shí)器最大時(shí)間間隔 = 2^16 =65.536ms
方式2 8位定時(shí)器最大時(shí)間間隔 = 2^8 =0.256ms =256 us

定時(shí)5ms,計算計時(shí)器初值 M =2^K-X*Fosc/12 12MHz
方式0: K=13,X=5ms,Fosc=12MHz 則 M = 2^13 -5*10^(-3)*12*10^6/12= 3192 = 0x0C78
THx = 0CH,TLx = 78H,
方式1: K=16,X=5ms,Fosc=12MHz 則 M = 2^16 -5*10^(-3)*12*10^6/12= 60536 = 0xEC78
THx = ECH,TLx = 78H,

50ms 12MHz THx = 3CH,TLx = B0H,
10msTHx = D8H,TLx = F0H,
方式2: 最大時(shí)間 2^8Fosc/12 = 0.256ms

十進(jìn)制數是怎么來(lái)的?
6MHz 一個(gè)機器周期 12/6 = 2us
定時(shí)1ms 計數初值x
(2^16-x)*2us = 1000us
x = 2^16 - 500 ,TH,TL 可置 -500

12MHz 一個(gè)機器周期 12/12 = 1us
12MHz 一個(gè)機器周期 12/12 = 1us
定時(shí)50ms 計數初值x
(2^16-x)*1us = 50000us
x = 2^16 - 50000 ,TH,TL 可置 -500

定時(shí)器 計內部晶振頻率
計數器 計外部輸入CPU腳上的脈沖個(gè)數 P3.4(T0) P3.5(T1) 負跳變加一
當晶振為6MHz時(shí),最高計數頻率500KHz

寄存器
1 TH TL
2 TCON
TR0 TR1 其他位是中斷控制位

TMOD
GATE C/T1 M1 M0 GATE C/T0 M1 M0


2009年2月26日

C8051F00X
定時(shí)器:每個(gè)時(shí)鐘加1 時(shí)鐘可為系統時(shí)鐘或系統時(shí)鐘的1/12
CKCON

當引腳上出現電平時(shí)啟動(dòng)T0 當不滿(mǎn)足時(shí),停止T0,讀出以后清零

51 單片機指令周期,機器周期,時(shí)鐘周期詳解
51單片機有指令周期,機器周期,時(shí)鐘周期的說(shuō)法,看似相近,但是又都不太一樣,很容易混淆。還是詳細分析一下。

時(shí)鐘周期:?jiǎn)纹瑱C外接的晶振的振蕩周期就是時(shí)鐘周期,時(shí)鐘周期=振蕩周期。比方說(shuō),80C51單片機外接了一個(gè)11.0592M的晶體振蕩器,那我們就說(shuō)這個(gè)單片機系統的時(shí)鐘周期是1/11.0592M,這里要注意11.0592M是頻率,周期是頻率的倒數。

機器周期:?jiǎn)纹瑱C執行指令所消耗的最小時(shí)間單位。我們都知道51單片機采用的CISC(復雜指令指令集),所以有很多條指令,并且各條指令執行的時(shí)間也可能不一樣(有一樣的哦),但是它們執行的時(shí)間必須是機器周期的整數倍,這就是機器周期的意義所在。8051系列單片機又在這個(gè)基礎上進(jìn)行細分,將一個(gè)機器周期劃分為6個(gè)狀態(tài)周期,也就是S1-S6,每個(gè)狀態(tài)周期又由兩個(gè)節拍組成,P1和P2,而P1=P2=時(shí)鐘周期。這也就是經(jīng)常說(shuō)的8051系列單片機的的時(shí)鐘頻率是晶振頻率的12分頻,或者是1/12,就是這個(gè)意思?,F在(截至2012)新的單片機已經(jīng)能做到不分頻了,就是機器周期=時(shí)鐘周期。

指令周期:指令周期執行某一條指令所消耗的時(shí)間,它等于機器周期的整數倍。傳統的80C51單片機的指令周期大多數是單周期指令,也就是指令周期=機器周期,少部分是雙周期指令?,F在(截至2012)新的單片機已經(jīng)能做到不分頻了,并且盡量單指令周期,就是指令周期=機器周期=時(shí)鐘周期。

來(lái)看這張8051單片機外部數據,這里ALE和$PSEN$的變化頻率已經(jīng)小于一個(gè)機器周期,如果使用C語(yǔ)言模擬這個(gè)信號是沒(méi)有辦法做到的一一對應的,所以只能盡量和上面的時(shí)序相同,周期延長(cháng)。



關(guān)鍵詞: 單片機機器周

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>