內(nèi)部高128個(gè)字節(jié)是SFR區(qū)
21個(gè)SFR(特殊功能寄存器)離散分布(只能使用直接尋址的方式)。
至于什么叫不可尋址,則是指不能單獨(dú)進(jìn)行每一位的操作,如TMOD定時(shí)器工作模式及工作方式寄存器,在進(jìn)行操作時(shí),只能寫TMOD=0xXX 。
關(guān)于能否進(jìn)行位操作,可以通過查相關(guān)資料知道,當(dāng)然還有個(gè)技巧就是其字節(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 ,不能被整除,所以不可以位操作。
特殊寄存器


(1)ACC——累加器
通常用A表示。該標(biāo)志常用于程序分支轉(zhuǎn)移的判斷條件。
(2)B——一個(gè)寄存器
在做乘、除法時(shí)放乘數(shù)或除數(shù)。
(3)PSW——程序狀態(tài)字
存放CPU工作時(shí)的狀態(tài)。
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
|
P |
用途 :
- CY :進(jìn)位標(biāo)志。
- AC :輔助進(jìn)、借位(高半字節(jié)與低半字節(jié)間的進(jìn)、借位)。
- F0 :用戶標(biāo)志位,由用戶(編程人員)決定什么時(shí)候用,什么時(shí)候不用。
- 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”的個(gè)數(shù)的奇偶性。
(4)DPTR(DPH、DPL) ——數(shù)據(jù)指針
可以用它來訪問外部數(shù)據(jù)存儲(chǔ)器中的任一單元,如果不用,也可以作為通用寄存器來用,由我們自已決定如何使用。分成DPL(低8位)和DPH(高8位)兩個(gè)寄存器。用來存放16位地址值,以便用間接尋址或變址尋址的方式對(duì)片外數(shù)據(jù)RAM或程序存儲(chǔ)器作64K字節(jié)范圍內(nèi)的數(shù)據(jù)操作。
(5)P0、P1、P2、P3——四個(gè)并行輸入/輸出口的寄存器。
(6)IE——中斷充許寄存器
按位尋址,地址:A8H。
B7 |
B6 |
B5 |
B4 |
B3 |
B2 |
B1 |
B0 |
EA |
- |
ET2 |
ES |
ET1 |
EX1 |
ET0 |
EX0 |
- EA (IE.7): EA=0時(shí),所有中斷禁止(即不產(chǎn)生中斷)
EA=1時(shí),各中斷的產(chǎn)生由個(gè)別的允許位決定 - -(IE.6) :保留
- ET2(IE.5):定時(shí)2溢出中斷充許(8052用)
- ES (IE.4):串行口中斷充許(ES=1充許,ES=0禁止)
- ET1(IE.3):定時(shí)1中斷充許
- EX1(IE.2):外中斷INT1中斷充許
- ET0(IE.1):定時(shí)器0中斷充許
- EX0(IE.0):外部中斷INT0的中斷允許
中斷的自然優(yōu)先級(jí) :
中斷函數(shù)編號(hào) |
中斷名稱 |
中斷標(biāo)志位 |
中斷使能位 |
中斷向量地址 |
默認(rèn)優(yōu)先級(jí) |
0 |
外部中斷0 |
IE0 |
EX0 |
03H |
1(最高) |
1 |
定時(shí)器T0中斷 |
TF0 |
ET0 |
0BH |
2 |
2 |
外部中斷1 |
IE1 |
EX1 |
13H |
3 |
3 |
定時(shí)器T1中斷 |
TF1 |
ET1 |
1BH |
4 |
4 |
UART中斷(串口) |
T1/R1 |
ES |
23H |
5 |
(7)TCON——定時(shí)器/計(jì)數(shù)器控制寄存器
字節(jié)地址為88H,可以位尋址。
位序號(hào) |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位符號(hào) |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
位地址 |
8FH |
8EH |
8DH |
8CH |
8BH |
8AH |
89H |
88H |
TF1: 定時(shí)器1溢出標(biāo)志位,當(dāng)定時(shí)器1計(jì)滿溢出時(shí),由硬件將TF1置1,并申請(qǐng)中斷;進(jìn)入中斷服務(wù)程序后,由硬件自動(dòng)清零。
TR1: 定時(shí)器1運(yùn)行控制位: TR=1表示啟動(dòng)定時(shí)器,需要配合GATE和INT1。
- 當(dāng)GATE=1,且INT1為高電平時(shí),TR1置1啟動(dòng)定時(shí)器。
- 當(dāng)GATE=0時(shí),TR1置1啟動(dòng)定時(shí)器1。
TF0: 定時(shí)器0溢出標(biāo)志位,功能和用法同TF1.
TR0: 定時(shí)器0運(yùn)行控制位,功能和用法同TR1.
IE1: 外部中斷1請(qǐng)求標(biāo)志位.
- IT1=0時(shí),為電平觸發(fā)方式,每個(gè)機(jī)器周期的S5P2采樣INT1引腳,若INT1腳為高電平,則置1;否則IE1清0.
- IT1=0時(shí),為跳變沿觸發(fā)方式,當(dāng)?shù)谝粋€(gè)機(jī)器周期采樣到INT1為低電平時(shí),將IE1置1,表示外部中斷1正在向CPU請(qǐng)求中斷.當(dāng)CPU響應(yīng),轉(zhuǎn)向中斷服務(wù)程序時(shí),IE1由硬件清零.
IT1: 外部中斷1觸發(fā)方式選擇位.
- IT1=0時(shí),為電平觸發(fā)方式,引腳INT1上的低電平有效.
- IT1=1時(shí),為跳變沿觸發(fā)方式,引腳INT1上的電平從高到低的負(fù)跳變有效.
IE0: 外部中斷0請(qǐng)求標(biāo)志位,功能和用法同IE1.
IT0: 外部中斷0觸發(fā)方式選擇位,功能和用法同IT1.
(8) TMOD寄存器:定時(shí)器/計(jì)數(shù)器工作方式寄存器
TMOD寄存器: 定時(shí)器/計(jì)數(shù)器工作方式寄存器.字節(jié)地址為89H,不能位尋址.
位序號(hào) |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位符號(hào) |
GATE |
C/T |
M1 |
M0 |
GATE |
C/T |
M1 |
M0 |
控制的定時(shí)器 |
定時(shí)器1 |
定時(shí)器0 |
|
|
|
|
|
|
GATE: 門控制位
- GATE=0時(shí),定時(shí)器/計(jì)數(shù)器啟動(dòng)與停止僅受TCON寄存器中的TRX(X=0/1)來控制.
GATE=1時(shí),定時(shí)器/計(jì)數(shù)器啟動(dòng)與停止由TCON寄存器中的TRX(X=0/1)和外部中斷引腳(INT0或INT1)上的電平狀態(tài)共同控制.
C/T ‾ overline{T}T: 定時(shí)器模式和計(jì)數(shù)器模式選擇位
- C/T ‾ overline{T}T=1時(shí)為計(jì)數(shù)器模式
C/T ‾ overline{T}T=0時(shí)為定時(shí)器模式
M1,M0: 工作方式選擇位
定時(shí)器T0有4種工作方式:方式0,方式1,方式2,=方式3= 。
設(shè)置定時(shí)器T1為方式3會(huì)讓它進(jìn)入關(guān)閉狀態(tài)。通常情況下,T0不運(yùn)行于工作方式3,只有在T1處于工作方式2,并不要求中斷的條件下才可能使用。這時(shí),T1往往用作串行口波特率發(fā)生器,TH0用作定時(shí)器,TL0作為定時(shí)器或計(jì)數(shù)器。
定時(shí)器T1有3種工作方式:方式0,方式1,方式2。
(9) SUBF寄存器: 串行數(shù)據(jù)緩沖器(一個(gè)接收一個(gè)發(fā)送)
當(dāng)發(fā)送使用時(shí),就采用SBUF=XXX; (XXX為需要傳送的數(shù)據(jù))
當(dāng)接收使用時(shí),采用XXX=SBUF;
(10) SCON寄存器: 串行口控制寄存器
它用于控制串行通信的方式選擇、接收和發(fā)送,指示串口的狀態(tài)。SCON既可以字節(jié)尋址,也可以位尋址。
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
SM0 |
SM1 |
SM2 |
REN |
TB8 |
RB8 |
TI |
RI |
9FH |
9EH |
9DH |
9CH |
9BH |
9AH |
99H |
98H |
SM0, SM1:串行口工作方式控制位。
SM0 |
SM1 |
工作方式 |
功能 |
波特率 |
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時(shí),為11位數(shù)據(jù)的異步通信口,TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳。起始位1位、數(shù)據(jù)位9位(含附加的第九位,發(fā)送時(shí)為SCON中的TB8,接收時(shí)為SCON中的RB8)、停止位1位,一幀數(shù)據(jù)為11位。方式2的波特率固定為晶振頻率的1/32或1/64。方式3的波特率由定時(shí)器T1的溢出率決定。
SM2:多機(jī)通信控制位。
多機(jī)通信是工作于方式2和方式3,即SM2主要用于方式2和方式3。當(dāng)串行口工作于方式2或3,以及SM2=1時(shí),只有當(dāng)接收到第9位數(shù)據(jù)(RB8)為1時(shí),才把接收到的前8位數(shù)據(jù)送入SBUF,且置位RI發(fā)出中斷申請(qǐng),否則會(huì)將接收到的數(shù)據(jù)放棄。當(dāng)SM2=0時(shí),就不管第9位數(shù)據(jù)是0還是1,都會(huì)將數(shù)據(jù)送入SBUF,并發(fā)出中斷申請(qǐng)。
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時(shí)為地址。
RB8:接收數(shù)據(jù)位8(一般配置為0)。
在方式2和方式3中,RB8存放接收到的第9位數(shù)據(jù),用以識(shí)別接收到的數(shù)據(jù)特征。
TI:發(fā)送中斷標(biāo)志位。
可尋址標(biāo)志位。方式0時(shí),發(fā)送完第8位數(shù)據(jù)后,由硬件置位,其它方式下,在發(fā)送或停止位之前由硬件置位,因此,TI=1表示幀發(fā)送結(jié)束,TI可由軟件清“0”。
RI:接收中斷標(biāo)志位。
可尋址標(biāo)志位。接收完第8位數(shù)據(jù)后,該位由硬件置位,在其他工作方式下,該位由硬件置位,RI=1表示幀接收完成。在配置串口初始化程序的時(shí)候,我們一般只用配置高四位,如果我們選擇工作方式1,那么就是SCON=0X50;(SM0=0,SM1=1,SM2=0,REN=1)
原文作者:
https://kernel.0voice.com/
原文地址:
https://kernel.0voice.com/forum.php?mod=viewthread&tid=1997&extra=page%3D1(版權(quán)歸原文作者所有,侵權(quán)聯(lián)系刪除)