通過(guò)軟件操作來(lái)實(shí)現(xiàn)單片機(jī)的地址重疊
在80C31為控制核心的數(shù)據(jù)采集系統(tǒng)中,往往需要較大的外部RAM來(lái)存放數(shù)據(jù)。大家知道80C31是8位CPU,地址總線寬度為16位,其外部RAM,ROM可直接尋址范圍各為64k字節(jié)(0000H——FFFFH)。在80C31的工作過(guò)程中,ROM和外部RAM的地址是重疊使用的,但使用不同的控制信號(hào)和指令,而擴(kuò)展I/O口和外部RAM是統(tǒng)一編址的,它占用外部RAM的地址單元,并且使用外部RAM相同的讀寫控制信號(hào)和讀/寫指令。
本文引用地址:http://2s4d.com/article/173085.htm在數(shù)據(jù)采集系統(tǒng)中,往往需要大容量的外部RAM,顯示器、A/D轉(zhuǎn)換、打印機(jī)等外部設(shè)備也必須進(jìn)行I/O擴(kuò)展。筆者在設(shè)計(jì)智能型聲級(jí)計(jì)的過(guò)程中,要求80C31擴(kuò)展外部RAM為64kB字節(jié),擴(kuò)展I/O口采用82C55芯片,連接字符型LCD、鍵盤、A/D轉(zhuǎn)換輸入和打印機(jī)。并采用了軟件邏輯開關(guān),實(shí)現(xiàn)了64k字節(jié)的外部RAM和擴(kuò)展I/O口的地址重疊使用,充分利用80C31直接尋址的數(shù)據(jù)存儲(chǔ)空間。電路如下圖所示。
80C31擴(kuò)展一片程序存儲(chǔ)器(EPROM)27C64。80C31的P0口經(jīng)地址鎖存器74HC373提供低8位地址線,80C31的P2.0—P2.4為高5位地址線,共13根地址線(213=8k)。數(shù)據(jù)讀取由80C31的PSEN控制,使用MOVC指令,由于只擴(kuò)展一片EPROM,所以27C64的片選端CE接地。
80C31擴(kuò)展2片數(shù)據(jù)存儲(chǔ)器62256。62256是32kx8位靜態(tài)隨機(jī)存儲(chǔ)器顯片,采用CMOS工藝制作,由單一電源+5V供電,它有15根地址線(215=32k),其中低8位地址由80C31的P0口經(jīng)地址鎖存器74HC373提供。80C31的P2口的P2.0—P2.6地址線供應(yīng)高7位地址,P2.7線不經(jīng)反相器和經(jīng)反相器分別連接到62256(1)和62256(2)的片選端CE1上。當(dāng)P2.7=0時(shí),62256(1)被選通,地址為0000H—7FFFH,這時(shí)P2.7為0,經(jīng)反相器使62256(2)的片選端CE1為高電平,62256(2)被禁止。當(dāng)P2.7=1,62256(1)的片選端CE1為高電平,62256(1)被禁止,經(jīng)74HC04反相,62256(2)的片選CE1為低電平,62256(2)被選通,地址為8000H—FFFFH,80C31擴(kuò)展外部RAM為64k字節(jié)(32KX2)。
為了滿足智能聲級(jí)計(jì)的工作要求,還需擴(kuò)展I/O口來(lái)連接A/D轉(zhuǎn)換輸入、鍵盤、顯示器和打印機(jī)。筆者采用了82C55芯片在可編程并行I/O口,其A口接MC14433雙積分A/D轉(zhuǎn)換芯片的并行輸出,編程為輸入方式,B口接打印機(jī)編程為輸出方式,C口接鍵盤P6.0—P6.3編程為輸入方式,作鍵盤輸入線。P6.4—P6.7編程為輸出方式,作掃描輸出線。顯示器采用DMC16230字符型LCD,其總線接80C31P0口數(shù)據(jù)總線,82C55的口地址選通端A0,A1(通過(guò)A0、A1的編程可分別選擇A口、B口、C口和控制口的寄存器)和LCD的RS端(低電平選擇指令寄存,高電平選擇數(shù)據(jù)寄存器)及R/W端(讀寫選擇)分別接到地址總線的低位地址線A0、A1,80C31的P1.0線,地址總線的A2線和62256的OE端(讀控制端)、WE端(寫控制端),8255的片選端CS及LCD的片選端E接軟件邏輯開關(guān)。
軟件邏輯開關(guān)由邏輯元件組成,由軟件來(lái)控制,其工作原理是這樣的,當(dāng)程序設(shè)置80C31的P1.0=1時(shí),接一個(gè)或門到82C55的片選端CS。CS=1,82C55被禁止(低電平選通)。P1.0口的信號(hào)經(jīng)兩個(gè)反相器和一個(gè)與非門接LCD的片選端E。使片選端E=0,LCD也被禁止(高電平選通)。P1.0=1的信號(hào)經(jīng)反相器為低電平,再經(jīng)兩個(gè)或門接62256的OE、WE端。這樣80C31的RD和WR的信號(hào)經(jīng)兩個(gè)或門就能分別控制62256的OE、WE端,正常地進(jìn)行讀寫操作,所以P1.0=1時(shí)禁止。82C55,LCD僅對(duì)62256進(jìn)行操作,而P1.0=0時(shí),信號(hào)經(jīng)反相器為高電平,通過(guò)兩個(gè)或門分別使62256的OE、WE電平為高電平,從而禁止了80C31的RD和WE端對(duì)62256的讀寫操作(低位有效),P1.0=0的信號(hào)對(duì)82C55或LCD的選擇還要看地址總線中A2的電平狀態(tài)。當(dāng)A2=1時(shí),信號(hào)經(jīng)過(guò)反相器為低電平和P1.0時(shí)的信號(hào),再經(jīng)過(guò)或門輸?shù)?2C55的CS 端為低電平,82C55被選通。這時(shí)A2=1和P1.0=0的信號(hào)經(jīng)反相器和與非門輸?shù)絃CD的E端為低電平,LCD被禁止。82C55的口地址為FFFCH—FFFFH。當(dāng)A2=0時(shí),A2=0和P1.0=0的信號(hào)通過(guò)反相器和或門輸?shù)?2C55的CS端為高電平,82C55被禁止,這時(shí),A2=0和P1.0=0的信號(hào)經(jīng)過(guò)反相和與非門輸?shù)絃CD的E端為高電平,LCD被選通,其地址為FFF8H—FFFFBH。通過(guò)以上的電路分析(邏輯關(guān)系如表1所示)可以清楚地看到,通過(guò)軟件邏輯開關(guān)用軟件操作對(duì)80C31的P1.0和地址線A2的選擇,有效地分別選通62256、82C55、或LCD,實(shí)現(xiàn)了它們之間的地址重疊使用,達(dá)到了80C31擴(kuò)展全部外部RAM直接尋址范圍的目的。
邏輯關(guān)系 | ||||
器件型號(hào) | P1.0=1 | P1.0=0 | 地址 | |
A2=0 | A2=1 | |||
62256 | 選通 | 禁止 | 禁止 | 0000H—FFFFFH |
LCD | 禁止 | 選通 | 禁止 | FFF8H—FFFFBH |
LCD | 禁止 | 禁止 | 選通 | FFFCH—FFFFFH |
評(píng)論