8051是MCS-51系列單片機的典型產品,我們以這一代表性的機型進行系統的講解。
????8051單片機包含中央處理器、程序存儲器(ROM)、數據存儲器(RAM)、定時/計數器、并行接口、串行接口和中斷系統等幾大單元及數據總線、地址總線和控制總線等三大總線,現在我們分別加以說明:
單片機的結構有兩種類型,一種是程序存儲器和數據存儲器分開的形式,即哈佛(Harvard)結構,另一種是采用通用計算機廣泛使用的程序存儲器與數據存儲器合二為一的結構,即普林斯頓(Princeton)結構。INTEL的MCS-51系列單片機采用的是哈佛結構的形式,而后續產品16位的MCS-96系列單片機則采用普林斯頓結構。
????下圖是MCS-51系列單片機的內部結構示意圖。
時序是用定時單位來描述的,MCS-51的時序單位有四個,它們分別是節拍、狀態、機器周期和指令周期,接下來我們分別加以說明。
????·節拍與狀態:
????我們把振蕩脈沖的周期定義為節拍(為方便描述,用P表示),振蕩脈沖經過二分頻后即得到整個單片機工作系統的時鐘信號,把時鐘信號的周期定義為狀態(用S表示),這樣一個狀態就有兩個節拍,前半周期相應的節拍我們定義為1(P1),后半周期對應的節拍定義為2(P2)。
????·機器周期:
????MCS-51有固定的機器周期,規定一個機器周期有6個狀態,分別表示為S1-S6,而一個狀態包含兩個節拍,那么一個機器周期就有12個節拍,我們可以記著S1P1、S1P2……S6P1、S6P2,一個機器周期共包含12個振蕩脈沖,即機器周期就是振蕩脈沖的12分頻,顯然,如果使用6MHz的時鐘頻率,一個機器周期就是2us,而如使用12MHz的時鐘頻率,一個機器周期就是1us。
????·指令周期:
????執行一條指令所需要的時間稱為指令周期,MCS-51的指令有單字節、雙字節和三字節的,所以它們的指令周期不盡相同,也就是說它們所需的機器周期不相同,可能包括一到四個不等的機器周期(這些內容,我們將在下面的章節中加以說明)。
????·MCS-51的指令時序:
????MCS-51指令系統中,按它們的長度可分為單字節指令、雙字節指令和三字節指令。執行這些指令需要的時間是不同的,也就是它們所需的機器周期是不同的,有下面幾種形式:
????·單字節指令單機器周期
????·單字節指令雙機器周期
????·雙字節指令單機器周期
????·雙字節指令雙機器周期
????·三字節指令雙機器周期
????·單字節指令四機器周期(如單字節的乘除法指令)
????下圖是MCS-51系列單片機的指令時序圖:
????8051單片機包含中央處理器、程序存儲器(ROM)、數據存儲器(RAM)、定時/計數器、并行接口、串行接口和中斷系統等幾大單元及數據總線、地址總線和控制總線等三大總線,現在我們分別加以說明:
????·中央處理器: ????中央處理器(CPU)是整個單片機的核心部件,是8位數據寬度的處理器,能處理8位二進制數據或代碼,CPU負責控制、指揮和調度整個單元系統協調的工作,完成運算和控制輸入輸出功能等操作。 ????·數據存儲器(RAM): ????8051內部有128個8位用戶數據存儲單元和128個專用寄存器單元,它們是統一編址的,專用寄存器只能用于存放控制指令數據,用戶只能訪問,而不能用于存放用戶數據,所以,用戶能使用的的RAM只有128個,可存放讀寫的數據,運算的中間結果或用戶定義的字型表。 |
????·程序存儲器(ROM): ????8051共有4096個8位掩膜ROM,用于存放用戶程序,原始數據或表格。 ????·定時/計數器(ROM): ????8051有兩個16位的可編程定時/計數器,以實現定時或計數產生中斷用于控制程序轉向。 ????·并行輸入輸出(I/O)口: ????8051共有4組8位I/O口(P0、 P1、P2或P3),用于對外部數據的傳輸。 ????·全雙工串行口: ????8051內置一個全雙工串行通信口,用于與其它設備間的串行數據傳送,該串行口既可以用作異步通信收發器,也可以當同步移位器使用。 ????·中斷系統: ????8051具備較完善的中斷功能,有兩個外中斷、兩個定時/計數器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優先級別選擇。 ????·時鐘電路: ????8051內置最高頻率達12MHz的時鐘電路,用于產生整個單片機運行的脈沖時序,但8051單片機需外置振蕩電容。 |
????下圖是MCS-51系列單片機的內部結構示意圖。
????■?MCS-51的引腳說明: |
????MCS-51系列單片機中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結構,右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復用。現在我們對這些引腳的功能加以說明: ????·Pin20:接地腳。 ????·Pin40:正電源腳,正常工作或對片內EPROM燒寫程序時,接+5V電源。 ????·Pin19:時鐘XTAL1腳,片內振蕩電路的輸入端。 ????·Pin18:時鐘XTAL2腳,片內振蕩電路的輸出端。 ????8051的時鐘有兩種方式,一種是片內時鐘振蕩方式,但需在18和19腳外接石英晶體(2-12MHz)和振蕩電容,振蕩電容的值一般取10p-30p。另外一種是外部時鐘方式,即將XTAL1接地,外部時鐘信號從XTAL2腳輸入。 |
????·輸入輸出(I/O)引腳: ????Pin39-Pin32為P0.0-P0.7輸入輸出腳,Pin1-Pin1為P1.0-P1.7輸入輸出腳,Pin21-Pin28為P2.0-P2.7輸入輸出腳,Pin10-Pin17為P3.0-P3.7輸入輸出腳,這些輸入輸出腳的功能說明將在以下內容闡述。 |
·Pin9:RESET/Vpd復位信號復用腳,當8051通電,時鐘電路開始工作,在RESET引腳上出現24個時鐘周期以上的高電平,系統即初始復位。初始化后,程序計數器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指鐘寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統即從0000H地址開始執行程序。然而,初始復位不改變RAM(包括工作寄存器R0-R7)的狀態,8051的初始態如下表: |
????8051的復位方式可以是自動復位,也可以是手動復位,見下圖。此外,RESET/Vpd還是一復用腳,Vcc掉電期間,此腳可接上備用電源,以保證單片機內部RAM的數據不丟失。 |
|
????·Pin30:ALE/當訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節。而訪問內部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機是否工作,也可以當作一個時鐘向外輸出。更有一個特點,當訪問外部程序存儲器,ALE會跳過一個脈沖。 ????如果單片機是EPROM,在編程其間,將用于輸入編程脈沖。 ????·Pin29:當訪問外部程序存儲器時,此腳輸出負脈沖選通信號,PC的16位地址數據將出現在P0和P2口上,外部程序存儲器則把指令數據放到P0口上,由CPU讀入并執行。 ????·Pin31:EA/Vpp程序存儲器的內外部選通線,8051和8751單片機,內置有4kB的程序存儲器,當EA為高電平并且程序地址小于4kB時,讀取內部程序存儲器指令數據,而超過4kB地址則讀取外部指令數據。如EA為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內部無程序存儲器的8031,EA端必須接地。 ????在編程時,EA/Vpp腳還需加上21V的編程電壓。 |
????·節拍與狀態:
????我們把振蕩脈沖的周期定義為節拍(為方便描述,用P表示),振蕩脈沖經過二分頻后即得到整個單片機工作系統的時鐘信號,把時鐘信號的周期定義為狀態(用S表示),這樣一個狀態就有兩個節拍,前半周期相應的節拍我們定義為1(P1),后半周期對應的節拍定義為2(P2)。
????·機器周期:
????MCS-51有固定的機器周期,規定一個機器周期有6個狀態,分別表示為S1-S6,而一個狀態包含兩個節拍,那么一個機器周期就有12個節拍,我們可以記著S1P1、S1P2……S6P1、S6P2,一個機器周期共包含12個振蕩脈沖,即機器周期就是振蕩脈沖的12分頻,顯然,如果使用6MHz的時鐘頻率,一個機器周期就是2us,而如使用12MHz的時鐘頻率,一個機器周期就是1us。
????·指令周期:
????執行一條指令所需要的時間稱為指令周期,MCS-51的指令有單字節、雙字節和三字節的,所以它們的指令周期不盡相同,也就是說它們所需的機器周期不相同,可能包括一到四個不等的機器周期(這些內容,我們將在下面的章節中加以說明)。
????·MCS-51的指令時序:
????MCS-51指令系統中,按它們的長度可分為單字節指令、雙字節指令和三字節指令。執行這些指令需要的時間是不同的,也就是它們所需的機器周期是不同的,有下面幾種形式:
????·單字節指令單機器周期
????·單字節指令雙機器周期
????·雙字節指令單機器周期
????·雙字節指令雙機器周期
????·三字節指令雙機器周期
????·單字節指令四機器周期(如單字節的乘除法指令)
????下圖是MCS-51系列單片機的指令時序圖:
????上圖是單周期和雙周期取指及執行時序,圖中的ALE脈沖是為了鎖存地址的選通信號,顯然,每出現一次該信號單片機即進行一次讀指令操作。從時序圖中可看出,該信號是時鐘頻率6分頻后得到,在一個機器周期中,ALE信號兩次有效,第一次在S1P2和S2P1期間,第二次在S4P2和S5P1期間。 |
評論
查看更多