[轉]計算指令週期

通訊牽涉到時間的概念,因此軟體的設計者有幾個基本概念要清楚:
1.    CRYSTAL震盪頻率。
2.    一個指令週期要跑幾個CLOCK。
3.    系統裡面的指令是屬於幾個指令週期的指令。
l         頻率的倒數等於週期,如果知道了CRYSTAL震盪頻率,便知道一個震盪的週期(1/頻率)。
震盪一次,就是一個電位的HIGH AND LOW, 我們稱之為一個
CLOCK。
l         指令週期,一個指令週期需要幾個CLOCK,一個指令要花幾個幾個指令週期。
l         有些指令要花一個指令週期,有些指令要花兩個指令週期,有些甚至要花上三個指令週期。不同的系統,不同的MCU有不同的作法,所以要將DATA SHEET看熟,INSTRUCTION SET弄熟。
舉一個例子:
如果你選用一顆4MHZ(4 MEGA 赫茲)的震盪器,意味著一秒震盪4*1000*1000 次。那一個CLOCK花多久時間呢? 1/4000000 秒。
義隆的指令週期(INSTRUCTION PERIOD)可以在專案開始的時候,選擇要花幾個CLOCK。如果你選一個指令週期要跑4 CLOCK。
那一個指令週期的時間為:
4 *  1/4000000 = 1/1000000 秒(1 micro second)
例如:單晶片執行一個 NOP(NOP是屬於一個指令週期的指令)
依照上面所說,運算NOP這一個指令會花費:
4 *  1/4000000 = 1/1000000 秒。(1 micro second)
知道了指令週期之後,就可以做一個DELAY FUNCTION,下面的FUNCTION,可以讓程式延遲10 micro second的時間,不做任何事情,如果你會使用LOOP迴圈,那就可以做出任何時間的延遲函式。
DELAY_10US:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
END_DELAY_10US:
RET
未經允許不得轉載:GoMCU » [轉]計算指令週期