1第八章:I/O接口及输入输出通道应用2第八章:I/O接口及输入输出通道应用8.0可编程并行接口芯片8255A8.18255与简单开关量输入输出控制8.28255与步进电机控制8.3可编程中断控制器8259A应用8.4可编程串行接口芯片8251A应用8.58253与电子发声控制8.6A/D与D/A转换器PA18255A的引脚与结构8255A的引脚8255A是可编程的并行输入输出接口芯片,它具有三个8位并行端口(A口、B口和C口),具有40个引脚,双列直插式封装,由+5V供电(VCC)。8255APC4PC0PC1PC2PC3PB0PB1PB23PA2PA1PA0RDCSGNDA1A0PC7PC6PC512345678910111213141516171819202827262524232221403938373635343332313029D6D7VCCPB7PB6PB5PB4PB3PA4PA5PA6PA7WRRESETD0D1D2D3D4D58255AA口C口C口B口PA7~PA08PC7~PC44PC3~PC04PB7~PB08A组B组D7~D0WRRDA0A1CSRESET38.0可编程并行接口芯片8255A8.0可编程并行接口芯片8255A48255A的内部结构B组控制部件数据总线缓冲器读/写控制逻辑A组端口A(8)A组端口C(高4位)B组端口C(低4位)B组端口B(8)A组控制部件内部DB(8)PA7~PA0PC7~PC4PC3~PC0PB7~PB0CSRDA1A0RESETD7~D0WRCPU外设8.0可编程并行接口芯片8255A58255A的工作方式与控制字8255A的工作方式8255A在使用前要先写入一个工作方式控制字,以指定A、B、C三个端口各自的工作方式。8255A共有三种工作方式:方式0——基本输入输出方式,即无须联络就可以直接进行8255A与外设之间的数据输入或输出操作。方式1——选通输入输出方式,此时8255A的A口和B口与外设之间进行输入或输出操作时,需要C口的部分I/O线提供联络信号。方式2——双向输入输出方式,即同一端口的I/O线既可以输入也可以输出,只有A口可工作于方式2。端口A可处于三种工作方式(方式0,方式1,方式2),端口B可处于两种工作方式(方式0,方式1),端口C常常被分成高4位和低4位两部分,可分别用来传送数据或控制信息。8.0可编程并行接口芯片8255A68255A的控制字(定义工作方式控制字和C口置位/复位控制字)(1)工作方式选择控制字8255A的工作方式可由CPU写一个工作方式选择控制字到8255A的控制端口实现。可以分别选择端口A、端口B和端口C上下两部分的工作方式。注意8255A工作方式选择控制字的最高位D7(特征位)应为1。8.0可编程并行接口芯片8255A7(2) C口置位/复位控制字8255A的C口按位置位/复位控制字的最高位D7(特征位)应为0。无关位D3D1D5×D0位操作D2PC口位选择D7特征位D6×D4×D7=0标明是C口位操作控制字例如::•使端口C的PC4置位的控制字为00001001B(09H)•使PC4复位的控制字为00001000B(08H)000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC70复位1置位当端口A定义为方式1或方式2或将端口B定义为方式1时,要求使用端口C的某些位作控制用,这时需要一个置位/复位控制字对控制端口C的各位进行置位/复位操作。8各种工作方式的功能方式0——基本输入输出方式方式0无须联络就可以直接进行8255A与外设之间的数据输入或输出操作。它适用于无须应答(握手)信号的简单的无条件输入/输出数据的场合,即输入/输出设备始终处于准备好状态。在此方式下,A口、B口、C口的高4位和低4位可以分别设置为输入或输出,即8255A的这四个部分都可以工作于方式0。输入或输出的定义是相对于8255A芯片而言的。当数据从外设送往8255A时为输入,反之,数据从8255A送往外设则为输出。8.0可编程并行接口芯片8255A9各种工作方式的功能方式0——基本输入输出方式100XX0XX如果三个端口均处于工作方式0,则可由工作方式控制字定义16种工作方式的组合。此时,CPU与三个端口之间交换数据可以直接由CPU执行IN或OUT指令来完成。8.0可编程并行接口芯片8255A方式0也可以用于查询方式的输入或输出接口电路,此时端口A和B分别作为一个数据端口,而用端口C的某些位作为这两个数据端口的控制和状态信息。☞例如右图就是一个A口和B口工作在方式0时利用C口某些位作为联络信号的接口电路。在此例中将8255A设置为:A口输出,B口输入,C口高4位输入(现仅用PC7、PC6两位输入外设的状态),C口低4位输出(现仅用PC1、PC0两位输出选通及清除信号)。此时8255A的工作方式控制字为10001010B(8AH)。选通准备好准备好清除A口PC1PC78255APC6PC0B口输出设备输入设备D7D6D5D4D3D2D1PC7~4方向B方式B方向D0特征A方式A方向PC3~0方向10101010008.0可编程并行接口芯片8255A☞其工作原理是:在向输出设备送数据前,先通过PC7查询设备状态,若设备准备好则从A口送出数据,然后通过PC1发选通信号使输出设备接收数据。从输入设备取数据前,先通过PC6查询设备状态,设备准备好后,再从B口读入数据,然后通过PC0发清除信号,以便输入后续字节。与后面介绍的选通输入输出方式(方式1)和选通双向输入输出方式(方式2)相比,方式0的联络信号线可由用户自行安排(方式1和方式2中使用的C口联络线是已定义好的),且只能用于查询,不能实现中断。输出设备选通准备好准备好清除A口PC1PC78255APC6PC0B口输入设备118.0可编程并行接口芯片8255A12方式1——选通输入输出方式:这种工作方式下,数据输入输出操作要在选通信号控制下完成与方式0相比,它的主要特点是当A口、B口工作于方式1时,C口的某些I/O线被定义为A口和B口在方式1下工作时所需的联络信号线,这些线已经定义,不能由用户改变。1)-STB:选通信号。由外设送给8255A,低电平有效-STB有效时,将外部输入的8位数据锁存到所选端口的输入锁存器。对于A组来说,指定端口C的PC4用来接收向端口A输入的STB信号;对于B组来说,指定端口C的PC2位用来接收向端口B输入的-STB信号。2)IBF:输入缓冲器满信号,向外部输出,高电平有效IBF有效时,表示由输入设备输入的数据已占用该端口的输入锁存器,它实际是对-STB信号的回答信号,待CPU执行IN指令时,-RD有效,将输入数据读入CPU,其后沿将IBF置0,表示输入缓冲器已空,外设可继续输入后续数据。对A组来说,指定端口C的PC5作为从端口A输出的IBF信号;对B组来说,指定端口C的PC1作为从端口B输出的IBF信号。3)INTR:中断请求信号,向CPU输出,高电平有效A组和B组向CPU发中断请求信号。A组的INTRA通过PC3送出;B组的INTRB通过PC0送出。(1)采用工作方式1进行输入操作时,需要使用的控制信号如下:8.0可编程并行接口芯片8255A13方式1——选通输入输出方式:PC4STB方式1输入PC5IBFPC3INTRA组PC1IBFPC0INTRB组PC2STB8255A中的端口A和端口B均可工作于工作方式1完成输入操作功能。(1)当端口A和B同时被定义为方式1完成输入操作时,端口C的PC0~PC5被用作控制信号,只有PC7和PC6位可用来完成数据输入或输出操作,因此实际上构成两种组合状态:1)端口A、B输入,PC7和PC6输入;2)端口A、B输入,PC7和PC6输出。中断允许或屏蔽(C口置位或复位操作):1)A端口(PC4)=1处于中断允许;=0,处于中断屏蔽状态;2)B端口(PC2)=1处于中断允许;=0,处于中断屏蔽状态;8.0可编程并行接口芯片8255A14方式1——选通输入输出方式1)-OBF:输出缓冲器满信号。向外部输出,低电平有效-OBF有效时,表示CPU已将数据写入该端口正等待输出。当CPU执行OUT指令,-WR有效时,表示将数据锁存到数据输出缓冲器,由-WR的上升沿将-OBF置为有效。对于A组来说,指定端口C的PC7用来作为从端口A输出的-OBF信号;对于B组,指定端口C的PC1位用作从端口B输出的-OBF信号。2)-ACK:外部应答信号。由外部输入,低电平有效-ACK有效时,表示外部设备已经收到由8255A输出的8位数据,它实际是对-OBF信号的回答信号。对A组来说,指定端口C的PC6用来接收向端口A输入的-ACK信号;对B组来说,指定端口C的PC2用来接收向端口B输入的-ACK信号。3)INTR:中断请求信号,向CPU输出,高电平有效A组和B组向CPU发中断请求信号。A组的INTRA通过PC3送出;B组的INTRB通过PC0送出。(2)采用工作方式1进行输出操作时,需要使用的控制信号如下:8.0可编程并行接口芯片8255A15方式1——选通输入输出方式:8255A中的端口A和端口B均可工作于工作方式1完成输出操作功能。(2)当端口A和B同时被定义为方式1完成输出操作时,端口C的PC6,PC7和PC3~PC0被用作控制信号,只有PC4和PC5位可用来完成数据输入或输出操作,因此实际上构成两种组合状态:1)端口A、B输出,PC4和PC5输入;2)端口A、B输出,PC4和PC5输出。方式1输出PC6ACKPC7OBFPC3INTRA组PC1OBFPC0INTRB组PC2ACK中断允许或屏蔽(C口置位或复位操作):1)A端口(PC6)=1处于中断允许;=0,处于中断屏蔽状态;2)B端口(PC2)=1处于中断允许;=0,处于中断屏蔽状态;8.0可编程并行接口芯片8255A16方式1——选通输入输出方式(3)端口A输入,端口B输出当被定义为方式1端口A输入,端口B输出时,端口C的PC5~PC0被用作控制信号,只有PC6和PC7位可用来完成数据输入或输出操作,这又构成两种组合状态:1)端口A输入,端口B输出,PC6和PC7输入;2)端口A输入,端口B输出,PC6和PC7输出。8.0可编程并行接口芯片8255A17方式1——选通输入输出方式(4)端口A输出,端口B输入当被定义为方式1端口A输出,端口B输入时,端口C的PC6和PC7,PC3~PC0被用作控制信号,只有PC4和PC5位可用作数据输入/输出用,这又构成两种组合状态:1)端口A输出,端口B输入,PC4和PC5输入;2)端口A输出,端口B输入,PC4和PC5输出。8.0可编程并行接口芯片8255A8255A中的端口A和B工作在方式1时,可构成8种不同的状态端口C的低四位总是作控制用,而高四位中总是保持有两位仍然可作数据输入/输出用,因此控制字中的D0位可为任意值,由D1,D3,D4位的不同取值构成八种不同的状态组合方式。(也允许A/B口为方式0,与另一端口的方式1配合工作)8.0可编程并行接口芯片8255A19INTR(PC6)≥1PC3方式2——选通双向输入输出方式选通双向输入输出方式,即同一端口的I/O线既可以输入也可以输出,只有A口可工作于方式2。此时C口有5条线(PC7∼PC3)被规定为联络信号线。剩下的3条线(PC2∼PC0)可以作为B口工作于方式1时的联络线,也可以独立工作于方式0。PA7~PA0&PC7PC6INTE1(PC4)INTE2&PC4PC5PC2~PC0OBFACKSTBIBFI/ORDWRD71D61工作方式控制字D5D4D3D2××1/01/0D11/0D01/08.0可编程并行接口芯片8255A例:编一初始化程序,使8255A的PC5端输出一个负跳变。如果要求PC5端输出一个负脉冲程序又怎样的?控制口地址为83H。MOVAL,0BH;PC5置1-ALMOVDX,83H;控制口地