文章目錄
- 一、CPU(運算器、控制器)
-
- 1. 運算器
-
- 1)算術/邏輯單元 ALU
- 2)累加器ACC
- 3)寄存器B
- 4)程式狀态字寄存器 PSW
- 2. 控制器
-
- 1)程式計數器 PC
- 2)指令通道
-
- a. 取指單元
- b. 譯碼單元
- c. 執行指令單元
- 3)雙資料指針 DPTR
- 4)堆棧指針 SP
- 二、存儲器(内部RAM、擴充RAM、Flash)
-
- 1. 内部RAM
- 2. 擴充RAM
- 3. 程式存儲器Flash
- 三、特殊功能寄存器
-
- 關于作者
參考資料:
① Keil > Help
②《STC單片機原理及應用——從器件、彙編、C到作業系統的分析和設計》何賓著
③《MCS-51系列單片機及其應用(第6版)》孫育才、孫華芳著
在8051單片機架構中,主要包含:
- CPU(運算器、控制器)
- 存儲器(内部RAM、擴充RAM、Flash)
- 特殊功能寄存器
- 其他:外設、時鐘系統等
一、CPU(運算器、控制器)
運算器和控制器構成了8051中央處理單元(Central Processing Unit, CPU)
1. 運算器
單片機的運算器主要包括8位算術/邏輯運算部件、累加器A、寄存器B、程式狀态寄 存器等。其功能是實作資料的算術/邏輯運算(資料處理)和資料傳輸等操作。
1)算術/邏輯單元 ALU
在8051 CPU内的運算器中,最核心的部件就是算術邏輯單元(Arithmetic and Logic Unit,ALU),ALU寬度為8位。它的主要功能是實作8位加、減、乘和除運算,“與”、“或”、“異或”邏輯運算,包括位操作以及循環、清“0”、置“1”、加“1”、 減“1”等若幹基本操作。
2)累加器ACC
累加器(Accumulator,ACC)是一個常用的專用寄存器,指令系統中采用 A 作為累加器的助記符,常用于存放算術或邏輯運算的操作數及運算結果。
3)寄存器B
寄存器B 在乘除法運算中需要和 ACC 配合使用,其他情況下,B寄存器還可以用作通用暫存寄存器。
4)程式狀态字寄存器 PSW
在程式狀态字(Program Status Word,PSW)在 CPU 做算術運算或者邏輯運算時,對應的 PSW 狀态位會發生改變。
2. 控制器
1)程式計數器 PC
程式計數器(Program Counter,PC),用于存放下一條即将從程式存儲器中讀取的指令的位址,不斷地從程式存儲器中讀取指令代碼,進而實作計算機自動而連續地執行指令、運作程式。PC中内容(位址碼)的變化決定程式運作的流向。
程式計數器的寬度為16位,決定單片機對程式存儲器可以尋址的範圍,即可尋址的程式存儲器的容量最大為64KB。
程式計數器并不能總是讓程式位址寄存器遞增。這是因為,機器指令可以分成順序執行和跳轉執行兩種情況。
2)指令通道
a. 取指單元
根據PC所指向的存放指令程式存儲器的位址,取出指令。8051的機器指令有8位、16位或24位。
b. 譯碼單元
根據取出指令的操作碼部分,轉換成 一系列的邏輯控制序列,這些控制序列将直接控制CPU内的運算單元。
c. 執行指令單元
根據邏輯控制序列(微指令)所産生的邏輯行為,控制運算器單 元,進而完成指令需要實作的操作行為。
3)雙資料指針 DPTR
雙資料指針(DPTR)是一個16位的專用寄存器,由DPL和DPH組成。它的主要功能是用來尋址外部資料存儲器的16位位址寄存器,也可尋址存放在64KB程式存儲器中固定資料。
4)堆棧指針 SP
堆棧指針 SP 是一個 8 位專用寄存器,它訓示出堆棧頂部在内部 RAM 塊中的位置。
二、存儲器(内部RAM、擴充RAM、Flash)
8051架構的單片機存儲器主要包括:内部RAM、擴充RAM、特殊功能寄存器和程式存儲器Flash。
1. 内部RAM
内部RAM最大支援256位元組的存儲空間;讀取資料非常快,是因為可以通過8位位址直接通路;
低128位元組可以直接尋址(data),也可以間接尋址(idata);其中的20H~2FH空間,可以通過位尋址;
高128位元組隻能間接尋址;當直接尋址通路時,會自動映射到SFR空間;
C51編譯器提供3種不同的記憶體類型來通路内部RAM空間:data, idata和bdata;
關鍵字 | 指向内部RAM區域 | 尋址方式 |
---|---|---|
data | 低128位元組 | 直接尋址 |
idata | 所有256位元組 | 間接尋址 |
bdata | 指向20H~2FH空間 | 可以按位讀寫 |
2. 擴充RAM
通路擴充RAM區域時,通過一個資料指針寄存器進行間接通路,是以讀寫速度要比内部RAM區域慢。
擴充RAM區域最大支援64K位元組存儲空間,但是這些位址不一定全部用于記憶體空間,一些8051單片機會把外設位址映射到擴充RAM區域。
C51編譯器提供2中不同的記憶體類型來通路擴充RAM空間:xdata和pdata:
關鍵字 | 指向外部RAM區域 | 尋址方式 |
---|---|---|
xdata | 所有64K位元組空間 | 間接尋址 |
pdata | 一個頁(256位元組)的空間 | 間接尋址 |
3. 程式存儲器Flash
8051架構支援最大64K位元組的Flash空間。
程式代碼是存儲在Flash空間的,8051隻能執行存儲在Flash中的代碼。常數變量也可以存儲在Flash空間。
通路Flash空間的方式是使用MOVC指令間接尋址,不能直接尋址;
三、特殊功能寄存器
8051架構提供128位元組的記憶體空間給特殊功能寄存器(SFR),SFR 和高 128 位元組内部 RAM 共用位址 80H ~ FFH, 隻能直接尋址。
它是多個控制寄存器和狀态寄存器的集合,用于對單片機内的各個功能子產品進行管理、控制和監視。
本文完~關于作者
微信公衆号:螢火蟲的電子筆記
分享嵌入式軟體、硬體知識;
關注8051單片機、STM32、Linux、AltiumDesigner、Vscode、Keil和物聯網等相關領域。
歡迎轉發,請注明出處及作者。關注微信公衆号,擷取最新文章動态。