外擴(kuò)存儲(chǔ)器電路的工作原理及軟件設(shè)計(jì)
1.單片機(jī)片外程序區(qū)讀指令過(guò)程
當(dāng)接通電源且單片機(jī)上電復(fù)位后,程序計(jì)數(shù)器PC-OOOOH,CPU就從OOOOH地址開(kāi)始取指令,執(zhí)行程序。在取指令期間,PC地址低8位送往PO口,經(jīng)鎖存器鎖存作為低8位地址A0~A7輸出。PC高8位地址送往P2口,直接由P2.O~P2.4鎖存到A8~A12地址線上,P2.5~P2.7輸入給74LS139進(jìn)行譯碼輸出片選。這樣,根據(jù)P2口、PO口狀態(tài)則選中了第一個(gè)程序存儲(chǔ)器芯片ICl(2764)的第一個(gè)單元地址OOOOH。然后當(dāng)PSEN(的反)變?yōu)榈碗娖綍r(shí),把OOOOH中的指令代碼經(jīng)PO口讀入內(nèi)部RAM中進(jìn)行譯碼,從而決定進(jìn)行何種操作。取出一個(gè)指令字節(jié)后PC自動(dòng)加1,然后取第二個(gè)字節(jié),依次類(lèi)推。當(dāng)PC=1FFFH時(shí),從IC1最后一個(gè)單元取指令,然后PC=2000H,CPU向P2口、PO口送出2000H地址時(shí),則選中第二個(gè)程序存儲(chǔ)器IC2,IC2的地址范圍為2000H~3FFFH,讀指令過(guò)程同IC1,不再贅述。
2.單片機(jī)片外數(shù)據(jù)區(qū)讀/寫(xiě)數(shù)據(jù)過(guò)程
當(dāng)程序運(yùn)行中,執(zhí)行“MOV”類(lèi)指令時(shí),表示與片內(nèi)RAM交換數(shù)據(jù);當(dāng)遇到“MOVX”類(lèi)指令時(shí),表示對(duì)片外數(shù)據(jù)存儲(chǔ)器區(qū)尋址。片外數(shù)據(jù)存儲(chǔ)器區(qū)只能間接尋址。
例如,把片外6000H單元的數(shù)據(jù)送到片內(nèi)RAM 50H單元中,程序如下:
先把尋址地址6000H送到數(shù)據(jù)指針寄存器DPTR中,當(dāng)執(zhí)行“MOVX A,@DPTR”時(shí),DPTR的低8位(OOH)經(jīng)PO口輸出并鎖存,高8位(60H)經(jīng)P2口直接輸出,根據(jù)PO口、P2口狀態(tài)選中IC4(6264)的6000H單元。當(dāng)讀選通信號(hào)RD(的反)為低電平時(shí),片外6000H單元的數(shù)據(jù)經(jīng)PO口送往累加器A。當(dāng)執(zhí)行指令“MOV 50H,A”時(shí),則把該數(shù)據(jù)存入片內(nèi)50H單元。
向片外數(shù)據(jù)區(qū)寫(xiě)數(shù)據(jù)的過(guò)程與讀數(shù)據(jù)的過(guò)程類(lèi)似。
例如,把片內(nèi)50H單元的數(shù)據(jù)送到片外4000H單元中,程序如下:
執(zhí)行第1條指令,先把片內(nèi)RAM 50H單元的數(shù)據(jù)送到A中,第2條指令把尋址地址4000H送到數(shù)據(jù)指針寄存器DPTR中,當(dāng)執(zhí)行“MOVX @DPTR,A”時(shí),DPTR的低8位(OOH)由PO口輸出并鎖存,高8位(40H)由P2口直接輸出,根據(jù)PO口、P2口狀態(tài)選中IC3(6264)的4000H單元。當(dāng)寫(xiě)選通信號(hào)WR(的反)有效時(shí),A中的內(nèi)容送往片外4000H單元。
AT89S51單片機(jī)讀寫(xiě)片外數(shù)據(jù)存儲(chǔ)器中的內(nèi)容,除了使用“MOVX A,@DPTR”和“MOVX @DPTR,A”外,還可以使用指令“MOVX A,@R/”和“MOVX @R/,A”。這時(shí)PO口裝入R/中的內(nèi)容(低8位地址),而把P2口原有的內(nèi)容作為高8位地址輸出。下面介紹的例子就是采用“MOVX @R/,A”指令的例子。
例:編寫(xiě)程序,將程序存儲(chǔ)器中以TAB為首地址的32個(gè)單元的內(nèi)容依次傳送到外部RAM以4000H為首地址的區(qū)域去。
數(shù)據(jù)指針DPTR指向標(biāo)號(hào)TAB的首地址。RO既指示外部RAM的地址,又表示數(shù)據(jù)標(biāo)號(hào)TAB的位移量。此程序?yàn)橐谎h(huán)程序,循環(huán)次數(shù)為32,RO的值從0變化至31,RO的值達(dá)到32就結(jié)束循環(huán)。參考程序如下: