A. 「51單片機時鍾周期」、「機器周期」和「指令周期」如何定義的
時鍾周期:
時鍾周期也稱為振盪周期,定義為時鍾脈沖的倒數(可以這樣來理解,時鍾周期就是單片機外接晶振的倒數,例如12M的晶振,它的時間周期就是1/12 us),是計算機中最基本的、最小的時間單位。 在一個時鍾周期內,CPU僅完成一個最基本的動作。對於某種單片機,若採用了1MHZ的時鍾頻率,則時鍾周期為1us;若採用4MHZ的時鍾頻率,則時鍾 周期為250us。由於時鍾脈沖是計算機的基本工作脈沖,它控制著計算機的工作節奏(使計算機的每一步都統一到它的步調上來)。顯然,對同一種機型的計算 機,時鍾頻率越高,計算機的工作速度就越快。 8051單片機把一個時鍾周期定義為一個節拍(用P表示),二個節拍定義為一個狀態周期(用S表示)。
機器周期:
在計算機中,為了便於管理,常把一條指令的執行過程劃分為若干個階段,每一階段完成一項工作。例如,取指令、存儲器讀、存儲器寫等,這每一項工作稱為一個基本操作。完成一個基本操作所需要的時間稱為機器周期。一般情況下,一個機器周期由若干個S周期(狀態周期)組成。 8051系列單片機的一個機器周期同6個 S周期(狀態周期)組成。前面已說過一個時鍾周期定義為一個節拍(用P表示),二個節拍定義為一個狀態周期(用S表示),8051單片機的機器周期由6個 狀態周期組成,也就是說一個機器周期=6個狀態周期=12個時鍾周期。 (例如外接24M晶振的單片機,他的一個機器周期=12/24M 秒)
指令周期:
執行一條指令所需要的時間,一般由若干個機器周期組成。指令不同,所需的機器周期也不同。對於一些簡單的的單位元組指令,在取指令周期中,指令取出到指令寄存器後,立即解碼執行,不再需要其它的機器周期。對於一些比較復雜的指令,例如轉移指令、乘法指令,則需要兩個或者兩個以上的機器周期。通常含一個機器周期的指令稱為單周期指令,包含兩個機器周期的指令稱為雙周期指令。
匯流排周期:
由於存貯器和I/O埠是掛接在匯流排上的,CPU對存貯器和I/O介面的訪問,是通過匯流排實現的。通常把CPU通過匯流排對微處理器外部(存貯器或 I/O介面)進行一次訪問所需時間稱為一個匯流排周期。
總結:
時鍾周期是最小單位,機器周期需要1個或多個時鍾周期,指令周期需要1個或多個機器周期;
機器周期指的是完成一個基本操作的時間,這個基本操作有時可能包含匯流排讀寫,因而包含匯流排周期,但是有時可能與匯流排讀寫無關,所以,並無明確的相互包含的關系;
指令周期:是CPU的關鍵指標,指取出並執行一條指令的時間。一般以機器周期為單位,分單指令執行周期、雙指令執行周期等。現在的處理器的大部分指令(ARM、DSP)均採用單指令執行周期;
機器周期:完成一個基本操作的時間單元,如取指周期、取數周期。時鍾周期:CPU的晶振的工作頻率的倒數。
B. 51單片機中如何定義比較大的數組變數 比如 char[1024][10]
定義這種大的數組,你首先得有這么大的RAM才可以,不然肯定不好用。內部地址空間就別想了,肯定是放在外部。
如果是常數數組,可以定義到代碼裡面,code
char
cc[1024][10],這種程序只能讀,不能改,像字型檔點陣一般用這種。
如果有足夠的外部RAM,xdata
char
xx[1024][10];
這是把數組定義到外部RAM,需要用MOVX訪問。
C. 單片機c51 怎麼定義連續RAM地址的變數
可以有兩種方法,第一方法是定義一個一維數組,這樣,數組中每一個元素(看成是每一個變數)的地址是連續的。
第二種方法,是 _at_ 定義幾個變數。如
unsigned char x0 _at_ 0x30;
unsigned char x1 _at_ 0x31;
unsigned char x2 _at_ 0x32;
依次繼續定義。顯然,這種方法比較麻煩
D. 51單片機如何定義數據塊初值
pcon一般只有在使用串口時設置,要設置也只設置它的最高位smod。smod是串口波特率倍增位,設為1串口波特率就加倍,為0就不變。pcon不能位定址,所以說初值就00h和80h兩種。
E. 51單片機里的定義
每個IO口對應內部一個寄存器,定義為了使IO對應寄存器的地址。
F. 51系列單片機具有幾個中斷源,分別是如何定義的其中哪些中斷源可以被定義為高優先順序中斷,如何定義
有5個中斷源,外部中斷0,定義為INT0,;定時/計數器0,定義為T0,外部中斷1,定義為INT1;定時/計數器1,定義為T1;串列通信口中斷
五個都可以定義高優先順序中斷,可以根據自身需要進行設置,5個中斷源都可以根據需要定義高優先順序,當需要定義高優先順序時,只需要將IP寄存器中的相應位置1即可,它們的位分別是PX0,PT0,PX1,PT1,PS
(6)51單片機怎麼定義擴展閱讀:
為使系統能及時響應並處理發生的所有中斷,系統根據引起中斷事件的重要性和緊迫程度,硬體將中斷源分為若干個級別,稱作中斷優先順序。
引入多級中斷是因為:為使系統能及時的響應和處理所發生的緊迫中斷,同時又不至於發生中斷信號丟失,計算機發展早期在設計中斷系統硬體時根據各種中斷的輕重在線路上作出安排,從而使中斷響應能有一個優先次序。
多級中斷的處理原則:當多級中斷同時發生時,CPU按照由高到低的順序響應。高級中斷可以打斷低級中斷處理程序的運行,轉而執行高級中斷處理程序。當同級中斷同時到時,則按位響應。
當多級中斷同時發生時,CPU按照由高到低的順序響應
另外,優先順序高的中斷源可以中斷優先順序低的中斷服務程序,這就形成了中斷服務程序中套著中斷服務程序的情況,即形成了所謂的中斷嵌套。
中斷優先順序的高低順序為硬體故障中斷、自願中斷、程序性中斷、外部中斷和輸入輸出中斷。
G. C51的這些P幾地址是怎麼定義的
P0,P1,P2,P3是輸入輸出的寄存器,他們是八位的,低位對應16進制的低位,即你圖上所寫的0X7E,展開成2進制的形式是 0111 1110,那麼P0.0對應的就是最右邊的0,即 1110 里的0 , P0.1-P0.3對應最右邊的四位里的左邊三位,即 1110 中的 111,因為輸入輸出寄存器還能以位定址的方式來用,所以還可以直接把某位設置為0或者1,比如P0.0=1,即是吧P0寄存器里的編號為0的那個位置為1,P0.0也就是對應單片機的P0.0的那個管腳,但是一般都是使用P0^0的形式,是因為一般初學者,直接使用的是 名字為AT89C51.h的頭文件,頭文件里定義的P0.0就是定義成P0^0,但是我們還可以使用sbit來重新定義為自己好寫的方式,比如sbit P00=P0^0,這相當於告訴編譯器,把頭文件里定義的P0^0用P00來代替,我們寫的時候直接寫P00,編譯器自己會去處理,如果不寫,那麼編譯器會提示找不到P00的定義問題。頭文件里定義了所有51單片機的寄存器的名字,一般都可以通用的,大多數只是簡單的用一個名字去代替寄存器的地址,編譯器碰到寄存器名字的時候去頭文件里找,並他們替換成寄存器地址,然後再編譯的。