第四章 暫存器與資料記憶體
§4-1 累加器
累加器(Accumulator)一般以A或Acc簡稱,是使用頻率最高的暫存器,許多算數運算、邏輯運算及資料搬移等工作,都需要藉由累加器來完成。
§4-2 工作暫存器
在8051中共有8個8位元(bits)工作暫存器,分別為0、1、2、3、4、5、6及7。這些工作暫存器可用以輔助累加器在運算上的不足,如儲存即將被處理的資料,或已完成的結果及迴圈數值控制等。
由於在撰寫較複雜程式尤其是呼叫副程式時,為了避免工作暫存器之內容遭到破壞,在8051中提供四個暫存器庫,分別為RB、RB1、RB及RB3,每一個暫存器庫均有個8位元工作暫存器,並可經由工作暫存器0∼7來存取,但程式執行中只能選擇四個暫存器庫中的一個暫存器來使用,而其選擇方法則可透過設定RS1與RS0此兩位元來選擇:
RS1 RS0 暫存器庫 位址
0 0 RB0 00H~07H
0 1 RB1 08H~0FH
1 0 RB2 10H~17H
1 1 RB3 18H~1FH
當8051選擇使用RB0時,程式中存取R0∼R7暫存器的值,實際上是在存取資料記憶體位址00H∼07H的內容;而使用RB1時,程式中存取R0∼R7暫存器的值,實際上是在存取資料記憶體位址08H∼0FH的內容;而使用RB2時,程式中存取R0∼R7暫存器的值,實際上是在存取資料記憶體位址10H∼17H的內容;而使用RB3時,程式中存取R0∼R7暫存器的值,實際上是在存取資料記憶體位址18H∼1FH的內容。所以在複雜程式中,主程式與副程式可分配使用不同暫存器庫,即可避免暫存器的值被破壞。
§4-3 輸出/輸入埠暫存器
8051具有4個8位元(bits)的輸出輸入埠,經由這四個輸出輸入埠與外界進行資料交換因此在8051內部用個暫存器來記錄輸出/輸入接腳的狀態,分別為資料記憶體80H、90H、A0H、B0H等四個位元組(byte),並一輸出/輸入埠分別命名為P0、P1、P2及P3。當軟體程式對輸出輸入埠P0∼3作輸出/輸入的動作,即是對80H、90H、A0H及B0H等四個位元組作寫入/讀出的動作。
§4-4 資料記憶體
8051的記憶體可分為兩大部份,一是程式記憶體,即是使用者撰寫軟體程式的存放記憶體區塊;另一是資料記憶體,是用以存放程式執行結果所使用的記憶體。而在8051中暫存器與資料記憶體則是結合在一起,均存放在資料記憶體中,及結構如下圖所示:
SFR的內部結構
|
F8 |
|
|
|
|
|
|
|
|
FF |
|
F0 |
B |
|
|
|
|
|
|
|
F7 |
|
E8 |
|
|
|
|
|
|
|
|
EF |
|
E0 |
ACC |
|
|
|
|
|
|
|
E7 |
|
D8 |
|
|
|
|
|
|
|
|
DF |
|
D0 |
PSW |
|
|
|
|
|
|
|
D7 |
|
C8 |
|
|
|
|
|
|
|
|
CF |
|
C0 |
|
|
|
|
|
|
|
|
C7 |
|
B8 |
IP |
|
|
|
|
|
|
|
BF |
|
B0 |
P3 |
|
|
|
|
|
|
|
B7 |
|
A8 |
IE |
|
|
|
|
|
|
|
AF |
|
A0 |
P2 |
|
|
|
|
|
|
|
A7 |
|
98 |
SCON |
SBUF |
|
|
|
|
|
|
9F |
|
90 |
P1 |
|
|
|
|
|
|
|
97 |
|
88 |
TCON |
TMOD |
TLO |
TL1 |
TH0 |
TH1 |
|
|
8F |
|
80 |
P0 |
SP |
DPL |
|
|
|
|
PCON |
87 |
此行記憶體位元組可做位元定址。
在SFR內部結構圖中可以發現累加器Acc、四個輸出/輸入暫存器0、1、2及P3。
其他暫存器的功能簡介如下:
B:用於乘、除法中所使用到之暫存器。
PSW(Program Status Word):程式狀態字元暫存器。IP(Interrupt Priority Register):中斷優先暫存器。
IE(Interrupt Enable Register):中斷致能暫存器。
SCON(Serial Port Control Register):串列埠控制暫存器。
SBUF(Serial Port Buffer):串列埠資料緩衝器。
TCON(Timer/Counter Control Register):計時/計數控制暫存器。
TMOD(Timer/Counter Mode Control Register):計時/計數模式控制暫存器。
TL0:Timer 0 16位元計時/計數直之低8位元
TL1:Timer 1 16位元計時/計數直之低8位元
TH0:Timer 0 16位元計時/計數直之高8位元
TH1:Timer 1 16位元計時/計數直之高8位元
SP(Stack Pointer):堆疊指標暫存器。
DPL:DPTR(Data Pointer)資料指標暫存器16位元值之低8位元值
DPH:DPTR(Data Pointer)資料指標暫存器16位元值之高8位元值
PCON(Power Control Register):電源控制暫存器。SFR內各暫存器的值在8051重置(Reset)後,會自動設如下:
|
暫存器 |