80C51內部RAM有256個單元,通常在空間上分為兩個區。
低128個單元(00H~7FH)的內部數據RAM區和高128個單元(80H~0FFH)的專用寄存器SFR區。
內部RAM低128單元
80C51低128個單元是真正的內部數據RAM區,是一個多功能復用性數據存儲器,其按用途可分為3個區域,如下圖所示:
1)工作寄存器區(00H~1FH)
工作寄存器區也稱為通用寄存器,該區域共有4組寄存器,每組由8個寄存器組成,每個單元8位,各組均以R0~R7作為寄存器編號,共32個單元,單元的地址為00H~1FH。
在任一時刻,CPU只能使用其中一組通用寄存器,稱為當前通用寄存器組,具體可由程序狀態寄存器PSW中的RS1,RS0位的狀態組合來確定。
通用寄存器位CPU提供了就近存取數據的便利,提高了工作速度,也為編程提供了方便。
2)位尋址區(20H~2FH)
內部RAM的20H~2FH共16個單元,計16*8=128位,位地址為00H~7FH。
位尋址區既可以作為一般的RAM區進行字節操作,也可以對單元的每一位進行位操作,因此稱為位尋址區,是存儲空間的一部分。
3)用戶RAM區(30H~7FH)
所剩的80個單元即為用戶RAM區,單元地址為30H~7FH,這些單元可以作為數據緩沖器使用,在一般應用中把堆棧設置在該區域中,棧頂的位置由堆棧指針SP指示。
對內部RAM低128單元的使用作幾點說明:
1>80C51內部RAM 00H~7FH單元可采用直接尋址或間接尋址方式實現數據傳送;
2>內部RAM 20H~2FH單元的位地址空間可實現位操作,當前工作寄存器組可通過軟件對PSW中的RS1,RS0位的狀態設置來選擇。
內部RAM高128單元
內部RAM高128單元是供給專用寄存器使用的,因此稱為專用寄存器區(也稱為特殊功能寄存器區,SFR區),單元地址是80H~0FFH。
80C51共有22個專用寄存器,其中程序計數器在物理上獨立的,沒有地址,故不可尋址,它不屬于SFR區。
其余的21個專用寄存器都屬于SFR區,是可尋址的,他們的單元地址離散地分布于80H~0FFH,如下表。
下面有關專用寄存器功能介紹。
1)程序計數器PC
PC是一個16位計數器,其內容為單片機將要執行的指令機器碼所在存儲單元的地址。PC具有自動加1的功能,從而實現程序的順序執行。
由于PC是不可尋址的,因此用戶無法對他進行讀/寫操作,但可以通過轉移,調用,返回等指令改變其內容,以實現程序的轉移。PC的尋址范圍為64KB,即地址空間為0000~0FFFFH。
2)累加器ACC或A
累加器ACC是8位寄存器,是最常用的專用寄存器,功能強,地位重要。它既可存放操作數,又可以存放運算的中間結果。
80C51系列單片機中許多指令的操作數來自累加器ACC。累加器非常繁忙,是單片機的執行程序瓶頸,制約了單片機工作效率的提高,現在已經有些單片機用寄存器陣列來代替累加器ACC。
3)寄存器B
寄存器B是8位寄存器,主要用于乘除運算。乘法運算時,B中存放乘數,乘法操作后,高8位結果存于B寄存器中。
除法運算時,B中存放除法,除法操作后,余數存于寄存器B中,寄存器B也可作為一般的寄存器用。
4)程序狀態字PSW
程序狀態字是8位寄存器,用于指示程序運行狀態信息。其中有些位是根據程序執行結果由硬件自動設置的,而有些位可由用戶通過指令方法設定。
PSW中各標志位名稱及定義如下:
CY:進(借)位標志位,也是位處理器的位累加器C。在加減運算中,若操作結果的最高位有進位或有借位時,CY由硬件自動置1,否則清0。
在位操作時,CY作為累加器C使用,參與進行位傳送,位與,位或等位操作。另外,某些控制轉移類指令也會影響CY位狀態。
AC:輔助進(借)位標志位。在加減運算中,當操作結果的低4位向高4位進位或借位時,此標志位由硬件自動置1,否則清0。
F0:用戶標志位,由用戶通過軟件設定,用以控制程序轉向。
RS1,RS0:寄存器組選擇位。用于設定當前通用寄存器組的組號。
通用寄存器組共有4組,其對應關系如下表:
RS1,RS0的狀態由軟件設置,被選中寄存器組為當前通用寄存器組。
OV:溢出標志位,在帶符號數(補碼數)的加減運算中,OV=1表示加減運算的結果超出了累加器A的8位符號數表示范圍(-128~+127),產生溢出,因此運算結果是錯誤的。OV=0,表示結果未超出255,結果只存在A中。
除法時,OV=1,表示除數為0。OV=0,表示除數不為0。
P:奇偶標志位,執行結果中含1的奇偶狀態,即是奇數個1,還是偶數個1。
5)數據指針DPTR
數據指針DPTR為16位寄存器,它是80C51中唯一的一個16位寄存器。編程時,既可以按16位寄存器使用,也可以作為兩個8位寄存器分開使用。
DPH為DPTR的高8位寄存器,DPL為DPTR的低8位寄存器。DPTR通常在訪問外部數據存儲器或I/O接口時作為地址指針使用,尋址范圍為64KB。
6)堆棧指針SP
在微型計算機的內存中,都需要設置一個對數據實行后進先出操作的區域,這個區域稱為堆棧。
堆棧通常是存儲器的一部分,為了保證棧區的數據能按后進先出的規則來操作,專門設置一個地址寄存器來管理,這個地址寄存器稱為堆棧指針SP,用于指示棧頂單元地址。
51系列單片機中堆棧指針SP為8位寄存器。
在51系列單片機中,當數據存入堆棧中,堆棧指針將自動加1并將數據存入堆棧指針所指的存儲單元,當需要從堆棧中取出數據時,首先將堆棧指針所指的存儲單元中的數據讀出,然后自動將堆棧指針減1。
所以堆棧指針始終指向堆棧中最后存入數據的那個單元,故稱該單元為堆棧頂棧。由于數據存入堆棧時堆棧指針自動加1(地址增大),所以稱為向上生長型堆棧。
操作規程時:進棧操作,先將SP加1,后寫入數據;出棧操作,先讀出數據,后將SP減1。
51系列單片機中,堆棧規定設在單片機的內部RAM中,同時在特殊功能寄存器中將81H設置為堆棧指針,即SP=81H,81H的內容指示了棧頂地址。
堆棧的主要功能是保護斷點和保護現場。51系列單片機系統復位時,SP=07H。
由于89C51片內RAM區有限,所以棧頂越小,堆棧深度就越深。為便于通用4組寄存器組都能使用,一般在系統初始化時使用MOV SP, #30H將棧頂設置在30H位置處。
堆棧的使用方式有兩種,一種是自動方式,在調用子程序或中斷時,返回地址自動進棧。程序返回時,斷點再自動彈回PC。這種方式無須用戶操作。
另一種指令模式,進棧指令是PUSH,出棧指令是POP。
7)電源控制及波特率選擇控制寄存器PCON
PCON為8位寄存器,主要用于控制單片機工作于低功耗模式。80C51單片機的低功耗方式有待機方式和掉電保護方式兩種。
待機方式和掉電保護方式都由專用寄存器PCON的有關位來控制。PCON寄存器不可位尋址,只能字節尋址。
PD:掉電保護位,為1時進入掉電保護方式;
IDL:待機方式位,為1時進入待機方式。
8)并行I/O端口P0~P3
專用寄存器P0,P1,P2,P3分別是并行I/O口P0~P3的數據鎖存器。在80C51系列單片機中,沒有專門的I/O口操作指令,而采用同一的MOV指令操作,把I/O口當做一般的專用寄存器使用。
9)串行數據緩沖器SBUF
串行數據緩沖器SBUF是串行口的一個專用寄存器,由一個發送緩沖器和一個接收緩沖器組成。兩個緩沖器在物理上獨立,但公用一個地址(99H)。SBUF用來存放要發送的或已接收的數據。
10)定時/計數器的專用寄存器
80C51系列單片機中有兩個16位的定時/計數器T0和T1,它們分別由兩個獨立的8位計數器組成,T0由專用寄存器TH0,TL0組成。T1由專用寄存器TH1,TL1組成。
11)控制類專用寄存器
IE,IP,TMOD,TCON,SCON寄存器是中斷系統,定時/計數器,串行口的控制寄存器,包含控制位和狀態位。控制位是編程寫入的控制操作位。
對專用寄存器的字節尋址作如下幾點說明:
1>21個可字節尋址的專用寄存器離散分散在內部RAM的高128單元,其余的空閑單元為保留區,無定義,用戶不能使用。
2>程序計數器PC是唯一不能尋址的專用寄存器,PC不占用內部RAM單元,它在物理上是獨立的。
3>對專用寄存器只能使用直接尋址方式,在指令中可寫成寄存器符號或單元地址形式。
在21個可尋址的專用寄存器中,有11個寄存器它們的字節地址都能被8整除,可以進行位尋址,即可對這些專用寄存器單元的每一位進行位操作,每一位都有固定的位地址。
評論
查看更多