第九章可编程外围接口芯片8255A及其应用•§9.18255A的工作原理–8255A的结构和功能–8255A的控制字–8255A的工作方式•§9.28255A的应用举例–基本输入输出–键盘接口–显示接口–…§9.18255A的工作原理一、8255A的结构和功能•引脚•双列直插40引脚•3个8位端口PA,PB,PC•8位数据线•2根端口选择线A0,A1•4根控制线•Vcc,GND8255A12345678910111213141516171819204039383736353433323130292827262524232221A1A0PC7PC6PC5PC4PC0PC1PC2PC3PA3PA2PA1PA0PA4PA5PA6PA7RESETD0D1D2D3D4D5D6D7VccGNDPB7PB6PB5PB4PB3PB0PB1PB2RDCSWR1)数据端口A、B和C•内部结构•8255A内部包含3个8位I/O端口通过外部24根I/O线与外设交换数据或进行通信联络。•A口:8位数据I/O口和双向数据总线•B口:8位数据I/O口•C口:8位数据I/O口,可分为两个4位口使用。还常用来配合A口和B口工作,作为控制信号输出、或作为状态信号输入。2)A组和B组控制逻辑•控制寄存器:存放来自CPU对8255的控制命令字。以决定PA、PB、PC端口的工作方式。•A组控制电路的控制对象:PA口、PC口上半部(PC7~PC4)•B组控制电路的控制对象:PB口、PC口下半部(PC3~PC0)3)数据总线缓冲器–8位双向三态的缓冲器,用作8255A和系统数据总线的接口。•传送系统对8255A的控制字;•传送各端口的输入、输出数据4)读写控制逻辑•与CPU的AB、CB连接,实现CPU对8255的控制。•RESET总清,使PA、PB、PC初始化为输入状态•RDCPU从8255读入数据或状态•WRCPU向8255写出数据或命令•CS、A1、A0选择8255内部的4个寄存器A15~A2A1A0端口00PA01PB10PC11控制口与8088的连接系统接口地址译码确定CSA15~A3,A0A2A1端口00PA01PB10PC11控制口系统接口地址译码确定CS表A1A0RDWRCS操作00010端口A数据总线01010端口B数据总线10010端口C数据总线00100数据总线端口A01100数据总线端口B10100数据总线端口C11100数据总线控制字寄存器××××1数据总线三态11010非法状态××110数据总线三态8255A端口选择表A组控制B组控制数据总线DBoooRDWRA0A1RESETCS读/写控制逻辑A口上C口下C口B口PA7~PA0PC7~PC4PC3~PC0PB7~PB0内部总线外设接口CPU接口内部逻辑8255与8088CPU的连接8255(1)A0A1CSD7~D0RDWRRESETPAPBPC8255(2)A0A1CSD7~D0RDWRRESETPAPBPCA0A1译码200H208HD7~D0IORIOWRESET8088主控板208H~20BH200H~203HA15~A2二、8255A的控制字–两种控制字•方式选择控制字•置位复位控制字1)方式选择控制字•A口:3种工作方式•B口:2种工作方式D7D6D5D4D3D2D1D0下C口I/O1=输入0=输出B口I/O1=输入0=输出B口方式0=方式01=方式1上C口I/O1=输入0=输出标志位D7=1A口方式:00=方式001=方式11x=方式2A口I/O1=输入0=输出例9-1对口地址0F8H~0FBH的8255,按PA为方式0、输入;PB为方式1输出;PC7~PC4为输出,PC3为输入的要求对8255进行初始化编程。MOVAL,10010101BOUT0FBH,AL下C口I/O1=输入0=输出B口I/O1=输入0=输出B组方式0=方式01=方式1上C口I/O1=输入0=输出特征位D7=1A组方式:00=方式001=方式11x=方式2A口I/O1=输入0=输出D0D1D2D3D4D5D6D7A组B组110100102)置位复位控制字–使C口的任一个引脚的输出单独置1或置0D7D6D5D4D3D2D1D01置位0复位无关位000选中PC0001选中PC1111选中PC7位选择例9-2:要使端口C的bit3置位的控制字为:00000111B;MOVAL,00000111BOUT0FBH,AL而使端口C的bit3复位的控制字为:00000110B;MOVAL,00000110BOUT0FBH,AL特征位D7=0三、8255A的工作方式1.方式0——基本输入输出方式–适用于不需要应答信号的简单I/O场合。–A口和B口可作为8位端口,C口可作为8位端口也可以高4位和低4位分别作为两个4位的端口,且每个端口均可作为输入口或输出口用。–数据输出有锁存,输入无锁存。例9-3.要求8255A的A口和B口均工作于方式0,A口和下C口作输入口,B口和上C口作输出口,设8255A各端口地址为40H~43H,可用下列指令来设置这种工作方式:MOVAL,91H;方式控制字10010001B→ALOUT43H,AL;方式控制字送控制寄存器2.方式1——选通输入/输出方式•输入或输出都通过应答信号实现•端口A或B用作数据口•端口C的部分引脚用作握手信号线与中断请求线1)选通输入方式PA7~PA08PC4STBAPC5IBFAPC3INTRAPC6PC7I/O线&INTEAoRD方式1(A口)PB7~PB08PC2STBBPC1IBFBPC0INTRB&INTEBoRD方式1(B口)STB-数据选通输入信号,低电平有效,由外设输入IBF-输入缓冲器满信号,高电平有效,由8255A输出的状态信号,向外设指明不能再送入数据。INTE-中断允许信号。INTEA、INTEB是由用户对PC4、PC2按位置位实现的INTR-中断请求信号,高电平有效。是8255A向CPU发出的请求中断信号。STBIBFINTR来自外设的输入数据RD方式1的选通输入时序输入数据RITtRIBt①②③④⑤2)选通输出方式ACKAOBFAINTRAI/O线方式1输出(A口)PA7~PA08PC6PC7PC3PC4PC5&INTEAoWR8PB7~PB0PC2ACKBPC1OBFBPC0INTRB&INTEBoWR方式1输出(B口)OBF-输出缓冲器满信号,输出,低电平有效。表示CPU已输出数据到指定端口ACK-外设的回答信号,低电平有效,由外设送给8255A。表示CPU送到指定端口的数据已被外设接受WROBFINTRACK输出方式1的输出时序WITtAOBtAKtAITt①②③④⑤⑥3.方式2——双向总线方式•PA7~PA0作为双向数据总线•PC3~PC7用作A口的联络控制信号•PC2~PC0可用作B口的应答信号线,或作I/O线。•B口可以工作于方式0或1INTRA-中断请求信号,‘1’有效.OBFA-输出缓冲器满,‘0’有效.ACKA-外设响应信号,‘0’有效.IBFA-输入缓冲器满信号,‘1’有效.STBA-选通输入信号,‘0’有效.PC3INTRAPA78PC7PC6OBFAACKAPC4PC5PC2~PC03STBAIBFAINTE2&~PA0&OOWRRD4.C口状态字D7D6D5D4D3D2D1D0I/OI/OIBFAI:STBAO:INTEAINTRAI:STBBO:INTEBIBFBINTRBD7D6D5D4D3D2D1D0OBFAI:ACKAO:INTEAI/OI/OINTRAI:ACKBO:INTEBOBFBINTRB方式1输入方式1输出D7D6D5D4D3D2D1D0OBFAI:ACKAO:INTE1IBFAI:STBAO:INTE2INTRA方式2