1.2 8051 系列單片機內部結構
8051系列單片機內部結構可以分為 CPU、存儲器、并行口、串行口、定時器/計數器和中斷邏輯這幾部分,如圖 1-2-1。
圖 1-2-1
1.2.1 微處理器微處理器又稱 CPU,由運算器和控制器兩大部分組成。
1. 算術邏輯單元它在控制器所發內部控制信號的控制下進行各種算術操作和邏輯操作。
MCS-51 系列單片機的算術邏輯單元能完成帶進位位加法、不帶進位位加法、帶進位位減法、加 1、減 1、邏輯與、邏輯或、邏輯異或、循環移位以及數據傳送、程序轉移等一般操作外,其特點是:
? 在 B 寄存器配合下,能完成乘法與除法操作。
? 可進行多種內容交換操作。
? 能作比較判跳轉操作。
? 有很強的位操作功能。
2. 累加器累加器 A 是最常用的專用寄存器。
進入 ALU 作算術操作和邏輯操作的操作數很多來自 A,操作的結果也常送回 A。有時很多單操作數操作指令都是針對 A 的,例如指令 INC A 是執行 A 中內容自加 1 的操作,指令 CLR A 是執行將 A 內容清零的操作,指令 RL A 是執行使 A 各位內容依次循環向左移動一位的操作。
3. 程序狀態字
程序狀態字 PSW 是一個 8 位寄存器,它包含了許多程序狀態信息,其各位的含義見圖 1-2-2。
D7
D6
D5
D4
D3
D2
D1
D0
CY
AC
FO
RS1
RS0
OV
-
P
圖 1-2-2
PSW 各位的含義如表 1-2-1。
位
含義
CY
進位標志。有進位/借位時,CY=1,否則 CY=0。
AC
輔助進位標志。8 位運算時,如果低半字的最高位 D3 有進位,則 AC=1,否則 AC=0;8 位減法運算時,如果 D3 有借位,則 AC=1,否則 AC=0。AC 在作 BCD 碼運算而進行二-十進制調整時很有用。
FO
軟件標志。這是用戶定義的一個狀態標志。可通過軟件對它置位、清零;在編程時,也常測試其是否建起而進行程序分支。
RS1
RS0
工作寄存器組選擇位,可借軟件置位或清零,以選定 4 個工作寄存器組中的一個投入工作,詳見表 1-2-2。
OV
溢出標志。當帶符號數運算結果超出-128~127 范圍時,OV=1,否則 OV=0;當無符號數乘法結果超過 255 時,或當無符號數除法的除數為 0 時,OV=1,否則 OV=0。
P
奇偶標志。每執行一條指令,單片機都能根據 A 中 1 的個數的奇偶自動令 P 置位或清零,奇為 1 ,偶為 0。此標志對串行通信的數據傳輸非常有用,通過奇偶校驗可校驗傳輸的可靠性。
RS1、RS0 與工作寄存器組的關系如表 1-2-2。
表 1-2-2
RS1
RS0
工作寄存器組
0
0
0 組(00H~07H)
0
1
1 組(08H~0FH)
1
0
2 組(10H~17H)
1
1
3 組(18H~1FH)
1.2.2 振蕩器與 CPU 1. 振蕩器
圖 1-2-3
MCS-51 系列單片機內含有一個高增益的反相放大器,通過 XTAL1、XTAL2 外接作為反饋元器件的晶體后便成為自激振蕩器,接法見圖 1-2-3。晶體呈感性,與兩個 30pF 電容并聯諧振電路。振蕩器的震蕩頻率主要取決于晶體;電容的值有微調作用,通常取 30pF 左右。電容的安裝位置應盡量靠近單片機芯片。
2. CPU 時序振蕩器輸出的震蕩脈沖經 2 分頻成為內部時鐘信號,用作單片機內部各功能部件按序協調工作的控制信號;其周期成為時鐘周期,也稱為狀態周期。
CPU 執行一條指令的時間成為指令周期。指令周期已機器周期為單位,例如單周期指令、雙周期指令。MCS-51 系列單片機除乘法指令、除法指令是 4 周期指令外,其余都是單周期指令和雙周期指令。若用 12MHz 晶振,則單周期指令和雙周期指令的執行時間分貝為 1us 和 2us,乘法指令和除法指令為 4us。
1.2.3 存儲器8051 系列單片機的存儲器結構特點之一是將程序存儲器和數據存儲器分開,并有各自的尋址機構和尋址方式。這種結構的的單片機稱為哈佛結構單片機。該結構與通用微機的存儲器結構不同。一般微機只有一個存儲器邏輯空間,可隨意安排 ROM 或 RAM,訪問時用同一種指令。這時結構稱為普林斯頓型。
8051 系列單片機在物理上有 4 個存儲空間:片內程序存儲器和片外程序存儲器;片內數據存儲器和片外數據存儲器。
8051 系列單片機內有 256 字節數據存儲器 RAM 和 4KB 的程序存儲器 ROM。除此之外,還可以在片外拓展 RAM 和 ROM,并且各有 64KB 的尋址范圍,也就是最多可以在外部拓展 2x64KB 存儲器。
對 8051 來說,如EA引腳為高電平,復位后先執行片內程序存儲器中的程序,當程序計數器 PC 中內容超過 0x0FFF(對 51 子系列)或 0x1FFF(對 52 子系列)時,將自動轉去執行片外程序存儲器中的程序;對于片內無程序存儲器的 8031、8032,EA 引腳應保持低電平,使其只能訪問片外程序存儲器。
對于有片內程序存儲器的芯片,如EA引腳接低電平,將強令執行片外程序存儲器中的程序。此時多在片外程序存儲器中存放調試程序,使計算機工作在調試狀態。那么這時就要注意:片外程序存儲器存放調試程序的部分,其編址與片內程序存儲器的編址是可以重疊的,借EA引腳的換接可實現分別訪問。
二者,都能自程序存儲器的任一單元取指執行或訪問取數(常數),不會混亂。
下圖為 51 子系列的存儲器編址圖,程序存儲器編址如圖 1-2-4,數據存儲器如圖 1-2-5。
圖 1-2-4
圖 1-2-5
64KB 的程序存儲器(ROM)空間中,有 4KB 地址區對于片內 ROM 和片外 ROM 是公用的。這 4KB 地址為 0000H~0FFFH;而 1000H~FFFFH 地址區為外部 ROM 專用。CPU 的控制器專門提供一個控制信號通過EA引腳來控制EA用來區分內部 ROM 和外部 ROM 的公用地址區:當EA引腳接高電平時,單片機從片內 ROM的 4KB 存儲區取指令,而當指令地址超過 0FFFH 后,就自動地轉向片外 ROM 指令;當EA引腳為低電平時 ,CPU 只從片外 ROM 取指令。這種接法特別適用于 8031 單片機的場合,由于 8031 內部不帶 ROM,所以使用必須EA引腳置 0,以便直接從外部 ROM 中取指令。
程序存儲器的某些單元是保留給系統使用的:0000H~0002H 單元是所有執行程序的入口地址,即單片機上電后,CPU 總是從 0000H 單元開始執行地址;0003H~002BH 單元均勻地分為 5 段,用做 5 個中斷服務函數的入口地址如表 1-2-4,用戶程序不應進入上述區域。
中斷源
入口地址
外部中斷 0
0003H
定時器/計數器 0 溢出
000BH
外部中斷 1
0013H
定時器/計數器 1 溢出
001BH
串行口
0023H
定時器/計數器 2 溢出或 T2EX 端負跳變(僅 8032 、8052 用)
002BH
數據存儲器 RAM 也有 64KB 尋址區,在地址上與 ROM 是重疊的。8051 通過不同的信號來選通 ROM 或RAM:當從外部 ROM 取指令時,用選通信號PSEN;而當從外部 RAM 讀寫數據時,采用讀寫信號RD或WR來選通,因此,不會因為地址重疊而出現混亂。
8051 的 RAM 雖然字節數不很多,但卻起著十分重要的作用。256 字節被劃分為兩個區域:00H~7FH是真正的RAM區,可以讀/寫各種數據;而80H~FFH是專門用于特殊功能寄存器(SFR,Special FunctionRegister)的區域。對于 8051 安排了 21 個特殊功能寄存器;對于 8052 則安排了 26 個特殊功能寄存器。每個寄存器為 8 位,即一個字節,所以實際上 128 自己沒有全部利用。
51 子系列單片機片內 RAM 共分為工作寄存器區、位尋址區、數據緩沖區器三個區域。
工作寄存器也稱作通用寄存器,供用戶編程時使用,臨時保存 8 位信息。
位尋址就是每一位都被賦予了 1 個位地址,有了位地址就可以位尋址,對特定位進行處理、內容傳送或據以判條,給編程帶來極大的方便。
數據緩沖區即用戶 RAM 區。
片內數據存儲器如表 1-2-5。
片內數據存儲區域
占用地址
工作寄存器區
工作寄存器 0 組
00H~07H
工作寄存器 1 組
08H~0FH
工作寄存器 2 組
10H~17H
工作寄存器 3 組
18H~1FH
位尋址區
20H~2FH
數據緩沖區
30H~7FH
對于 128 字節 RAM 的 8051 系列單片機來說,真正讓用戶使用的 RAM 只有 80 自己,即 30H~7FH。對于 8052 單片機來說,片內多安排了 128 字節 RAM 單元,地址也為 80H~FFH,與特殊功能寄存器區域地址重疊,但在使用時,可以通過指令加以區別。
特殊功能寄存器也稱專用寄存器,專用于控制、管理片內算路邏輯部件、并行 I/O 口,串行I/O 口、定時器/計數器、中斷系統等功能模塊的工作,用戶編程時可以置數設定,卻不能將該寄存器另作他用。在 51 系列單片機中,將各專用寄存器(程序計數器 PC 例外)與片內 RAM 統一編址的,又可以作為直接尋址字節。特殊功能寄存器地址分配如表 1-2-6。
表 1-2-6
特殊功能寄存器
符號
地址
P0 口
P0
80H
堆棧指針
SP
81H
數據指針低字節
DPL
82H
定時器/計數器控制
TCON
88H
定時器/計數器方式控制
TMOD
89H
定時器/計數器 0 低字節
TL0
8AH
定時器/計數器 1 低字節
TL1
8BH
定時器/計數器 0 高字節
TH0
8CH
定時器/計數器 1 高字節
TH1
8DH
P1 口
P1
90H
電源控制
PCON
97H
串行控制
SCON
98H
串行數據緩沖器
SBUF
99H
P2 口
P2
A0H
中斷允許控制
IE
A8H
P3 口
P3
B0H
中斷優先級控制
IP
B8H
定時器/計數器 2 控制
T2CON
C8H
定時器/計數器 2 自動重裝載低字節
RLDL
CAH
定時器/計數器 2 自動重裝載高字節
RLDH
CBH
定時器/計數器 2 低字節
TL2
CCH
程序狀態字
PSW
D0H
累加器
A
E0H
B 寄存器
B
F0H
1.2.4 并行接口
MCS-51 系列單片機有 32 根輸入/輸出線,組成 4 個 8 位并行輸入/輸出接口,分別為 P0 口 、P1 口、P2 口、P3 口。這 4 個接口可以并行輸入或輸出 8 位數據,也可以按位使用,即每一根輸入/輸出線都能夠獨立地用作輸入或輸出。
這 4 個口的差別就是 P0、P2、P3 都還有第二功能的,而 P1 口只能作普通的 I/O 口來使用 。
詳細描述請看“第二章 STC89C52RC 處理器 2.4 管腳小節”。
1.3 8051 系列單片機內部資源 1. 定時器/ / / / 計數器8051 系列單片機至少有兩個 16 位內部定時器/計數器(T/C,Timer/Counter),提供了 3 個定時器,其中兩個基本定時器/計數器分別是定時器/計數器 0(T/C0)和定時器/計數器 1(T/C1)。它們既可以編程為定時器使用,也可以編程為計數器使用。若是計數內部晶振驅動時鐘,則它是定時器;若是計數輸入引腳的脈沖信號,則它是計數器。
2. 串行口串行收/發存儲在特殊功能寄存器的 SBUF(串行數據緩沖器),從表 1-2-6 可以知道,SBUF占用 RAM 地址為 99H。實際上在單片機內部有兩個數據緩沖器:發送緩沖器和接收緩沖器,它們都以 SBUF 來命名,只根據對 SBUF 特殊功能寄存器讀/寫操作,單片機會自動切換發送緩沖器或接收緩沖器。
SBUF=0x01,該操作為寫操作,數值 0x01 會被裝載到發送緩沖器。
Tmp=SBUF,該操作為讀操作,接收緩沖器的內容會被賦值給 Tmp 變量。
3. 中斷系統8051 系列單片機中斷系統的功能有 5 個(52 子系列為 6 個)中斷源,2 個中斷優先級,從而實現二級中斷嵌套,每一個中斷源的優先級可由程序設定。與中斷系統工作有關的特殊功能寄存器有中斷允許控制寄存器 IE、中斷優先級控制寄存器 IP 以及定時器/計數器控制寄存器 TCON等。
評論