天天看點

第十二課:51單片機的特殊功能寄存器

通過前面課程的學習,我們已知道了單片機的内部有ROM、有RAM、有并行I/O口,那麼,除了這些東西之外,單片機内部究竟還有些什麼?這些個零碎的東西怎麼連在一起的?

下面就讓我們來對單片機内部作一個完整的分析吧!

第十二課:51單片機的特殊功能寄存器

從圖中我們可以看出,在51單片機内部有一個CPU用來運算、控制,有四個并行I/O口,分别是P0、P1、P2、P3,有ROM,用來存放程式,有RAM,用來存放中間結果,此外還有定時/計數器,串行I/O口,中斷系統,以及一個内部的時鐘電路。在一個51單片機的内部包含了這麼多的東西。

對圖進行進一步的分析,我們已知,對并行I/O口的讀寫隻要将資料送入到相應I/O口的鎖存器就可以了,那麼對于定時/計數器,串行I/O口等怎麼用呢?在單片機中有一些獨立的存儲單元是用來控制這些器件的,被稱之為特殊功能寄存器(SFR)。事實上,我們已接觸過P1這個特殊功能寄存器了,還有哪些呢?看下表

符号 位址 功能介紹
B F0H B寄存器
ACC   E0H 累加器
PSW   D0H 程式狀态字
IP   B8H 中斷優先級控制寄存器
P3   B0H P3口鎖存器
IE   A8H 中斷允許控制寄存器
P2   A0H P2口鎖存器
SBUF 99H 串行口鎖存器
SCON 98H 串行口控制寄存器
P1   90H P1口鎖存器
TH1   8DH 定時器/計數器1(高8位)
TH0 8CH 定時器/計數器1(低8位)
TL1 8BH 定時器/計數器0(高8位)
TL0   8AH 定時器/計數器0(低8位)
TMOD 89H 定時器/計數器方式控制寄存器
TCON 88H 定時器/計數器控制寄存器
DPH   83H 資料位址指針(高8位)
DPL 82H 資料位址指針(低8位)
SP 81H 堆棧指針
P0 80H P0口鎖存器
PCON 87H 電源控制寄存器

下面,我們介紹一下幾個常用的SFR。

1、ACC---是累加器,通常用A表示。

這是個什麼東西,可不能從名字上了解,它是一個寄存器,而不是一個做加法的東西,為什麼給它這麼一個名字呢?或許是因為在運算器做運算時其中一個數一定是在ACC中的緣故吧。它的名字特殊,身份也特殊,稍後在中篇中我們将學到指令,可以發現,所有的運算類指令都離不開它。自身帶有全零标志Z,若A=0則Z=1;若A≠0則z=0。該标志常用作程式分枝轉移的判斷條件。

2、B--一個寄存器。

在做乘、除法時放乘數或除數,不做乘除法時,随你怎麼用。

3、PSW-----程式狀态字。這是一個很重要的東西,裡面放了CPU工作時的很多狀态,借此,我們可以了解CPU的目前狀态,并作出相應的處理。它的各位功能請看下表:

D7 D6 D5 D4 D3 D2 D1 D0
CY   AC F0 RS1 RS0 OV   P

下面我們逐一介紹各位的用途

CY:進位标志。8051中的運算器是一種8位的運算器,我們知道,8位運算器隻能表示到0-255,如果做加法的話,兩數相加可能會超過255,這樣最高位就會丢失,造成運算的錯誤,怎麼辦?最高位就進到這裡來。這樣就沒事了。有進、借位,CY=1;無進、借位,CY=0

例:78H+97H(01111000+10010111)

AC:輔助進、借位(高半位元組與低半位元組間的進、借位)。

例:57H+3AH(01010111+00111010)

F0:使用者标志位,由使用者(程式設計人員)決定什麼時候用,什麼時候不用。

RS1、RS0:工作寄存器組選擇位。這個我們已知了。

0V:溢出标志位。運算結果按補碼運算了解。有溢出,OV=1;無溢出,OV=0。什麼是溢出我們後面的章節會講到。

P:奇偶校驗位:它用來表示ALU運算結果中二進制數位“1”的個數的奇偶性。若為奇數,則P=1,否則為0。運算結果有奇數個1,P=1;運算結果有偶數個1,P=0。

例:某運算結果是78H(01111000),顯然1的個數為偶數,是以P=0。

4、P0、P1、P2、P3------這個我們已經知道,是四個并行輸入/輸出口的寄存器。它裡面的内容對應着管腳的輸出。

5、IE-----中斷充許寄存器

按位尋址,位址:A8H

B7 B6 B5 B4 B3 B2 B1 B0
EA   - ET2 ES ET1 EX1 ET0 EX0

EA (IE.7):EA=0時,所有中斷禁止(即不産生中斷)

EA=1時,各中斷的産生由個别的允許位決定

- (IE.6):保留

ET2(IE.5):定時2溢出中斷充許(8052用)

ES (IE.4):串行口中斷充許(ES=1充許,ES=0禁止)

ET1(IE.3):定時1中斷充許

EX1(IE.2):外中斷INT1中斷充許

ET0(IE.1):定時器0中斷充許

EX0(IE.0):外部中斷INT0的中斷允許

7、IP-----中斷優先級控制寄存器

按位尋址,位址位B8H

6、指針寄存器

(1)程式計數器PC

指明即将執行的下一條指令的位址,16位,尋址64KB範圍,

複位時PC = 0000H

(2)堆棧指針SP

指明棧頂元素的位址,8位,可軟體設定初值,複位時SP = 07H

(3)資料指針DPTR

@R0、@R1、@DPTR;指明通路的資料存儲器的單元位址,16位,尋址範圍64KB。 DPTR = DPH + DPL。可以用它來通路外部資料存儲器中的任一單元,如果不用,也可以作為通用寄存器來用,由我們自已決定如何使用。分成DPL(低8位)和DPH(高8位)兩個寄存器。用來存放16位位址值,以便用間接尋址或變址尋址的方式對片外資料RAM或程式存儲器作64K位元組範圍内的資料操作。

7、定時/計數器

(1)定時器方式寄存器:TMOD

(2)定時器控制寄存器:TCON

(3)計數寄存器:TH0、TL0;TH1、TL1。可用于設定計數初值。

8052/8032增設專用寄存器

(1) 定時器2控制寄存器T2CON;控制、設定工作方式。

(2) 計數寄存器:TH2、TL2

(3) 定時器2捕獲/重裝載寄存器:RCAP2H、RCAP2L

存放自動重裝載到TH2、TL2的資料。

繼續閱讀