內部高128個字節是SFR區
21個SFR(特殊功能寄存器)離散分布(只能使用直接尋址的方式)。
至于什么叫不可尋址,則是指不能單獨進行每一位的操作,如TMOD定時器工作模式及工作方式寄存器,在進行操作時,只能寫TMOD=0xXX 。
關于能否進行位操作,可以通過查相關資料知道,當然還有個技巧就是其字節地址換成10 進制后能否被“8 ”整除,能被“8 ”整除的就能進行位操作,不能被“8 ”整除就不能,如P1 地址為90H ,10 進制為144 , 144/8=18 ,能被整除,所以可以位操作。再如TMOD 地址為89H , 10 進制為137 ,137/8=17.125 ,不能被整除,所以不可以位操作。
特殊寄存器
(1)ACC——累加器
通常用A表示。該標志常用于程序分支轉移的判斷條件。
(2)B——一個寄存器
在做乘、除法時放乘數或除數。
(3)PSW——程序狀態字
存放CPU工作時的狀態。
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
CY |
AC |
F0 |
RS1 |
RS0 |
OV |
|
P |
用途 :
- CY :進位標志。
- AC :輔助進、借位(高半字節與低半字節間的進、借位)。
- F0 :用戶標志位,由用戶(編程人員)決定什么時候用,什么時候不用。
- RS1 、RS0 :工作寄存器組選擇位。
- OV :溢出標志位。運算結果按補碼運算理解。有溢出,OV=1;無溢出,OV=0。
- P :奇偶校驗位:它用來表示ALU運算結果中二進制數位“1”的個數的奇偶性。
(4)DPTR(DPH、DPL) ——數據指針
可以用它來訪問外部數據存儲器中的任一單元,如果不用,也可以作為通用寄存器來用,由我們自已決定如何使用。分成DPL(低8位)和DPH(高8位)兩個寄存器。用來存放16位地址值,以便用間接尋址或變址尋址的方式對片外數據RAM或程序存儲器作64K字節范圍內的數據操作。
(5)P0、P1、P2、P3——四個并行輸入/輸出口的寄存器。
(6)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的中斷允許
中斷的自然優先級 :
中斷函數編號 |
中斷名稱 |
中斷標志位 |
中斷使能位 |
中斷向量地址 |
默認優先級 |
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——定時器/計數器控制寄存器
字節地址為88H,可以位尋址。
位序號 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位符號 |
TF1 |
TR1 |
TF0 |
TR0 |
IE1 |
IT1 |
IE0 |
IT0 |
位地址 |
8FH |
8EH |
8DH |
8CH |
8BH |
8AH |
89H |
88H |
TF1: 定時器1溢出標志位,當定時器1計滿溢出時,由硬件將TF1置1,并申請中斷;進入中斷服務程序后,由硬件自動清零。
TR1: 定時器1運行控制位: TR=1表示啟動定時器,需要配合GATE和INT1。
- 當GATE=1,且INT1為高電平時,TR1置1啟動定時器。
- 當GATE=0時,TR1置1啟動定時器1。
TF0: 定時器0溢出標志位,功能和用法同TF1.
TR0: 定時器0運行控制位,功能和用法同TR1.
IE1: 外部中斷1請求標志位.
- IT1=0時,為電平觸發方式,每個機器周期的S5P2采樣INT1引腳,若INT1腳為高電平,則置1;否則IE1清0.
- IT1=0時,為跳變沿觸發方式,當第一個機器周期采樣到INT1為低電平時,將IE1置1,表示外部中斷1正在向CPU請求中斷.當CPU響應,轉向中斷服務程序時,IE1由硬件清零.
IT1: 外部中斷1觸發方式選擇位.
- IT1=0時,為電平觸發方式,引腳INT1上的低電平有效.
- IT1=1時,為跳變沿觸發方式,引腳INT1上的電平從高到低的負跳變有效.
IE0: 外部中斷0請求標志位,功能和用法同IE1.
IT0: 外部中斷0觸發方式選擇位,功能和用法同IT1.
(8) TMOD寄存器:定時器/計數器工作方式寄存器
TMOD寄存器: 定時器/計數器工作方式寄存器.字節地址為89H,不能位尋址.
位序號 |
D7 |
D6 |
D5 |
D4 |
D3 |
D2 |
D1 |
D0 |
位符號 |
GATE |
C/T |
M1 |
M0 |
GATE |
C/T |
M1 |
M0 |
控制的定時器 |
定時器1 |
定時器0 |
|
|
|
|
|
|
GATE: 門控制位
- GATE=0時,定時器/計數器啟動與停止僅受TCON寄存器中的TRX(X=0/1)來控制.
GATE=1時,定時器/計數器啟動與停止由TCON寄存器中的TRX(X=0/1)和外部中斷引腳(INT0或INT1)上的電平狀態共同控制.
C/T ‾ overline{T}T: 定時器模式和計數器模式選擇位
- C/T ‾ overline{T}T=1時為計數器模式
C/T ‾ overline{T}T=0時為定時器模式
M1,M0: 工作方式選擇位
定時器T0有4種工作方式:方式0,方式1,方式2,=方式3= 。
設置定時器T1為方式3會讓它進入關閉狀態。通常情況下,T0不運行于工作方式3,只有在T1處于工作方式2,并不要求中斷的條件下才可能使用。這時,T1往往用作串行口波特率發生器,TH0用作定時器,TL0作為定時器或計數器。
定時器T1有3種工作方式:方式0,方式1,方式2。
(9) SUBF寄存器: 串行數據緩沖器(一個接收一個發送)
當發送使用時,就采用SBUF=XXX; (XXX為需要傳送的數據)
當接收使用時,采用XXX=SBUF;
(10) SCON寄存器: 串行口控制寄存器
它用于控制串行通信的方式選擇、接收和發送,指示串口的狀態。SCON既可以字節尋址,也可以位尋址。
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:串行口為同步移位寄存器的輸入輸出方式。主要用于擴展并行輸入或輸出口。數據由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發送和接收均為8位數據,低位在先,高位在后。波特率固定為fosc/12。
工作方式1:方式1是10位數據的異步通信口。TXD為數據的發送引腳,RXD是數據的接受引腳。傳送一幀數據的格式為1位起始位,8位數據位,1位停止位。
方式2或方式3:方式2或方式3時,為11位數據的異步通信口,TXD為數據發送引腳,RXD為數據接收引腳。起始位1位、數據位9位(含附加的第九位,發送時為SCON中的TB8,接收時為SCON中的RB8)、停止位1位,一幀數據為11位。方式2的波特率固定為晶振頻率的1/32或1/64。方式3的波特率由定時器T1的溢出率決定。
SM2:多機通信控制位。
多機通信是工作于方式2和方式3,即SM2主要用于方式2和方式3。當串行口工作于方式2或3,以及SM2=1時,只有當接收到第9位數據(RB8)為1時,才把接收到的前8位數據送入SBUF,且置位RI發出中斷申請,否則會將接收到的數據放棄。當SM2=0時,就不管第9位數據是0還是1,都會將數據送入SBUF,并發出中斷申請。
REN:允許接受位。
REN=1:允許接收
REN=0:禁止接收
TB8:發送數據位8.
在方式2和方式3中,TB8是要發送的——即第9位數據位。在多機通信中同樣亦要傳輸這一位,并且它代表傳輸的地址還是數據,TB8=0為數據,TB8=1時為地址。
RB8:接收數據位8(一般配置為0)。
在方式2和方式3中,RB8存放接收到的第9位數據,用以識別接收到的數據特征。
TI:發送中斷標志位。
可尋址標志位。方式0時,發送完第8位數據后,由硬件置位,其它方式下,在發送或停止位之前由硬件置位,因此,TI=1表示幀發送結束,TI可由軟件清“0”。
RI:接收中斷標志位。
可尋址標志位。接收完第8位數據后,該位由硬件置位,在其他工作方式下,該位由硬件置位,RI=1表示幀接收完成。在配置串口初始化程序的時候,我們一般只用配置高四位,如果我們選擇工作方式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(版權歸原文作者所有,侵權聯系刪除)