一般說來,可編程接口芯片都有存儲(chǔ)器及地址線,所謂可編程就是指CPU用指令將某數(shù)據(jù)寫入接口芯片的某個(gè)存儲(chǔ)器,接口芯片在接到CPU送來的數(shù)據(jù)后,自動(dòng)翻譯該數(shù)據(jù),然后執(zhí)行該數(shù)據(jù)所代表的動(dòng)作。
不同的CPU對(duì)接口芯片的處理方式不同,某些CPU將接口芯片的存儲(chǔ)器和CPU本身使用的存儲(chǔ)器區(qū)別對(duì)待,將對(duì)接口芯片存儲(chǔ)器的操作稱為I/O操作,而對(duì)CPU本身使用存儲(chǔ)器的操作稱為存儲(chǔ)器操作,并且I/O操作和存儲(chǔ)器操作使用不同的指令,這種方式叫I/O端口的獨(dú)立編址方式。
這種方式的優(yōu)點(diǎn)是I/O端口不占用存儲(chǔ)器的地址空間,存儲(chǔ)器空間和I/O空間獨(dú)立 ,缺點(diǎn)是CPU中要單獨(dú)設(shè)置I/O端口訪問指令,增加CPU的復(fù)雜度,INTEL公司的8086系列就是采用的這種結(jié)構(gòu)。
另一種處理方式為將接口芯片的存儲(chǔ)器當(dāng)外部數(shù)據(jù)存儲(chǔ)器對(duì)待,而不需要單獨(dú)設(shè)置I/O端口的訪問指令,這種方式稱為統(tǒng)一編址,8051就是采用的這種方式。
下面我們介紹一下接口芯片8255。
8255是一個(gè)并行接口擴(kuò)展芯片。它有一個(gè)8位的待擴(kuò)展并行接口D0-D7,三個(gè)擴(kuò)展后的8位并行接口PA,PB,PC。四個(gè)存儲(chǔ)器,PA口存儲(chǔ)器,PB口存儲(chǔ)器,PC口存儲(chǔ)器和控制口存儲(chǔ)器,這四個(gè)存儲(chǔ)器由它的兩條地址線AO,A1來選擇。
當(dāng)A1A0為00的時(shí)候,8255將D0-D7與PA接通
當(dāng)A1A0為01的時(shí)候,8255將D0-D7與PB接通
當(dāng)A1A0為10的時(shí)候,8255將D0-D7與PC接通
當(dāng)A1A0為11的時(shí)候8255將D0-D7與內(nèi)部控制寄存器接通
假設(shè)將兩片8K的數(shù)據(jù)存儲(chǔ)器和一片8255混合擴(kuò)展成CPU的外部數(shù)據(jù)據(jù)存儲(chǔ)器,它們的片選信號(hào)的接法采用譯碼方式 。
譯碼器74139的輸入端接CPU的P2.5和P2.6。
當(dāng)P2.6和P2.5為00時(shí),譯碼器輸出端YO有效,選中第一片數(shù)據(jù)存儲(chǔ)器,可知第一片存儲(chǔ)器的邏輯地址為0000H-1FFFH以及8000H-9FFFFH,每個(gè)物理單元有兩個(gè)邏輯地址
當(dāng)P2.6和P2.5為01時(shí),譯碼器輸出端Y1有效,選中第二片存儲(chǔ)器,第二片存儲(chǔ)器的地址為2000H-3FFFH以及0AOOOH-OBFFFH。
當(dāng)P2.6和P2.5為10時(shí),譯碼器輸出端Y2有效,選中8255,,則8255的邏輯地址4000H-5FFFH,以及0C000H-0DFFFH。
當(dāng)P2.6和P2.5為11時(shí),譯碼器輸出端Y3有效,沒有存儲(chǔ)器被選中,即這種情況下的地址為無效地址,包括6000H-7FFFH,和0E000H-OFFFFH。