51特殊功能暫存器
51有21個SFR(Special Function Register),分佈在內部80H~FFH單元中。這128個單元中,特殊功能暫存器僅佔用了21個單元,其餘單元51微控制器不能對它們進行讀/寫操作(即不能作內部資料儲存器使用)。單元地址可被8整除的SFR可位定址。如圖
1)累加器A或特殊功能暫存器ACC
累加器為8位暫存器,用於存放運算元,也可用來存放運算的中間結果。A和ACC雖是同一個暫存器,但是在指令中它們卻是有區別的。符號指令中的A不能用ACC代替,特殊功能暫存器直接定址和位名稱定址要用ACC,而不能用A代替。累加器自身帶有零標誌Z,累加器的值為0,零標誌Z=1;累加器的值不為0,零標誌Z=0
2)資料指示器(Data Pointer)
51中唯一能出現在符號指令中的一個16位暫存器。DPTR既可按16位暫存器使用,又可以分為兩個8位的暫存器使用,即DPH和DPL。DPTR通常用作訪問外部資料儲存器或擴充套件I/O的間接地址儲存器,還可以和累加器A一起用作程式儲存器的變址暫存器。
3)程式狀態字儲存器PSW
PSW是一個8位的暫存器,用於存放程式執行的狀態資訊。有些位的狀態是根據程式操作的結果,由硬體自動設定;有些則由指令設定。PSW的位狀態可以用專門的指令進行測試,也可以用指令讀出。一些條件轉移指令就是根據PSW有關位進行程式轉移的。PSW各位定義如圖
進位或借位標誌CY(PSW.7)
輔助進位標誌AC(PSW.6):加減運算中的低4位向高4位有進位或借位則AC=1,無進位或借位則AC=0
溢位標誌位OV(PSW.2):計算機所進行的運算都是無符號數運算,即把符號數的符號位也當作數值進行運算,又把所有數的運算結果當符號數來影響溢位標誌位。OV=1表示溢位。
奇偶標誌位P(PSW.0):表示累加器中數的奇偶性。P根據累加器中1的個數是奇數或是偶數,自動置1或清0。
暫存器組選擇位RS1和RS0(PSW.4和PSW.3):見圖
通用標誌位F0和F1(PSW.5和PSW.1):可位定址用於軟體控制的通用標誌位。有的彙編器只定義了F0,使用者可使用位定義偽指令BIT將PSW.1定義為標誌位F1。
4)堆疊和堆疊指示器SP
51微控制器的棧的伸展方向是從低地址向高地址,堆疊操作是位元組操作。