PSW.7(CY) 進位標誌位,此位有兩個功能:一是存放執行某寫算數運算時,存放進位標誌,可被硬體或軟體置位或清零。二是在位操作中作累加位使用。 PSW.6(AC) 輔助進位標誌位,當進行加、減運算時當有低4位向高4位進位或借位時,AC置位,否則被清零。AC輔助進位位也常用於十進位調整。 PSW.5(F0) 用戶標誌位,供用戶設置的標誌位。 PSW.4、PSW.3(RS1和 RS0) 寄存器組選擇位。可參見本章的圖2定義。 PSW.2(OV) 溢出標誌。帶符號加減運算中,超出了累加器A所能表示的符號數有效範圍(-128—+127)時,即產生溢出,OV=1。表明運算運算結果錯誤。如果OV=0,表明運算結果正確。 執行加法指令ADD時,當位6向位7進位,而位7不向C進位時,OV=1。或者位6不向位7進位,而位7向C進位時,同樣OV=1。 除法指令,乘積超過255時,OV=1。表面乘積在AB寄存器對中。若OV=0,則說明乘積沒有超過255,乘積只在累加器A中。 除法指令,OV=1,表示除數為0,運算不被執行。否則OV=0。 PSW.0(P) 奇偶校驗位。聲明累加器A的奇偶性,每個指令周期都由硬體來置位或清零,若值為1的位數奇數,則P置位,否則清零。 數據指針(DPTR) 數據指針為16位寄存器,編程時,既可以按16位寄存器來使用,也可以按兩個8位寄存器來使用,即高位位元組寄存器DPH和低位位元組DPL。 DPTR主要是用來保存16位地址,當對64kB外部數據存儲器定址時,可作為間址寄存器使用,此時,使用如下兩條指令: MOVX A, @DPTR MOVX @DPTR, A 在訪問程序存儲器時,DPTR可用來作基址寄存器,採用基址+變址定址方式訪問程序存儲器,這條指令常用於讀取程序存儲器內的表格數據。 MOVC A, @A+@DPTR 堆棧指針SP(Stack Pointer) 堆棧是一種數據結構,它是一個8位寄存器,它指示堆棧頂部在內部RAM中的位置。系統複位后,SP的初始值為07H,使得堆棧實際上是從08H開始的。但我們從RAM的結構分佈中可知,08H—1FH隸屬1—3工作寄存器區,若編程時需要用到這些數據單元,必須對堆棧指針SP進行初始化,原則上設在任何一個區域均可,但一般設在30H—1FH之間較為適宜。
|  | 轉入中斷服務程序或子程序時,需要保存的數據可能有若干個,都需要一一地保留。如果微處理器進行多重子程序或中斷服務程序嵌套,那麼需保存的數據就更多,這要求堆棧還需要有相當的容量。否則會造成堆棧溢出,丟失應備份的數據。輕者使運算和執行結果錯誤,重則使整個程序紊亂。 MCS-51的堆棧是在RAM中開闢的,即堆棧要佔據一定的RAM存儲單元。同時MCS-51的堆棧可以由用戶設置,SP的初始值不同,堆棧的位置則不一定,不同的設計人員,使用的堆棧區則不同,不同的應用要求,堆棧要求的容量也有所不同。堆棧的操作只有兩種,即進棧和出棧,但不管是向堆棧寫入數據還是從堆棧中讀出數據,都是對棧頂單元進行的,SP就是即時指示出棧頂的位置(即地址)。在子程序調用和中斷服務程序響應的開始和結束期間,CPU都是根據SP指示的地址與相應的RAM存儲單元交換數據。 堆棧的操作有兩種方法:其一是自動方式,即在中斷服務程序響應或子程序調用時,返回地址自動進棧。當需要返回執行主程序時,返回的地址自動交給PC,以保證程序從斷點處繼續執行,這種方式是不需要編程人員干預的。第二種方式是人工指令方式,使用專有的堆棧操作指令進行進出棧操作,也只有兩條指令:進棧為PUSH指令,在中斷服務程序或子程序調用時作為現場保護。出棧操作POP指令,用於子程序完成時,為主程序恢復現場。 I/O口專用寄存器(P0、P1、P2、P3) I/O口寄存器P0、P1、P2和P3分別是MCS-51單片機的四組I/O口鎖存器。MCS-51單片機並沒有專門的I/O口操作指令,而是把I/O口也當作一般的寄存器來使用,數據傳送都統一使用MOV指令來進行,這樣的好處在於,四組I/O口還可以當作寄存器直接定址方式參與其他操作。 定時/計數器(TL0、TH0、TL1和TH1) MCS-51單片機中有兩個16位的定時/計數器T0和T1,它們由四個8位寄存器組成的,兩個16位定時/計數器卻是完全獨立的。我們可以單獨對這四個寄存器進行定址,但不能把T0和T1當作16位寄存來使用。 定時/計數器方式選擇寄存器(TMOD) TMOD寄存器是一個專用寄存器,用於控制兩個定時計數器的工作方式,TMOD可以用位元組傳送指令設置其內容,但不能位定址,各位的定義如下,更詳細的內容,我們將在《MCS-51定時器和中斷系統》章節中敘述。 | 表4 定時/計數器工作方式控制寄存器 TMOD | 位序 | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 位標誌 | GATE |  | M1 | M0 | GATE |  | M1 | M0 | | 定時/計數器1 | 定時/計數器0 | 串列數據緩衝器(SBUF) 串列數據緩衝器SBUF用來存放需發送和接收的數據,它由兩個獨立的寄存器組成,一個是發送緩衝器,另一個是接收緩衝器,要發送和接收的操作其實都是對串列數據緩衝器進行。 其他控制寄存器(TMOD) 除了以上我們簡述的幾個專用寄存外,還有IP、IE、TCON、SCON和PCON等幾個寄存器,這幾個控制寄存器主要用於中斷和定時的,我們將在《MCS-51定時器和中斷系統》中詳細說明。 | |