單片機機器周期的計算
你的不明白其實就是對于定時器的初值問題,11.0592是始終的晶振,時鐘周期就是1/11.0592M 而定時器的周期就是12/11.0592 因為51單片機是12分頻的
。
還有很多......
如果你寫的是C的話建議這樣寫
TMOD=0X01// 定時器0方式1
TH0=(65535-50000)/256;//因為是16位計數(shù) 假設(shè)晶振為12MHZ 11.0592的是4600多吧,自己算算...
TL=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
主要的計算就是其中的50000 中斷一次所需要的時間就是50000乘以剛才所算的定時器的周期 (這個是50MS)
也就是你說的:就是比如定時器TF0置1的時間 中斷的時候TF0 要求CPU中斷而引起中斷
好了
12倍的時間周期就是機械周期,(剛才說過是12分頻的)
時鐘周期:
時鐘周期也稱為振蕩周期,定義為時鐘脈沖的倒數(shù)(可以這樣來理解,時鐘周期就是單片機外接晶振的倒數(shù),例如12M的晶振,它的時間周期就是1/12 us),是計算機中最基本的、最小的時間單位。
在一個時鐘周期內(nèi),CPU僅完成一個最基本的動作。對于某種單片機,若采用了1MHZ的時鐘頻率,則時鐘周期為1us;若采用4MHZ的時鐘頻率,則時鐘周期為250us。由于時鐘脈沖是計算機的基本工作脈沖,它控制著計算機的工作節(jié)奏(使計算機的每一步都統(tǒng)一到它的步調(diào)上來)。顯然,對同一種機型的計算機,時鐘頻率越高,計算機的工作速度就越快。
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個時鐘周期。
例如外接24M晶振的單片機,他的一個機器周期=12/24M 秒;
指令周期:
執(zhí)行一條指令所需要的時間,一般由若干個機器周期組成。指令不同,所需的機器周期也不同。
對于一些簡單的的單字節(jié)指令,在取指令周期中,指令取出到指令寄存器后,立即譯碼執(zhí)行,不再需要其它的機器周期。對于一些比較復(fù)雜的指令,例如轉(zhuǎn)移指令、乘法指令,則需要兩個或者兩個以上的機器周期。
通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。
總線周期:
由于存貯器和I/O端口是掛接在總線上的,CPU對存貯器和I/O接口的訪問,是通過總線實現(xiàn)的。通常把CPU通過總線對微處理器外部(存貯器或 I/O接口)進行一次訪問所需時間稱為一個總線周期。
總結(jié)一下,時鐘周期是最小單位,機器周期需要1個或多個時鐘周期,指令周期需要1個或多個機器周期;機器周期指的是完成一個基本操作的時間,這個基本操作有時可能包含總線讀寫,因而包含總線周期,但是有時可能與總線讀寫無關(guān),所以,并無明確的相互包含的關(guān)系。
指令周期:是CPU的關(guān)鍵指標(biāo),指取出并執(zhí)行一條指令的時間。一般以機器周期為單位,分單指令執(zhí)行周期、雙指令執(zhí)行周期等。現(xiàn)在的處理器的大部分指令(ARM、DSP)均采用單指令執(zhí)行周期。
機器周期:完成一個基本操作的時間單元,如取指周期、取數(shù)周期。
時鐘周期:CPU的晶振的工作頻率的倒數(shù)。
(轉(zhuǎn))
以51為例,晶振11.0592M,時鐘周期(晶振周期)就是(1/11.0592)μs,一個機器周期包含12個時鐘周期(6個狀態(tài)周期),一個機器周期就是 1μs。一個機器周期一般是一條指令花費的時間,也有些是2個機器周期的指令,DJNZ,是雙周期指令.本文引用地址:http://m.butianyuan.cn/article/201611/318660.htm
單片機定時器定時計算方法
對12MHz1個機器周期 1us 12/fosc = 1us
方式0 13位定時器最大時間間隔 = 2^13 =8.192ms
方式1 16位定時器最大時間間隔 = 2^16 =65.536ms
方式2 8位定時器最大時間間隔 = 2^8 =0.256ms =256 us
定時5ms,計算計時器初值 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: 最大時間 2^8Fosc/12 = 0.256ms
十進制數(shù)是怎么來的?
6MHz 一個機器周期 12/6 = 2us
定時1ms 計數(shù)初值x
(2^16-x)*2us = 1000us
x = 2^16 - 500 ,TH,TL 可置 -500
12MHz 一個機器周期 12/12 = 1us
12MHz 一個機器周期 12/12 = 1us
定時50ms 計數(shù)初值x
(2^16-x)*1us = 50000us
x = 2^16 - 50000 ,TH,TL 可置 -500
定時器 計內(nèi)部晶振頻率
計數(shù)器 計外部輸入CPU腳上的脈沖個數(shù) P3.4(T0) P3.5(T1) 負跳變加一
當(dāng)晶振為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
定時器:每個時鐘加1 時鐘可為系統(tǒng)時鐘或系統(tǒng)時鐘的1/12
CKCON
當(dāng)引腳上出現(xiàn)電平時啟動T0 當(dāng)不滿足時,停止T0,讀出以后清零
時鐘周期:單片機外接的晶振的振蕩周期就是時鐘周期,時鐘周期=振蕩周期。比方說,80C51單片機外接了一個11.0592M的晶體振蕩器,那我們就說這個單片機系統(tǒng)的時鐘周期是1/11.0592M,這里要注意11.0592M是頻率,周期是頻率的倒數(shù)。
機器周期:單片機執(zhí)行指令所消耗的最小時間單位。我們都知道51單片機采用的CISC(復(fù)雜指令指令集),所以有很多條指令,并且各條指令執(zhí)行的時間也可能不一樣(有一樣的哦),但是它們執(zhí)行的時間必須是機器周期的整數(shù)倍,這就是機器周期的意義所在。8051系列單片機又在這個基礎(chǔ)上進行細分,將一個機器周期劃分為6個狀態(tài)周期,也就是S1-S6,每個狀態(tài)周期又由兩個節(jié)拍組成,P1和P2,而P1=P2=時鐘周期。這也就是經(jīng)常說的8051系列單片機的的時鐘頻率是晶振頻率的12分頻,或者是1/12,就是這個意思?,F(xiàn)在(截至2012)新的單片機已經(jīng)能做到不分頻了,就是機器周期=時鐘周期。
指令周期:指令周期執(zhí)行某一條指令所消耗的時間,它等于機器周期的整數(shù)倍。傳統(tǒng)的80C51單片機的指令周期大多數(shù)是單周期指令,也就是指令周期=機器周期,少部分是雙周期指令?,F(xiàn)在(截至2012)新的單片機已經(jīng)能做到不分頻了,并且盡量單指令周期,就是指令周期=機器周期=時鐘周期。
評論