8051架構主要包含:

1. CPU(運算器和控制器);

2. 存儲器(内部RAM、擴充RAM和Flash);

3. 特殊功能寄存器;

4. 其他:外設、時鐘系統等;(注:本文略過)
經典8051單片機内部結構
一
CPU(運算器和控制器)
運算器和控制器構成了8051中央處理單元(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
NaN
程式計數器(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存儲器結構和位址空間
8051架構的單片機存儲器主要包括:
内部RAM、擴充RAM、特殊功能寄存器和程式存儲器Flash。
1
内部RAM
1)
内部RAM最大支援256位元組的存儲空間;讀取資料非常快,是因為可以通過8位位址直接通路;
2)
低128位元組可以直接尋址(data),也可以間接尋址(idata);其中的20H~2FH位址空間,可以通過位尋址;
3)
高128位元組隻能間接尋址;當直接尋址通路時,會自動映射到SFR空間;
4)
C51編譯器提供3種不同的記憶體類型來通路内部RAM空間:data, idata和bdata;
關鍵字 | 指向内部RAM區域 | 尋址方式 |
data | 低128位元組 | 直接尋址 |
idata | 所有256位元組 | 間接尋址 |
bdata | 20H~2FH位址空間 | 可以按位讀寫 |
2
擴充RAM
1)
通路擴充RAM區域時,通過一個資料指針寄存器進行間接通路,是以讀寫速度要比内部RAM區域慢。
2)
擴充RAM區域最大支援64K位元組存儲空間,但是這些位址不一定全部用于記憶體空間,一些8051單片機會把外設位址映射到擴充RAM區域。
3)
C51編譯器提供2種不同的資料類型來通路擴充RAM空間:xdata和pdata:
關鍵字 | 指向外部RAM區域 | 尋址方式 |
xdata | 所有最大64K位元組空間 | 間接尋址 |
pdata | 一個頁(256位元組)的空間 | 間接尋址 |
3
程式存儲器Flash
1)
8051架構支援最大64K位元組的Flash空間。
2)
程式代碼是存儲在Flash空間的,8051隻能執行存儲在Flash中的代碼。常數變量也可以存儲在Flash空間。
3)
通路Flash空間的方式是使用MOVC指令間接尋址,不能直接尋址;
三
特殊功能寄存器
8051架構提供128位元組的記憶體空間給特殊功能寄存器(SFR),SFR 和内部 RAM 的高 128 位元組共用位址 80H ~ FFH, 隻能通過直接尋址通路SFR。
SFR是多個控制寄存器和狀态寄存器的集合,用于對單片機内的各個功能子產品進行管理、控制和監視。
參考資料:
① Keil > Help
②《STC單片機原理及應用——從器件、彙編、C到作業系統的分析和設計》何賓著
③《MCS-51系列單片機及其應用(第6版)》孫育才、孫華芳著
關于作者
微信公衆号:螢火蟲的電子筆記
關注領域:
8051單片機、STM32、Linux、電路設計、物聯網、AD、VScode、和Keil等。
歡迎轉發,請注明作者及出處。
關注微信公衆号,擷取最新文章動态。