51单片机的特殊寄存器
文章目錄
- 內(nèi)部高128個字節(jié)是SFR區(qū)
- 特殊寄存器
- (1)ACC——累加器
- (2)B——一個寄存器
- (3)PSW——程序狀態(tài)字
- (4)DPTR(DPH、DPL) ——數(shù)據(jù)指針
- (5)P0、P1、P2、P3——四個并行輸入/輸出口的寄存器。
- (6)IE——中斷充許寄存器
- (7)TCON——定時器/計數(shù)器控制寄存器
- (8) TMOD寄存器:定時器/計數(shù)器工作方式寄存器
- (9) SUBF寄存器: 串行數(shù)據(jù)緩沖器(一個接收一個發(fā)送)
- (10) SCON寄存器: 串行口控制寄存器
內(nèi)部高128個字節(jié)是SFR區(qū)
21個SFR(特殊功能寄存器)離散分布(只能使用直接尋址的方式)。
至于什么叫不可尋址,則是指不能單獨(dú)進(jìn)行每一位的操作,如TMOD定時器工作模式及工作方式寄存器,在進(jìn)行操作時,只能寫TMOD=0xXX。
關(guān)于能否進(jìn)行位操作,可以通過查相關(guān)資料知道,當(dāng)然還有個技巧就是其字節(jié)地址換成10進(jìn)制后能否被“8”整除,能被“8”整除的就能進(jìn)行位操作,不能被“8”整除就不能,如P1地址為90H,10進(jìn)制為144, 144/8=18,能被整除,所以可以位操作。再如TMOD地址為89H, 10進(jìn)制為137,137/8=17.125,不能被整除,所以不可以位操作。
特殊寄存器
| ACC | E0H | 累加器 |
| B | F0H | B寄存器 |
| PSW | D0H | 程序狀態(tài)字 |
| SP | 81H | 棧頂指針 |
| DPL | 82H | 數(shù)據(jù)指針低8位 |
| DPH | 83H | 數(shù)據(jù)指針高8位 |
| IE | A8H | 中斷允許控制寄存器 |
| IP | B8H | 中斷優(yōu)先控制寄存器 |
| P0 | 80H | I/O口0 |
| P1 | 90H | I/O口1 |
| P2 | A0H | I/O口2 |
| P3 | B0H | I/O口3 |
| PCON | 87H | 電源控制及波特率選擇寄存器 |
| SCON | 98H | 串行口控制寄存器 |
| SBUF | 99H | 串行口數(shù)據(jù)緩沖寄存器 |
| TCON | 88H | 定時器控制寄存器 |
| TMOD | 89H | 定時器方式選擇寄存器 |
| TL0 | 8AH | 定時器0低8位 |
| TL1 | 8BH | 定時器1低8位 |
| TH0 | 8CH | 定時器0高8位 |
| TH1 | 8DH | 定時器1高8位 |
(1)ACC——累加器
通常用A表示。該標(biāo)志常用于程序分支轉(zhuǎn)移的判斷條件。
(2)B——一個寄存器
在做乘、除法時放乘數(shù)或除數(shù)。
(3)PSW——程序狀態(tài)字
存放CPU工作時的狀態(tài)。
| CY | AC | F0 | RS1 | RS0 | OV | P |
用途:
-
CY:進(jìn)位標(biāo)志。
-
AC:輔助進(jìn)、借位(高半字節(jié)與低半字節(jié)間的進(jìn)、借位)。
-
F0:用戶標(biāo)志位,由用戶(編程人員)決定什么時候用,什么時候不用。
-
RS1、RS0:工作寄存器組選擇位。
-
OV:溢出標(biāo)志位。運(yùn)算結(jié)果按補(bǔ)碼運(yùn)算理解。有溢出,OV=1;無溢出,OV=0。
-
P:奇偶校驗(yàn)位:它用來表示ALU運(yùn)算結(jié)果中二進(jìn)制數(shù)位“1”的個數(shù)的奇偶性。
(4)DPTR(DPH、DPL) ——數(shù)據(jù)指針
可以用它來訪問外部數(shù)據(jù)存儲器中的任一單元,如果不用,也可以作為通用寄存器來用,由我們自已決定如何使用。分成DPL(低8位)和DPH(高8位)兩個寄存器。用來存放16位地址值,以便用間接尋址或變址尋址的方式對片外數(shù)據(jù)RAM或程序存儲器作64K字節(jié)范圍內(nèi)的數(shù)據(jù)操作。(5)P0、P1、P2、P3——四個并行輸入/輸出口的寄存器。
(6)IE——中斷充許寄存器
按位尋址,地址:A8H。
| EA | - | ET2 | ES | ET1 | EX1 | ET0 | EX0 |
-
EA (IE.7): EA=0時,所有中斷禁止(即不產(chǎn)生中斷)
EA=1時,各中斷的產(chǎn)生由個別的允許位決定 -
-(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的中斷允許
中斷的自然優(yōu)先級:
| 0 | 外部中斷0 | IE0 | EX0 | 03H | 1(最高) |
| 1 | 定時器T0中斷 | TF0 | ET0 | 0BH | 2 |
| 2 | 外部中斷1 | IE1 | EX1 | 13H | 3 |
| 3 | 定時器T1中斷 | TF1 | ET1 | 1BH | 4 |
| 4 | UART中斷(串口) | T1/R1 | ES | 23H | 5 |
(7)TCON——定時器/計數(shù)器控制寄存器
字節(jié)地址為88H,可以位尋址。
| 位符號 | TF1 | TR1 | TF0 | TR0 | IE1 | IT1 | IE0 | IT0 |
| 位地址 | 8FH | 8EH | 8DH | 8CH | 8BH | 8AH | 89H | 88H |
-
TF1: 定時器1溢出標(biāo)志位,當(dāng)定時器1計滿溢出時,由硬件將TF1置1,并申請中斷;進(jìn)入中斷服務(wù)程序后,由硬件自動清零。
-
TR1: 定時器1運(yùn)行控制位: TR=1表示啟動定時器,需要配合GATE和INT1。
- 當(dāng)GATE=1,且INT1為高電平時,TR1置1啟動定時器。
- 當(dāng)GATE=0時,TR1置1啟動定時器1。
-
TF0: 定時器0溢出標(biāo)志位,功能和用法同TF1.
-
TR0: 定時器0運(yùn)行控制位,功能和用法同TR1.
-
IE1: 外部中斷1請求標(biāo)志位.
-
IT1=0時,為電平觸發(fā)方式,每個機(jī)器周期的S5P2采樣INT1引腳,若INT1腳為高電平,則置1;否則IE1清0.
-
IT1=0時,為跳變沿觸發(fā)方式,當(dāng)?shù)谝粋€機(jī)器周期采樣到INT1為低電平時,將IE1置1,表示外部中斷1正在向CPU請求中斷.當(dāng)CPU響應(yīng),轉(zhuǎn)向中斷服務(wù)程序時,IE1由硬件清零.
-
-
IT1: 外部中斷1觸發(fā)方式選擇位.
- IT1=0時,為電平觸發(fā)方式,引腳INT1上的低電平有效.
- IT1=1時,為跳變沿觸發(fā)方式,引腳INT1上的電平從高到低的負(fù)跳變有效.
-
IE0: 外部中斷0請求標(biāo)志位,功能和用法同IE1.
-
IT0: 外部中斷0觸發(fā)方式選擇位,功能和用法同IT1.
(8) TMOD寄存器:定時器/計數(shù)器工作方式寄存器
TMOD寄存器: 定時器/計數(shù)器工作方式寄存器.字節(jié)地址為89H,不能位尋址.
| GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0 |
| 定時器1 | 定時器0 | ||||||
-
GATE: 門控制位
- GATE=0時,定時器/計數(shù)器啟動與停止僅受TCON寄存器中的TRX(X=0/1)來控制.
- GATE=1時,定時器/計數(shù)器啟動與停止由TCON寄存器中的TRX(X=0/1)和外部中斷引腳(INT0或INT1)上的電平狀態(tài)共同控制.
-
C/T ̄\overline{T}T: 定時器模式和計數(shù)器模式選擇位
- C/T ̄\overline{T}T=1時為計數(shù)器模式
- C/T ̄\overline{T}T=0時為定時器模式
-
M1,M0: 工作方式選擇位
定時器T0有4種工作方式:方式0,方式1,方式2,方式3。
設(shè)置定時器T1為方式3會讓它進(jìn)入關(guān)閉狀態(tài)。通常情況下,T0不運(yùn)行于工作方式3,只有在T1處于工作方式2,并不要求中斷的條件下才可能使用。這時,T1往往用作串行口波特率發(fā)生器,TH0用作定時器,TL0作為定時器或計數(shù)器。
定時器T1有3種工作方式:方式0,方式1,方式2。
(9) SUBF寄存器: 串行數(shù)據(jù)緩沖器(一個接收一個發(fā)送)
當(dāng)發(fā)送使用時,就采用SBUF=XXX; (XXX為需要傳送的數(shù)據(jù))
當(dāng)接收使用時,采用XXX=SBUF;
(10) SCON寄存器: 串行口控制寄存器
它用于控制串行通信的方式選擇、接收和發(fā)送,指示串口的狀態(tài)。SCON既可以字節(jié)尋址,也可以位尋址。
| SM0 | SM1 | SM2 | REN | TB8 | RB8 | TI | RI |
| 9FH | 9EH | 9DH | 9CH | 9BH | 9AH | 99H | 98H |
-
SM0, SM1:串行口工作方式控制位。
-
SM0SM1工作方式功能波特率 0 0 方式0 8位同步移位寄存器 晶振頻率/12 0 1 方式1 10位UART 可變 1 0 方式2 11位UART 晶振頻率/64或晶振頻率/32 1 1 方式3 11位UART 可變 -
工作方式0:串行口為同步移位寄存器的輸入輸出方式。主要用于擴(kuò)展并行輸入或輸出口。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。
-
工作方式1:方式1是10位數(shù)據(jù)的異步通信口。TXD為數(shù)據(jù)的發(fā)送引腳,RXD是數(shù)據(jù)的接受引腳。傳送一幀數(shù)據(jù)的格式為1位起始位,8位數(shù)據(jù)位,1位停止位。
-
方式2或方式3:方式2或方式3時,為11位數(shù)據(jù)的異步通信口,TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳。起始位1位、數(shù)據(jù)位9位(含附加的第九位,發(fā)送時為SCON中的TB8,接收時為SCON中的RB8)、停止位1位,一幀數(shù)據(jù)為11位。方式2的波特率固定為晶振頻率的1/32或1/64。方式3的波特率由定時器T1的溢出率決定。
-
SM2:多機(jī)通信控制位。
多機(jī)通信是工作于方式2和方式3,即SM2主要用于方式2和方式3。當(dāng)串行口工作于方式2或3,以及SM2=1時,只有當(dāng)接收到第9位數(shù)據(jù)(RB8)為1時,才把接收到的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請,否則會將接收到的數(shù)據(jù)放棄。當(dāng)SM2=0時,就不管第9位數(shù)據(jù)是0還是1,都會將數(shù)據(jù)送入SBUF,并發(fā)出中斷申請。
- REN:允許接受位。
REN=1:允許接收
REN=0:禁止接收
- TB8:發(fā)送數(shù)據(jù)位8.
在方式2和方式3中,TB8是要發(fā)送的——即第9位數(shù)據(jù)位。在多機(jī)通信中同樣亦要傳輸這一位,并且它代表傳輸?shù)牡刂愤€是數(shù)據(jù),TB8=0為數(shù)據(jù),TB8=1時為地址。
- RB8:接收數(shù)據(jù)位8(一般配置為0)。
在方式2和方式3中,RB8存放接收到的第9位數(shù)據(jù),用以識別接收到的數(shù)據(jù)特征。
- TI:發(fā)送中斷標(biāo)志位。
可尋址標(biāo)志位。方式0時,發(fā)送完第8位數(shù)據(jù)后,由硬件置位,其它方式下,在發(fā)送或停止位之前由硬件置位,因此,TI=1表示幀發(fā)送結(jié)束,TI可由軟件清“0”。
- RI:接收中斷標(biāo)志位。
可尋址標(biāo)志位。接收完第8位數(shù)據(jù)后,該位由硬件置位,在其他工作方式下,該位由硬件置位,RI=1表示幀接收完成。
在配置串口初始化程序的時候,我們一般只用配置高四位,如果我們選擇工作方式1,那么就是SCON=0X50;(SM0=0,SM1=1,SM2=0,REN=1)
總結(jié)
以上是生活随笔為你收集整理的51单片机的特殊寄存器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最全的IDEA配置JDK1.8语法支持步
- 下一篇: idea运行项目出现 Module wa