18.2并行接口并行数据传输:以计算机字长,通常是8、16或32位为传输单位,利用8、16或32个数据信号线一次传送一个字长的数据适合于外部设备与微机之间进行近距离、大量和快速的信息交换,如微机与并行接口打印机、磁盘驱动器等微机系统中最基本的信息交换方法,例如系统板上各部件之间的数据交换并行数据传输需要并行接口的支持28.2.1并行接口电路8255具有多种功能的可编程并行接口电路芯片最基本的接口电路:三态缓冲器和锁存器与CPU间、与外设间的接口电路:状态寄存器和控制寄存器还有端口的译码和控制电路、中断控制电路分3个端口,共24个外设引脚共3种输入输出工作方式方式0:基本输入输出方式方式1:选通输入输出方式方式2:双向选通传送方式31.内部结构和引脚数据总线缓冲器内部控制线内部数据线D0~D7A组控制A组端口AA组端口C上部B组控制B组端口BB组端口C下部读写控制逻辑PC0~PC3PB0~PB7PC4~PC7PA0~PA7RDWRA0A1CSRESET4连接说明①8255的数据线D7~D0接8086系统的数据线低8位。②8255的A0接8086的A1,8255的A1接8086的A2,使用偶地址传递信息。③端口地址A15~A80~0端口00011011A口B口C口控制口A7A6A5A4A3A2A1地址0060H0062H0064H0066H0A0011XX58255外设数据端口端口A:PA0~PA7A组,支持工作方式0、1、2常作数据端口,功能最强大端口B:PB0~PB7B组,支持工作方式0、1常作数据端口端口C:PC0~PC7仅支持工作方式0,分两个4位,每位可独立操作A组控制高4位PC4~PC7,B组控制低4位PC0~PC3可作数据、状态和控制端口控制最灵活,最难掌握68255的方式控制字方式控制字送到控制口,以选择A、B、C三个口的工作方式1标识端口C(上半部)1=输入0=输出D6D5D4D3D2D1D0B组方式选择0=方式01=方式1端口B1=输入0=输出端口C(下半部)1=输入0=输出A组方式选择00=方式001=方式11X=方式2端口A1=输入0=输出8255方式控制字A组B组7控制字的端口地址:芯片的最高地址。D7=1作为控制字的特征位。向芯片最高地址写D7=1的信息,表示是方式控制字。例如MOVAL,10000001BOUT66H,AL是写方式控制字,A口设置为方式0,输出,C口高四位为输出,B口为方式0,输出,C口低四位为输入。通过设置方式控制字选择8255的工作方式对最高地址写时,如果D7=0,表示写的不是方式控制字,而是C端口按位置位/复位控制字对某一特定位进行置位/复位操作。88255A有三种工作方式方式0:无条件输入输出方式1:选通输入输出方式2:双向方式A口:可工作在三种工作方式,B口:仅可工作在方式0和方式1C口:依据AB口工作方式在方式1和方式2中C口作为联络信号9通过方式控制字设定8255的工作方式(用OUT指令)。通过IN/OUT指令进行数据的输入/输出。例如:PA工作在方式0输出,PB工作在方式0输入C上半部(PC7~PC4)为输入,下半部输出,方式控制字:10001010BMOVAL,10001010BOUT66H,AL;PA口为方式0输出MOVAL,1OUT60H,AL;置PA0为高电平10方式控制字未规定C口的工作方式,只规定了C口的数据传送方向,原因是在不做联络信号使用时,C口只能工作在方式0在A、B口需要联络信号(方式1,方式2),C口做联络信号使用。C在作为输入口时,利用IN指令输入例如INAL,64HMOVDX,0064HINAL,DXC在做为输出口时,利用常用的OUT指令输出例如IN64H,ALMOVDX,0064HOUTDX,AL也可以利用复位置位控制字指定某一位输出信号为“1”或“0”。11C端口按位操作控制字标识D00D7XXXB2B1B01/0D0=1置1D0=0复位000未用12345670101010101100110001111按位控制字写入8255的控制口该控制字仅对8255端口C的输出锁存器操作起作用该控制字主要用于方式1和方式2,方式0下可直接对C口操作MOVAL,09HOUT66H,AL;置C口输出锁存位PC4为1D7=0是特殊标识122.工作方式0:基本输入输出方式方式0输入执行输入IN指令,输入外设数据datadata输入端口D0~D7RDCS,A1,A0132.工作方式0:基本输入输出方式方式0输出执行输出OUT指令,将数据送给外设WRdatadata输出端口D0~D7CS,A1,A014+5V+5VPA0PA1PA2PA3PA4PA5PA6PA7PB1PB2PB3D7~D0RDWRA2A1RESETCSRESETA0A1/WR/RD825510K*4300*8D7~D0≥1G1G2AG2BCBAY6A0A15A6M/*IOA5A4A3PB0例如:PA端口基本输出连接LED,PB基本输入方式连接开关,由PB读入开关状态,闭合,PA口对应的LED亮。15方式控制字:10001011B(C口不用管,设为1—输入)MOVAL,8BH;PA口输出,PB口输入,PC全部输入OUT66H,AL;INAL,62H;读PB口状态CPLA;闭合时,输入为0,取反后=1,再由外部;反相器后变为0,对应LED亮OUT60H,AL;1标识D6D5D4D3D2D1D0A组B组A方式编码AI/OC_HI/OB方式编码BI/OC_LI/O163.工作方式1:选通输入输出方式借助于选通(应答)联络信号进行输入或输出只有端口A和端口B可以采用方式1作为输入或输出的数据端口利用端口C的3个引脚作为应答联络信号还提供有中断请求逻辑和中断允许触发器对输入和输出的数据都进行锁存适用于查询和中断方式的接口电路178255工作方式1输入引脚A组引脚外设将STBA信号送PC4表示外设已经准备好数据8255接收并锁存输入数据后,输出缓冲器满信号,并输出INTRACPU读取后,自动清除IBF信号中断请求信号请求CPU接收数据中断允许触发器PC4PC5PC3PA7~PA0INTEAIBFAINTRASTBA外设数据送PA18①外设有新数据,送PA口②外设将选通信号/STB送到PC4引脚,表示外设已送出新数据③8255接收并锁存PA口数据,由PC5送出输入缓冲器满信号IBF,通知外设不要送新数据④8255由PC5在内部触发中断申请,若中断申请允许INTEA=1,则通过PC3向CPU发出中断请求信号INTR⑤CPU响应中断,读取8255的新数据,读数据时自动清除IBF信号,以便外设可送出下一次新数据⑥INTEA是A口中断允许控制信号,它是C口输出锁存器第4位(PC4’),由CPU写入。=1允许中断,=0禁止中断信号说明19选通输入工作时序异步时序:没有时钟,由引脚控制信号定时STB*和IBF是外设和8255间应答联络信号dataINTRIBF输入端口D0~D7STBRDdata读取PA,自动清除IBF20当然也可以由CPU通过查询INTR_A信号(读取PC口)来判断外设是否已通过A口送来数据。一段设置程序如下:MOVAL,0B0HOUT66H,AL;PA口方式1输入MOVAL,09H;用C口置位控制字设置PC4‘=1OUT66H,AL;置PC4’=1中断允许在C口做联络信号使用时,要C口设置某一位为1或0,使用置位或清除控制字。例如上面要使PC4=1,置位控制字0XXX1001B09H写入66H端口。218255工作方式INTEBPC2PC1PC0PB7~PB0STB_BIBF_BINTR_BB口作选通输入接口PC2’②B口选通输入C口的PC3仍然可以做IO口使用,使用按位置位控制字来输出1或022①外设有新数据,送PB口②外设送/STB选通信号到PC2引脚,表示外设已送出新数据③8255接收并锁存PB口数据,由PC1送出IBF输入缓冲器满信号,通知外设不要送新数据④8255由PC1在内部触发中断申请,若中断申请允许INTEB=1,则通过PC0向CPU发出中断请求信号INTR⑤CPU响应中断,读取8255的新数据,读数据时自动清除IBF信号,以便外设可送出下一次新数据⑥INTEBB口中断允许,是C口输出锁存器第2位(PC2’)。1中断允许0中断禁止23应用程序方式控制字:10000110B——86H(C口没用于联络的引脚全设置为0——输出)MOVAL,86HOUT66H,AL;PB口方式1输入MOVAL,05H;OUT66H,AL;置PC2’=1中断允许248255工作方式1输出引脚A组引脚外设响应信号表示外设已经接收到数据输出缓冲器满信号表示CPU已经输出了数据中断请求信号请求CPU再次输出数据中断允许触发器PC6PC7PC3PA7~PA0INTEAOBFAINTRAACKA25①CPU输出新数据到PA口,自动置PC7为低,送/OBF输出缓冲器满信号到外设,通知外设PA口已有可用数据②外设若接收数据,则返回/ACK收到信号到PC6引脚,表明已取走数据,由其清除/OBF输出,并触发中断申请③若中断允许INTEA=1,则由PC3向CPU发出INTR中断请求信号④CPU响应中断,可发出下一个新数据⑤INTEAA口中断允许,是C口输出锁存器第6位PC6’)。1中断允许0中断禁止。26选通输出工作时序异步时序:没有时钟,由引脚控制信号定时OBF*和ACK*是外设和8255间应答联络信号INTRdatadata输出端口D0~D7WROBFACK27MOVAL,A0HOUT66H,AL;PA口方式1输出MOVAL,0DHOUT66H,AL;置PC6’=1中断允许288255工作方式INTEBPC1PC2PC0ACK_BOBF_BINTR_BB口作选通输出接口PC2’PB7~PB0②B口选通输出29①CPU输出新数据到PB口,自动置PC1为低,送/OBF输出缓冲器满信号到外设,通知外设PB口已有可用数据②外设若接收数据,则返回/ACK收到信号到PC2引脚,表明已取走数据,由其清除/OBF输出,并触发中断申请③若中断允许INTEB=1,则由PC0向CPU发出INTR中断请求信号④CPU响应中断,可发出下一个新数据⑤INTEBB口中断允许,是C口输出锁存器第2位(PC2’)。1中断允许0中断禁止。30MOVAL,84HOUT66H,AL;PB口方式1输出MOVAL,05HOUT66H,AL;置PC2’=1中断允许318255工作方式带联络的双向输入输出接口。仅A口有此方式。将A口方式1的选通输入和选同输出相组合便构成了方式2INTE1为C口输出锁存器第6位PC6’INTE2为C口输出锁存其第4位PC4’1中断允许0禁止中断PC3OBF_AACK_AINTRPC7PC6INTE1PC4PC5INTE2STB_AIBF_APC6’PC4’PA7~PA03.方式2—双向方式32MOVAL,C0HOUT66H,AL;PA口方式2双向MOVAL,0DHOUT66H,AL;置PC6’=1中断允许MOVAL,09HOUT66H,AL;置PC4’=1中断允许33端口C的读出内容方式1输入×××INTRAINTE2IBFAINTE1OBFAINTRBOBFBINTEBINTRAI/OI/OINTEAOBFA方式2双向方式1输出INTRBIBFBINTEBINTRAINTEAIBFAI/OI/OD0D1D2D3D4D5D6D7A组B组34C端口状态A\B在方式0时,可分别设置C端口高4位、低4位做输入还是输出在方式,C端口有一部分用于特殊目的。方式1输入×××INTRAINTE2IBFAINTE1OBFAINTRBOBFBINTEBINTRAI/OI/OINTEAOBFA方式2双向方式1输出INTRBIBFBINTEBINTRAINTEAIBFAI/OI/OD0D1D2D3D4D5D6D7A组B组354.8255的编程:写入方式控制字控制字写入控制字I/O地址:A1A0=11——最高端口1D6D5D4D3D2D