1、第9章 可编程并行接口芯片8255A并行接口一般具有以下特点:1)通过多根信号线同时传送多位数据;2)并行接口多用于传送距离短,数据量大,速度高的实时传输场合;3)传送时一般不需要特定的数据传送格式。,1.数据线 (8根)D07:传送CPU与8255之间的数据、控制字和状态字,8255A 芯片的引脚特性,4.控制线 (4根)RD,WR:读写控制线,控制CPU与8255 之间的信息传送和流向CS:片选线RESET:复位线,高电平复位)使内部寄存器全部清零。,3.片内(端口选择)地址线(2根)A1,A0:寻址 PA,PB,PC数据口和控制口,2. I/O端口信号线(24根)PA07 PB 07 P
2、C07:传送8255与外设之间的数据和联络信息,5.电源线(2根),8255A的结构,双向三态缓冲,输入输出锁存/缓冲,输出锁存/缓冲,输入缓冲,输出锁存/缓冲,输入缓冲,还可作握手联络线,当RD=0时,允许CPU从8255A读取数据或状态字;当WR=0时,允许CPU将数据或控制字写入8255A;CS=0时,选中芯片;A1,A0:口选线,A组控制块控制A口及C口的高4位。B组控制块控制B口及C口的低4位。,表9-1 8255A基本操作,在初始化工作中,由CPU写入控制口的控制字有两类:一类称为方式控制字,用于定义各端口的工作方式;另一类称为C口置位/复位控制字 (用D7位区别)8255A有三种
3、基本的工作方式:方式0:基本输入/输出方式方式1:选通输入/输出方式(A、B口受C口控制)方式2:双向总线I/O方式(只有A口可以工作于方式2),8255A的方式选择,方式控制字,8255A的控制字,C口置位/复位控制字,例如:现指定端口A以方式0输出;指定端口B以方式1输入;端口C高4位为输入,低4位为输出。则根据方式控制字的定义格式可写出相应的方式选择控制字为:10001110B或8EH, 8255A初始化程序段如下:(若控制口的分配地址为303H)MOV DX,303HMOV AL,1 000 1110B(或MOV AL,8EH)OUT DX,AL,方式标志位,A口0方式,A口为输出,B
4、口1方式,C口低4位为输出,C口高4位为输入,B口为输入,A组,B组,例如,设8255A端口地址为60H63H,现要求先置PC4为高电平,再复位PC4,则相应的程序段如下: MOV AL,00001001BOUT 63H,ALMOV AL,00001000BOUT 63H,AL,置/复位控制字,任意,C口位选择,4 2 1,选中C口的哪一位,置:1复:0,8255A的工作方式 (1)方式0(基本I/O方式) PA、PB、PC可分别被定义为方式0输入或方式0输出。适用于无条件传输数据的设备,如读一组开关状态、控制一组指示灯,不使用应答信号,CPU可以随时读出开关状态,随时把一组数据送指示灯显示。
5、,(2)方式1(选通或应答式I/O方式) 有选通输入和选通输出两种工作方式。 A口和B口皆可独立地设置成工作方式1。在方式1下,C口用作A口和B口的控制联络线,以实现中断方式或查询方式的数据传输。,方式1下的C口状态字格式,方式1输入 STB:设备的选通信号输入线,低电平有效,通常是外设给8255A的信号,表示外设给8255的数据已到达引脚。IBF:端口锁存器满标志输出线,高电平有效。通知外设数据已从引脚取入锁存器中。INTE:8255A端口内部的中断允许触发器。 “1”表示中断允许(手动设置)。INTR:中断请求信号线,高电平有效。当STB、IBF、INTE都为”1”时,INTR就置“1”
6、。,方式1输出 :输出锁存器满状态标志输出线。 表示CPU已将数据输出到此端口。 :设备响应信号输入线。表示外设已取走数据。 INTR:中断请求信号输出线,高电平有效。当 、 和INTE都为”1”时,INTR被置“1”,发出中断请求 。,A、B 端口方式 1 比较,A 端口输入借用 C 端口位 PC3 、PC4 、 PC5 A 端口输出借用 C 端口位 PC3 、PC6 、 PC7 B 端口输入借用 C 端口位 PC0 、PC1 、 PC2 B 端口输出借用 C 端口位 PC0 、PC1 、 PC2A 端口输入、输出借用不同的 C 端口的位 B 端口输入、输出借用相同的 C 端口的位B 端口只
7、有方式 1 选通输入/输出 A 端口还有方式 2 双向数据传送,C 端口未借用位的使用,A 端口方式 0、B 端口方式 0 C 端口所有位未被借用,PC0 PC7 可用A 端口方式 0、B 端口方式 1 PC0 PC2 被借用,PC3 PC7 可用A 端口方式 1 输入、B 端口方式 0 PC3、PC4、PC5 被借用,PC0 PC2、PC6、PC7 可用A 端口方式 1 输出、B 端口方式 0 PC3、PC6、PC7 被借用,PC0 PC2、PC4、PC5 可用A 端口方式 1、B 端口方式 1 A 端口输入, PC6、PC7 可用;输出, PC4、PC5 可用,(3)方式2(双向总线I/O
8、方式),方式2仅对PA口有意义。 方式2使PA口成为8位双向三态数据总线口,既可发送数据又可接收数据。PA口方式2工作时,PB口仍可作方式0和方式1 ,PC口高5位作状态控制线。,端口C的状态字端口C的状态字有以下几种格式:1、方式1状态字输入状态字: D7 D6 D5 D4 D3 D2 D1 D0 输出状态字: D7 D6 D5 D4 D3 D2 D1 D0,例如:允许端口A中断请求,禁止端口B中断请求(输入方式),则其程序段为:(设控制口地址为303H) MOV DX,303H MOV AL,00001001B OUT DX,AL MOV AL,00000100B OUT DX,AL2、
9、方式2状态字其状态字: D7 D6 D5 D4 D3 D2 D1 D0,8255A应用举例1、基本输入/输出应用举例以下是8086微机系统扩展一片8255A作为并行口的电路图,同时还配以74LS138译码器等芯片,如图9-14所示。端口A为方式1输入,以中断方式与CPU交换数据,中断类型号为0FH;端口B工作于方式0输出,端口C的普通I/O作为输入。,设端口A中断服务子程序名为SERA。具体8255A的初始化程序如下:MOV AL,10111001BMOV DX,0B6HOUT DX,AL ;方式控制字送控制口MOV AL,00001001BOUT DX,AL ;C口置位/复位控制字送控制口M
10、OV AX,0MOV DS,AX ;中断向量表的段地址为0000HMOV DI,0FH*4 ;获取中断向量地址MOV AX,OFFSET SERA ;取中断向量并送入中断向量表 MOV DI, AXMOV AX,SEG SERAMOV DI+2, AX,2、 8255A作为并行打印机接口例要求:将8255A的A口连接一个并行打印机,工作在方式1,数据输出,采用查询方式将内存输出缓冲区BUFFER中的100H个字节数据送打印机输出,已知接口电路如下,编制打印驱动程序。(由74LS123构成单稳态电路,只要输入一个下降沿信号就可以输出一个低脉冲信号。 ),DATASEGMENTBUFFERDB10
11、0H DUP(?)DATAENDSCODESEGMENTASSUMCS:CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAL, 0A8H ; A口方式1输出, PC4输入MOVDX, 0FFE3H ; 控制口地址OUTDX, AL ; 控制字写入控制口MOVCX, 100H ; 传送字节数送CX寄存器MOVSI, OFFSET BUFFER ; 数据缓冲区首地址送SI寄存器L1: MOVDX, 0FFE2H ; C口地址IN AL, DX ; 读C口内容, 查询BUSY信号ANDAL, 10H ; 保留PC4状态, 判断BUSY=1?JNZL1 ; BUSY1, 打印机处于忙状态, 应该继续查询MOVAL, SI ; BUSY0, 打印机处于空闲状态, 可以输出数据MOVDX, 0FFE0H; A口地址OUTDX, AL; 输出数据INCSI; 修改数据缓冲区地址LOOPL1 ; 数据未传送完毕, 继续传送MOVAH, 4CHINT21HCODEENDSENDSSTART,第9章 作业,P333-336 习题例解 1 (1), (2), (3), 4, 5, 6P338- 339 练习题 1 (1) (4), 2 (1) (4), 4,