一个芯片可扩展多个并行I/O口可用软件改变接口的功能可直接与单片机连接,进行并行数据传送7.5可编程并行I/O口的扩展8255A和8155是两种常用的可编程并行I/O口的扩展芯片,优点是:学习要点:理解并行通信概念及特点,掌握8255A的功能、工作方式、编程方法及其应用。单片机8255A外设8255A是Intel系列的可编程并行接口芯片,扩展一片可获得3个8位的并行I/O口,是一种单片机与外设之间的接口电路。1.8255A的结构及引脚功能8255A为40引脚的双列直插式(DIP)封装(1)引脚功能①D0~D7为数据线,与单片机的数据总线连接,传数据、命令等。②PA0~PA7(PA口)、PB0~PB7(PB口)、PC0~PC7(PC口)为3个8位并行I/O口,用于8255A与外设之间传数据。③读写控制逻辑线CSRDWR——片选信号,接单片机的地址总线——读信号,接单片机的读信号——写信号,接单片机的写信号RESET——复位信号,接单片机的复位A1、A0——端口选择信号,接单片机的地址总线,与片选/CS一起,确定8255A访问的端口地址。CSD034D133D232D331D430D529D628D727PA04PA13PA22PA31PA440PA539PA638PA737PB018PB119PB220PB321PB422PB523PB624PB725PC014PC115PC216PC317PC413PC512PC611PC710RD5WR36A09A18RESET3568255A端口A上半部(4)(8)(8)A组B组数据总线缓冲I/OI/OI/OI/ORDWRA0A1RESETCSD0-D7PA0-PA7PC4-PC7PC0-PC3PB0-PB7读写控制逻辑控制控制A组A组端口CB组端口C下半部(4)B组端口B(2)内部结构A组控制B组控制PA口PC口高四位PB口PC口低4位③读/写控制逻辑接收CPU传来的控制信号,以控制8255A的操作CSWRA1、A0、RESET④数据总线缓冲器双向三态8位缓冲器,与单片机的数据总线直接相连①并行I/O端口有3个8位并行I/O口,PA、PB、PC它们可以被设置成输入或输出②A、B组控制电路A、B两组控制电路将三个端口分成A、B两组。一片8255A占4个端口地址:PA口、PB口、PC口、控制口,由/CS、A1、A0决定。2.8255A端口的寻址CS控制口110PC口100PB口010PA口000选择A1A0CS、A1、A0接单片机的地址总线,构成单片机访问8255A的16位地址。、A1、A0与地址总线的连接方案不同,端口地址不同。CS片选地址片内地址16位总线访问地址=片选地址+片内地址PA=FF7CHPB=FF7DHPC=FF7EH控制口=FF7FHCS接A7,A1、A0接CPU的A1、A0,则端口地址:CSA1A08255A没接的地址线设为1,则4个端口地址为:8031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P2.4P0.3P0.2P0.1P0.0A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0PA口:××××××××0×××××00PB口:××××××××0×××××01PC口:××××××××0×××××10控制口:××××××××0×××××11例如8255A端口地址的确定片内地址片选地址CS接A15,A1、A0接CPU的A1、A0,则端口地址:CSA1A08255A没接的地址线设为1,则4个端口地址为:8031P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P0.7P0.6P0.5P2.4P0.3P0.2P0.1P0.0A15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0PA口:0×××××××××××××00PB口:0×××××××××××××01PC口:0×××××××××××××10控制口:0×××××××××××××11例如8255A端口地址的确定片内地址片选地址PA=7FFCHPB=7FFDHPC=7FFEH控制口=7FFFH3.8255A的控制字8255A有两个控制字:工作方式控制字PC口置/复位控制字这两个控制字都写到8255A的控制口,用同一个端口地址采用特征位识别。D7=1,表示是工作方式控制字D7=0,表示是PC口置/复位控制字D7D6D5D4D3D2D1D0B组C口低4位B口方式选择0:输出0:输出1:输入1:输入1:方式10:方式0A口01:方式100:方式01X:方式2特征位,为1D7D3D2D1D00:复位1:置位000001010PC0位选择011100101110111PC1PC2PC3PC4PC5PC6PC7A组C口高4位0:输出1:输入0:输出1:输入特征位为0方式选择D5D6D4不用置000D7D6D5D4D3D2D1D0B组C口低4位B口方式选择0:输出0:输出1:输入1:输入1:方式10:方式0A口01:方式100:方式01X:方式2特征位,为1D7D3D2D1D00:复位1:置位000001010PC0位选择011100101110111PC1PC2PC3PC4PC5PC6PC7A组C口高4位0:输出1:输入0:输出1:输入特征位为0方式选择D5D6D4不用置000工作方式控制字PC置/复位控制字D7D6D5D4D3D2D1D0B组C口低4位B口方式选择0:输出0:输出1:输入1:输入1:方式10:方式0A口01:方式100:方式01X:方式2特征位,为1D7D3D2D1D00:复位1:置位000001010PC0位选择011100101110111PC1PC2PC3PC4PC5PC6PC7A组C口高4位0:输出1:输入0:输出1:输入特征位为0方式选择D5D6D4不用置000①工作方式控制字作用是用来设置3个并行口作输入口还是作输出口、设置8255A的工作方式PA口有3种工作方式,PB口有2种工作方式,PC口只有一种工作方式0在方式1或方式2,PC口自动作为PA口、PB口的控制信号位为0,为输出口;为1,为输入口8255A有三种工作方式:方式0——基本输入/输出方式方式1——选通输入/输出方式方式2——双向输入/输出方式工作方式控制字标志位A组方式设置A口C上口B组方式B口C下口11/01/01/01/01/01/01/0含义方式0、1、2输入/输出输入/输出方式0、1输入/输出输入/输出工作方式控制字C口置/复位控制字标志位不使用位C口位地址编码位状态0×××1/01/01/01/0含义一般取简码000选择PC7~PC0位置位/复位②PC口置/复位控制字其作用是用来设置PC口某位输出高电平或低电平。实现某些位控制,如启/停外设、开关的通/断、继电器的吸合/释放等例设8255A的控制口地址为FF7FH,试编程设置:PA口为工作方式0输入,PB口为工作方式0输出,PC4~PC7为输出,PC0~PC3为输入。则工作方式控制字为10010001B,其初始化程序:MOVDPTR,#0FF7FH;控制口地址MOVA,#91H;工作方式控制字MOVX@DPTR,A;写控制字到控制口D7D6D5D4D3D2D1D0B组C口低4位B口方式选择0:输出0:输出1:输入1:输入1:方式10:方式0A口01:方式100:方式01X:方式2特征位,为1D7D3D2D1D00:复位1:置位000001010PC0位选择011100101110111PC1PC2PC3PC4PC5PC6PC7A组C口高4位0:输出1:输入0:输出1:输入特征位为0方式选择D5D6D4不用置000PC置/复位控制字4.8255A的工作方式8255A有3种工作方式:方式0、方式1、方式2①方式0——基本输入/输出方式2个8位I/O口(PA、PB),2个4位I/O口(PC口高4位、低4位)任意一个口可作输入口或输出口两种数据传送方式:无条件传送方式不需任何应答联络信号。认为外设随时是准备好的,如键盘,显示器查询传送方式需要联络信号,这时,PA、PB作数据口,人为定义PC口作控制信号提供外设状态、外设选通信号,可设置为4位作输入、4位作输出②方式1——选通输入/输出方式PA口、PB口作输入/输出口,PC口自动提供固定关系的选通信号和应答信号A组:B组:PA口为数据口PC口高四位作联络信号PB口为数据口PC口低四位作联络信号③方式2——双向输入/输出方式只有PA口能够设定为方式2,PA口为8位双向数据口,能读能写PC口的PC3~PC7共5位作PA口数据输入/输出的联络信号PB口不能工作在方式2,仍可工作在方式0或方式1三个口分成两组:A组、B组A口借用C口的一些信号线用作控制和状态线,形成A组;B口借用C口的一些信号线用作控制和状态线,组成B组。在方式1下,A口和B口的输入输出均带有锁存。PA口有方式0、1、2PB口有方式0、1,没有方式2PC口只有方式08255PC为控制口时各引脚功能8255APC口各引脚服务功能定义表端口工作方式PC7PC6PC5PC4PC3PC2PC1PC0方式1输入IBFAASTBINTRA方式1输出AOBFAACKINTRAPA方式2双向AOBFAACKIBFAASTBINTRA方式1输入BSTBIBFBINTRBPB方式1输出BACKBOBFINTRBAOBF——输出缓冲器满信号,CPU已将数据送出,通知外设取。——外设响应信号,表示外设已将数取走。AACKIBFA——输入缓冲器满信号,即外设所送数据已装入锁存器。——选通输入脉冲信号,表示外设待输入数据已经准备好。ASTBINTRA——中断请求信号,为“1”时向CPU发出中断请求。PB口的各服务功能含义与PA口相同。4.8255A的应用P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7WRRDRDWRRESETCSA1A0D7D6D5D4D3D2D1D0PAPBPC8255A8031ALEGOED7D6D5D4D3D2D1D0Q7Q6Q5Q4Q3Q2Q1Q0EA74LS3738255A与单片机的连接数据线D0~D7接P0口RDWRRDWR接单片机的、、复位线RESET接到复位电路,与CPU一起复位P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7WRRDRDWRRESETCSA1A0D7D6D5D4D3D2D1D0PAPBPC8255A8031ALEGOED7D6D5D4D3D2D1D0Q7Q6Q5Q4Q3Q2Q1Q0EA74LS3738255A与单片机的连接未接的地址线设为1,则8255A的PA、PB、PC、控制口的地址:CS、A1、A0接地址总线CSP0.7、P0.1、P0.0经锁存器74LS373接、A1、A0FF7CH、FF7DH、FF7EH和FF7FHCS如将接P2.7,则8255A的四个端口地址为:7FFCH,7FFDH、7FFEH、7FFFH单片机与8255A的接口电路如前图,PA口作输出口,接8个LED发光二极管,PB口作输入口,接8个按键开关,PC口不用,都工作在方式0。要实现“按下任意键,对应的LED发光”,相应的程序如下:MOVDPTR,#0FF7FH;指向8255A的控制口MOVA,#82H;工作方式控制字MOVX@DPTR,A;向控制口写控制字,PA口输出,PB口输入LOOP:MOVDPTR,#0FF7DH;指向8255A的PB口MOVXA,@DPTR;读PB口按键状态MOVDPTR,#0FF7CH;指向8255的PA口MOVX@DPTR,A;从PA口输出,驱动LED发光。SJMPLOOP例题8255A+5VK0PB0PB3PB4PB7K3K4K7..................PA0PA7PA4PA3发光二级管驱动器......L0L7L4L3......................+5V读PB口开关状态,送PA口输出控制LED,循环8255A仿真界面8255A输入/输出仿真结果8255A输入/输出仿真结果8255