一般说来,可编程
接口芯片都有
存储器及地址线,所谓可编程就是指
CPU用指令将某数据写入
接口芯片的某个存储器,接口芯片在接到CPU送来的数据后,自动翻译该数据,然后执行该数据所代表的动作。
不同的CPU对接口芯片的处理方式不同,某些CPU将接口芯片的存储器和CPU本身使用的存储器区别对待,将对接口芯片存储器的操作称为I/O操作,而对CPU本身使用存储器的操作称为存储器操作,并且I/O操作和存储器操作使用不同的指令,这种方式叫I/O端口的独立编址方式。
这种方式的优点是I/O端口不占用存储器的地址空间,存储器空间和I/O空间独立 ,缺点是CPU中要单独设置I/O端口访问指令,增加CPU的复杂度,INTEL公司的8086系列就是采用的这种结构。
另一种处理方式为将接口芯片的存储器当外部数据存储器对待,而不需要单独设置I/O端口的访问指令,这种方式称为统一编址,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的数据存储器和一片8255混合扩展成CPU的外部数据据存储器,它们的片选信号的接法采用译码方式 。
译码器74139的输入端接CPU的P2.5和P2.6。
当P2.6和P2.5为00时,译码器输出端YO有效,选中片数据存储器,可知片存储器的逻辑地址为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。