系統(tǒng)擴展之單片機RAM擴展
8051單片機程數(shù)據(jù)存儲器的擴展。
51數(shù)據(jù)存儲器的擴展
A0-A12為地址線,總共13條,則該存儲器的物理存儲空間有2的13次方,即8K。
D0-D7為數(shù)據(jù)總線,共8條,即該存儲器的每個存儲單元有8位數(shù)據(jù),即通常所說的字節(jié)為8,又叫一個字節(jié) 。
CS為片選信號,當(dāng)該信號為0時,存儲器才能正常讀寫,當(dāng)CS為1時,存儲器的輸出端D0-D7和地址總線A0-A12都為高阻狀態(tài),即相當(dāng)于存儲器芯片沒有接入電路,片選信號常用與電路中有多片同類芯片時選擇哪一個芯片有效,即哪一片芯片被接入電路中,在本例中,由于只有一片程序存儲器,沒有選擇的必要,所以可把片選端接地,使其永遠(yuǎn)有效。
RD為數(shù)據(jù)存儲器輸出運行端,即通常所說的存儲器讀信號,應(yīng)該信號有效即RD=1而且無效時,由地址決定的數(shù)據(jù)存儲器的某一個單元中的數(shù)據(jù)輸出到總線上,存儲器與數(shù)據(jù)總線斷開。
WR為數(shù)據(jù)存儲器輸入允許端,即通常所說的存儲器寫信號無效時,數(shù)據(jù)總線輸入由地址線決定的數(shù)據(jù)存儲器的某一個單元中當(dāng)該信號為1且RD信號也為1時,存儲器與數(shù)據(jù)總線斷開。
VCC為存儲器的電源輸入端,Vss為存儲器的電源接地輸入端。
G為地址鎖存器74373的鎖存信號輸入端,當(dāng)該信號為0時,74373的輸出端與輸入端斷開,輸出端保持上次輸入的數(shù)據(jù)不變,當(dāng)該信號為1時,74373的輸出端與輸入端接通,輸出端信號隨輸入端的變化而變化,對8051來說,P0輸出經(jīng)74373鎖存后為低8位地址總線,P2口為高8位地址總線,共16條地址線,所以8051能訪問的存儲器單元數(shù)為2的16次方,即64K稱為8051的邏輯地址空間,地址從0000H-OFFFFH。
存儲器有13條地址線,所以對存儲器來說,實際的存儲單元只有2的13次方,即8K個,其地址從0000H-1FFFH,稱為存儲器的物理地址 。在本例中,由于存儲器的片選段接地,沒有占有CPU的地址線,所以CPU的64K邏輯單元地址平均分配給8K單元的物理存儲器,即每一位物理存儲器單元擁有8個邏輯地址,比如要訪問物理存儲器的00單元,要求存儲器的地址引腳A0-A12上全為0,本系統(tǒng)中的CPU的地址線A0-A12恰好與存儲器的A0-A12對接,所以只要邏輯地址中的低13位為0,就能選中存儲器的物理地址00單元,而CPU的地址線A13,A14,A15懸空。
顯然,這三位懸空線的8種不同組合決定了該物理存儲器單元有8個邏輯單元,第一個邏輯單元為0000H,第二個邏輯單元為2000H,第三個邏輯單元為4000H,第四個邏輯單元為6000H,第五個邏輯單元為8000H,第六個邏輯單元為0A000H,第七個邏輯單元為0C000H,第八個邏輯單元為0E000H。
下面我們舉例說明本系統(tǒng)中對外部數(shù)據(jù)存儲器的訪問過程,假定8051的EA引腳接高電平,即8051使用片內(nèi)程序存儲器,下面是這個程序片斷每條指令的意義:
第一條指令給寄存器DPTR賦初值0025H
第二條指令講外部數(shù)據(jù)存儲器OO25H單元的內(nèi)容送入累加器A
第三條指令對寄存器DPTR賦初值2025H
第四指令將累加器的內(nèi)容送外部數(shù)據(jù)存儲器4025H單元,假定當(dāng)前PC的內(nèi)容為0050H,并假定外部數(shù)據(jù)存儲器0025H單元為12H:從內(nèi)部程序存儲器中取第一指令并運行,結(jié)果為給寄存器DPTR賦初值0025H,取第二指令,執(zhí)行第二指令。
第二指令執(zhí)行過程為:發(fā)控制信號使P0口,P2口的控制端為1,將DPTR內(nèi)容送內(nèi)部地址總線,低8位地址進入P0口,再經(jīng)數(shù)據(jù)選擇開關(guān)出現(xiàn)在P0口的8條引腳上,高8位地址到達(dá)P2口引腳上。
同時,CPU使ALE引腳為高電平,74373導(dǎo)通,低8位地址出現(xiàn)在74373的輸出端,待地址穩(wěn)定后,使ALE變?yōu)榈? 電平,74373輸出端與輸入端斷開,即鎖存。此后,74373的輸出端一直保持低8位地址不變,直到下次ALE引腳出現(xiàn)高電平為止,CPU使P0口的地址/數(shù)據(jù)全部為1。則上拉場效應(yīng)管導(dǎo)通,下拉場效應(yīng)管截止,這樣,才能讀回外部數(shù)據(jù)總線上的數(shù)據(jù)。
否則,若下拉場效應(yīng)管導(dǎo)通,P0口引腳被下拉場效應(yīng)管接地,則從外部數(shù)據(jù)總線上讀回的數(shù)據(jù)永遠(yuǎn)為0,CPU使PSEN引腳為低 電平,存儲器的輸出允許信號RD有效,即0025H單元的內(nèi)容12H送數(shù)據(jù)總線,結(jié)果為給寄存器DPTR賦初值4025H。
然后是執(zhí)行第四條指令,下面我們看看第四條指令的執(zhí)行過程,CPU使P0口和P2口的控制端C為1,將DPTR的內(nèi)容4025H送內(nèi)部地址總線,高8位40H地址40H出現(xiàn)在P2口引腳上,低8位地址25H出現(xiàn)在P0引腳上,ALE變?yōu)楦? 電平,低8位地址出現(xiàn)在74373的輸出端,ALE變?yōu)榈碗娖?,?位地址被鎖存,CPU將累加器A中內(nèi)容12H送P0口,WR變成低電平,存儲器數(shù)據(jù)總線上的數(shù)據(jù)12H送入地址總線指定的物理單元0025H中。