- 51系列單片機開發寶典
- 趙建領等編著
- 2418字
- 2019-01-01 04:33:46
2.3 中央處理器
中央處理器(CPU)是整個單片機的核心部件。51系列單片機是8位數據寬度的處理器,能處理8位二進制數據或代碼。CPU負責控制、指揮和調度整個單元系統協調的工作,完成運算和控制輸入/輸出功能等操作。AT89S52的CPU與8051的CPU完全兼容。
中央處理器是由運算器、定時控制部件和寄存器通過總線連接而成的一個整體。
2.3.1 算術邏輯運算部件
AT89S52單片機的算術邏輯運算部件(ALU)包括運算器、累加器A、寄存器B、暫存器TMP、程序狀態寄存器PSW、堆棧指針SP、數據指針DPTR等。
算術邏輯運算部件可以進行加、減、乘、除四則運算,也可以進行與、或、非、異或等邏輯運算,還可以執行數據傳送、移位、判斷和程序轉移等功能。
51系列單片機的ALU提供了豐富的指令系統和極快的指令執行速度,大部分指令執行時間為1μs,乘法指令為4μs。AT89S52的ALU與8051的ALU完全兼容,其位處理功能非常強,這對“面向控制”特別有用,指令功能極為豐富,8位并行處理能力極強。
2.3.2 控制器
控制器包括時鐘發生器、定時控制邏輯、指令寄存器、指令譯碼器、程序計數器PC、程序地址寄存器、數據指針寄存器DPTR和堆棧指針SP等。
控制器是用來統一指揮和控制計算機進行工作的部件。它的功能是從程序存儲器中提取指令,送到指令寄存器,再送入指令譯碼器進行譯碼,并通過定時和控制電路,在規定的時刻發出各種操作所需要的全部內部控制信息及CPU外部所需要的控制信號,如ALE、、RD和WR等,使各部分協調工作,完成指令所規定的各種操作。
2.3.3 通用寄存器
寄存器是用來存放信息的單元,其優點是存取速度快、方便,寄存器的數量是衡量一臺計算機處理能力的重要標志。
51系列單片機的寄存器可分為工作寄存器(即通用寄存器)、專用寄存器和特殊功能寄存器(SFR)。特殊功能寄存器專為對應功能服務,在“數據存儲器”一節將詳細介紹。本節主要介紹通用工作寄存器R0~R7。
片內RAM的00H~1FH(共32B)空間,開辟了4個工作寄存器區,每組共有8個8位的寄存器R0~R7,通過對PSW的RS1和RS2進行設置,選擇任意一組使用,其余3組被屏蔽。其優點是,避免進棧保護,減少堆棧深度,節省出入棧指令和時間。不用的工作寄存器可作為片內RAM訪問。
2.3.4 專用寄存器
專用寄存器包括程序計數器(PC)、累加器A、寄存器B、程序狀態寄存器(PSW)、堆棧指針(SP)、數據指針(DPTR)等,下面分別介紹這幾種寄存器的功能。
1.程序計數器(PC)
程序計數器(PC)是一個16位二進制的程序地址寄存器,專門用來存放下一條需要執行指令的內存地址,能自動加1。
CPU執行指令時,根據程序計數器(PC)中的地址從存儲器中取出當前執行的指令碼,將其送給控制器分析執行,隨后程序計數器(PC)中的地址碼自動加1,以便取下一條指令碼。這樣一次次加1,指令就被一條條執行。
8051的程序計數器(PC)是由16個觸發器構成的,其編碼范圍為0000H~FFFFH,其尋址范圍為64KB。
2.累加器A
累加器A(或者ACC)是運算過程中的暫存寄存器,是一個8位二進制寄存器,用于提供操作數和存放操作結果。累加器A通過內部總線直接與ALU相連,一般的信息傳遞和交換均需通過累加器A。
3.寄存器B
寄存器B一般用于乘除法操作指令,也是一個8位二進制寄存器,由8個觸發器組成,與累加器A配合使用。寄存器中存放乘數或除數、乘積的高位字節和除法的余數。其他情冴下,可作為一般寄存器或者中間結果暫存器使用。
4.程序狀態寄存器(PSW)
程序狀態寄存器(PSW)是一個8位寄存器,用于存放指令執行后的有關狀態,為后面的指令執行提供狀態條件。PSW中的各狀態位通常是在指令執行過程中自動形成的,用戶可以根據需要改變PSW的狀態。PSW中的各狀態標志位如圖2.4所示。

圖2.4 PSW中的狀態標志位
PSW中的各狀態標志位說明如下。
◆ Cy:高位進位標志位。如果指令運算結果高位產生進位或借位,則Cy被置為“1”,否則為“0”。它在位處理指令中作為累加器用,所以又稱為“布爾累加器”。
◆ AC:輔助進位標志位。根據指令運算結果的低4位即D3有無向高4位D4進位或借位,來進行置位。如果有進位或借位,則置AC為“1”,否則為“0”。AC也常被稱為半字節進位標志位,常用于BCD碼調整。
◆ F0:用戶標志位。該標志位不是在指令執行過程中自動形成的,是由用戶根據需要通過傳送指令設置的。該標志位可用于決定用戶程序的走向。
◆ RS1 和RS0:工作寄存器選擇標志位。用于選擇內部RAM的4組工作寄存器的某組置于前臺,每個寄存器由8個8位寄存器(R0~R7)組成。通過改變RS1和RS0,可以決定通用寄存器的實際物理地址。這兩者之間的關系如表2.1所示。
表2.1 RS1、RS0與寄存器R0~R7間對應關系
◆ OV:溢出標志位。當運算結果數值的絕對值超過允許的最大值時,就會產生溢出。由機器在程序執行過程中自動形成,當運算結果數的A7或A6其中的一位產生進位或借位時,OV位自動置“1”,否則置“0”。其邏輯表達式為OV=A7⊕A6。
◆ —:保留位,無定義,用戶不能使用。
◆ P :奇偶校驗標志位。邏輯運算后,運算結果中的1的個數為奇數,則P位自動置“1”,否則置“0”。
5.堆棧指針(SP)
堆棧是一組編有地址碼的特殊存儲單元。堆棧指針(SP)是在片內RAM中開辟一個存儲區域,專門存放堆棧棧頂的地址。堆棧指針SP是一個8位增量寄存器,堆棧深度為0~255個存儲單元。
數據進棧時,SP自動增1,將數據壓入SP所指向的堆棧單元;彈出時,將SP所指向的堆棧單元內的數據推出棧,然后SP自動減1。SP總是指向棧頂,按照“先進后出、后進先出”的原則進行數據存取。
在系統復位后,棧指針SP的初始值為07H,即棧底為08H單元。這樣就與工作寄存器區域重疊,必須重新定義SP,在片內RAM中開辟一個合適的堆棧區域。
6.數據指針(DPTR)
數據指針(DPTR)是一個16位寄存器,由8位寄存器DPH和DPL組合而成。其中DPH為DPTR的高8位,DPL為DPTR的低8位。它既可以作為16位數據指針使用,也可以分開以8位寄存器(DPH、DPL)單獨使用。DPTR可以用來存放片內ROM的地址,也可以存放片外RAM和片外ROM的地址。
AT89S52設有2個DPTR,分別為DP0(DP0H、DP0L)和DP1(DP1H、DP1L),通過對特殊功能寄存器AUXR1的DPS位進行設置來選擇不同的DPTR。當DPS=0,選擇DP0;當DPS=1,選擇DP1。