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