|
本帖最后由 liuda 于 2015-1-23 23:55 編輯
程序存儲器
當(dāng)EA引腳接高電平時,CPU將使用內(nèi)部程序存儲器,若程序超過內(nèi)部程序存儲器空間時,則CPU會自動從外部程序存儲器重讀取超過部分的程序代碼。
數(shù)據(jù)存儲器
51的程序存儲器和數(shù)據(jù)存儲器是獨立分開的,所以訪問數(shù)據(jù)存儲器時,所使用的地址不會與程序存儲器沖突。
51里的數(shù)據(jù)存儲器除內(nèi)部數(shù)據(jù)存儲器外,還可以擴展外部數(shù)據(jù)存儲器,且可以并存,只不過訪問他們的指令不一樣。
內(nèi)部數(shù)據(jù)存儲器的結(jié)構(gòu):
0000H~007FH之間的128B為可直接尋址或間接尋址的存儲器,它分為3部分:
1. 寄存器組區(qū)
0000H~001FH的32個地址位寄存器組區(qū)
10000H~0007H為寄存器組0(即RB0);0008H~000FH為寄存器組1(即RB1);0010H~0017H為寄存器組2(即RB2);0018H~001FH為寄存器組3(即RB3)
2每個寄存器組都包括R0、R1、R2、R3、R4、R5、R6、R7等8個寄存器,任何一個時間,都只能使用其中一個寄存器組。
3寄存器組的切換,可由程序狀態(tài)字(PSW)中的RS1、RS0來決定
RS0 RS1 寄存器組 位址
0 0 RB0 0000H~0007H
0 1 RB1 0008H~000FH
1 0 RB2 0010H~0017H
1 1 RB3 0018H~001FH
4當(dāng)CPU復(fù)位時,系統(tǒng)的堆棧指針(SP)指向地址07H,所以將數(shù)據(jù)存入堆棧時,將從08H開始,即RB1里的R0地址。為了避免沖突和不必要的錯誤,通常會把堆棧指針移到30H以后的地址。
2. 可位尋址區(qū)
0020H~002FH共16字節(jié)的存儲器區(qū)為可位尋址區(qū)。
例如吧20H存儲器地址的bit 5設(shè)定為1,這可使用下指令:
SETB 20H.5
要把該位清除為0,可使用下指令:CLR 20H.5
3. 一般數(shù)據(jù)與堆棧區(qū)
0030H~007FH的80字節(jié)為一般數(shù)據(jù)訪問及堆棧區(qū)。
0080H~00FFH之間的128B為特殊功能寄存器(SFR)。
特殊功能寄存器
P0、P1、P2、P3
它們是51的4個輸入/輸出端口,其地址分別為80H、90H、A0H及B0H。
P0口:該8位都為漏級開路輸出,每個引腳可以驅(qū)動8個LS型TTL負(fù)載;且內(nèi)部沒有上拉電阻,執(zhí)行輸出功能時,外部必須接上拉電阻(10千歐即可);若要執(zhí)行輸入功能,必須先輸出高電平,方能讀取該端口所連接的外部數(shù)據(jù);若系統(tǒng)連接外部存儲器,則P0可作為地址總線(A0~A7)及數(shù)據(jù)總線(D0~D7)的多功能引腳。
P1口:內(nèi)部有30千歐上拉電阻,執(zhí)行輸出功能時,不必連接外部上拉電阻;該8位都為漏級開路輸出,每個引腳可以驅(qū)動4個LS型TTL負(fù)載;若要執(zhí)行輸入功能,必須先輸出高電平,方能讀取該端口所連接的外部數(shù)據(jù);
P2口:內(nèi)部有30千歐上拉電阻,執(zhí)行輸出功能時,不必連接外部上拉電阻;該8位都為漏級開路輸出,每個引腳可以驅(qū)動4個LS型TTL負(fù)載;若要執(zhí)行輸入功能,必須先輸出高電平,方能讀取該端口所連接的外部數(shù)據(jù);若系統(tǒng)連接外部存儲器,而外部存儲器的地址線超過8條時,則P0口可作為地址總線(A8~A15)引腳。
P3口:內(nèi)部有30千歐上拉電阻,執(zhí)行輸出功能時,不必連接外部上拉電阻;該8位都為漏級開路輸出,每個引腳可以驅(qū)動4個LS型TTL負(fù)載;若要執(zhí)行輸入功能,必須先輸出高電平,方能讀取該端口所連接的外部數(shù)據(jù);
P3口其它功能:
P3 其它功能 說明
P3.0 RXD 串行口的接收引腳
P3.1 RTD 串行口的傳送引腳
P3.2 INT0 INT0中斷輸入
P3.3 INT1 INT1中斷輸入
P3.4 T0 Timer 0輸入
P3.5 T1 Timer 1輸入
P3.6 WR 寫入外部存儲器控制引腳
P3.7 RD 讀取外部存儲器控制引腳
SP
SP為堆棧指針寄存器,其地址為81H。
DPL、DPH
DPL與DPH均為8位的數(shù)據(jù)指針寄存器,其地址分別為82H、83H。若以DPL為低8位、DPH為高8位,即可組成一個16位的數(shù)據(jù)指針寄存器,簡稱DPTR,如此將可尋址到64KB的數(shù)據(jù)地址。
PCON
PCON作為電源控制寄存器,其地址位87H,其功能是設(shè)定CPU的電源方式。
它是一個不可位尋址的寄存器。如圖所示:
SMOD ― ― ― GF1 GF0 PD IDL
Bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
其中各位說明如下:
SMOD位為比特率倍增位。當(dāng)串行端口工作于模式1、模式2、模式3,且使用定時器1為其比特率產(chǎn)生器時,若其為1,這比特率加倍,若為0,這比特率正常。
GF1、GF0位為一般用途標(biāo)志位,用戶可自行設(shè)定或清除這兩個標(biāo)志。通常使用這個兩個標(biāo)志作為有中斷喚醒閑置模式中的8051系統(tǒng)。
PD位為功率下降模式位。為1時,進入功率下降模式;為0時,結(jié)束功率下降模式。
IDL位為閑置模式位。為1時,進入閑置模式;為0時,結(jié)束閑置模式。
TCON
TCON為定時器/計數(shù)器控制寄存器,其地址為88H,詳細(xì)以后再講咯。
TMOD
TMOD為計數(shù)器/計數(shù)方式控制寄存器,其地址為89H,其功能是設(shè)置它的方式,詳細(xì)以后再講咯。
TL0、TL1、TH0、TH1
TL0、TH0為第一組定時器、計數(shù)器的計量寄存器,其地址為8AH、8CH,將TL0與TH0組合即可進行16位的定時/計數(shù)。TL1、TH1為第二組定時器、計數(shù)器的計量寄存器,其地址為8BH、8DH,將TL1與TH1組合即可進行16位的定時/計數(shù)。詳細(xì)以后再講咯。
SCON
SCON為串行端口控制寄存器,其地址為98H,其功能是設(shè)定串行端口工作方式與標(biāo)志。
SBUF
SBUF為串行端口緩沖器,其地址為99H, 這是由使用同一個地址的兩個寄存器所構(gòu)成,其中一個寄存器作為傳送數(shù)據(jù)用的緩沖器,另一個寄存器作為接收數(shù)據(jù)用的緩沖器。至于如何分辨同一個地址的兩個寄 存器,則視指令而定,若是數(shù)據(jù)傳送指令,則自動定位到傳送數(shù)據(jù)用的緩沖器;若是接受數(shù)據(jù)指令,則自動定位到接收數(shù)據(jù)用的緩沖器。詳細(xì)以后再講咯。IE
IE為中斷使能寄存器,其地址為A8H。詳細(xì)以后再講咯。
IP
IP為中斷優(yōu)先級寄存器。詳細(xì)以后再講咯。
T2CON
T2CON為Timer 2的定時器/計數(shù)器控制寄存器,其地址為C8H,其功能死設(shè)定Timer 2的啟動、記錄定時/計數(shù)溢出,以及外部中斷觸發(fā)方式等。詳細(xì)以后再講咯。
RCAP、RCAP2H
RCAP、RCAP2H為捕捉寄存器,其地址為CAH、CBH。當(dāng)Timer 2在捕捉方式時,若T2EX(P1.1)引腳上的輸入信號有高電平轉(zhuǎn)為低電平時,TL2與TH2的內(nèi)容將被載入RCAP與RCAP2H,就像是把Timer 2的內(nèi)容捉進RCAP寄存器一樣。詳細(xì)以后再講咯。
TL2、TH2
TL2、TH2為第三組定時器、計數(shù)器的計量寄存器,其地址為CCH、CDH,將TL2與TH2組合即可進行16位的定時/計數(shù)。詳細(xì)以后再講咯。
PSW
PSW為CPU的程序狀態(tài)字寄存器,其地址為D0H,其內(nèi)容如下:
7 6 5 4 3 2 1 0
PSW CY AC F0 RS1 RS0 OV P
PSW.7:本位為進位位(CY),加減法時產(chǎn)生進位或錯位,將自行設(shè)定為1,否則為0。
PSW.6:本位為輔助進位位(AC),進行加減法運算產(chǎn)生進位或錯位,將自行設(shè)定為1,否則為0。
PSW.5:本位為用戶標(biāo)志位,用戶自行設(shè)定。
PSW.4與PSW.3:這兩個位為寄存器組選擇位(RS1、RS0),其功能如下表所示。
RS1 RS0 寄存器組
0 0 RB0
0 1 RB1
1 0 RB2
1 1 RB3
PSW.2:本位為溢出標(biāo)志位(OV),運行時,若發(fā)生溢出,為1,否則為0。
PSW.1:本位為保留位,沒有提供服務(wù)。
PSW.0:本位位奇偶位(P),8051采用偶同位,若ACC中奇數(shù)個1,則為1,偶數(shù)個1,則為0。
ACC
ACC累加器又稱為A寄存器,其地址為E0H。
B
B寄存器的地址為F0H,主要功能是配合A寄存器進行乘法或除法運算。進行乘法運算時,乘數(shù)放在B寄存器,而運算結(jié)果,高8位放在B寄存器;進行除法運算時,除數(shù)放在B寄存器,而運算的結(jié)果,余數(shù)放在B寄存器。若不進行乘/除法運算,B寄存器也可當(dāng)成一般寄存器使用。
|
|