590 likes | 830 Views
接口技术. 第七章 并行接口. 7.1 并行接口的特点 7.2 可编程并行接口 8255A 7.3 8255A 的方式 0 及应用 7.4 8255A 的方式 1 及应用 7.5 8255A 的方式 2 及应用. 7.1 并行接口的特点. ① 并行接口最基本的特点是在多根数据线上 以数据字节 ( 字 ) 为单位与 I / O 设备或被控对 象传送信息。如打印机接口, A / D 、 D / A 转换器接口, IEEE-488 接口。 ②在并行接口中,除了少数场合 ( 无条件传送 ) 之 外,一般都要求在接口与外设之间设 置 并行数据线
E N D
第七章 并行接口 7.1并行接口的特点 7.2可编程并行接口8255A 7.3 8255A的方式0及应用 7.4 8255A的方式1及应用 7.5 8255A的方式2及应用
7.1 并行接口的特点 ①并行接口最基本的特点是在多根数据线上 以数据字节(字)为单位与I/O设备或被控对 象传送信息。如打印机接口,A/D、D/A 转换器接口,IEEE-488接口。 ②在并行接口中,除了少数场合(无条件传送)之 外,一般都要求在接口与外设之间设置并行数据线 的同时,至少还要设置两根握手(联络)信号线,以 便进行互锁异步握手方式(即查询方式)的通信
③在并行接口中,8位或16位是一起行动的, 因此,当采用并行接口与外设交换数据日即 使是只用到其中的一位,也是一次输入/输 出8位或16位。 ④并行传送的信息,不要求固定的格式,这 与串行传送的信息有数据格式的要求不同。
7.2 8255A的工作原理 一、功能 *8255有3个8位并行口 * 方式0:基本I/O 方式1:选通I/O 方式2:双向I/O A口:方式0,方式1,方式2 B口:方式0,方式1 C口:方式0
二、结构和引脚 A组 端口A PA7~PA0 A组 控制逻辑 数据总线缓冲器 A组 端口C 高4位 PC7~PC4 D0~D7 RD WR A0 A1 B组 端口C 低4位 读/写 控制 电路 B组 控制逻辑 PC3~PC0 RESET PB7~PB0 B组 端口B CS
数据端口A、B和C 端口A包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。 端口B包含一个8位的数据输入/输出锁存器/缓冲器,一个8位的数据输入缓冲器。 端口C包含一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器,无输入缓冲功能。
A组和B组控制逻辑 A组控制逻辑控制A口,C口上半部分(PC7~PC4) B组控制逻辑控制B口,C口下半部分(PC3~PC0)
数据总线缓冲器 用于8255和CPU传送数据信息 信息: CPU送给8255的控制字或输出数据 外设送给CPU的状态或输入数据
读/写控制逻辑 接受CPU送来的地址信号和控制信号 信号: RESET复位信号 高电平有效,8255复位状态为清控 制寄存器内容,使所有口呈输入状态 CS片选信号 低电平有效,表示该芯片被选中 RD读信号 低电平有效,表示CPU可从8255读数据或状态 WR写信号 低电平有效,表示CPU向8255写数据或控制字 A1A0端口选择信号 用于选择8255的3个数据口或控制字寄 存器
三、8255A的引脚特性和外部连接 1.与外设连接的引脚: 8255A与外设连接的引脚共有PA7~PA0、PB7~PB0和PC7~PC0三组。每组8根,总共24根,分别对应于A、B、C三个通道,全为双向、三态。 PA0-PA7:端口A的输入/输出线。 PB0-PB7:端口B的输入/输出线。 PC0—PC7:端口C的输入/输出线。
C口的作用: a.作数据口 b.作状态口 c.作专用(固定)联络(握手)信号线 d.作按位控制用
2、与CPU连接的引脚 (1)RESET:复位输入信号,高电平有效。 (2)CS:芯片选中信号,输入、低电平有效。 (3)A0和A1:芯片内部寄存器的选中信号。当CS有效时,8255A被选中,再由A0、A1的编码决定是选通道A、B、C,还是控制寄存器。 (4)RD:读信号。输入,低电平有效。当它为低电平时,由CPU读出8255A的数据或状态信息。 (5)WR:写信号。输入,低电平有效。当它为低电平时,由CPU将数据或命令写到8255A。
四、8255的控制字 • 方式选择控制字 • 置位/复位控制字
方式选择控制字 D7 D6 D5 D4 D3 D2 D1 D0 1=输入 0=输出 C口低4位I/O 00=方式0 01=方式1 1X=方式2 A口 方式 1=输入 0=输出 B口I/O 0=方式0 1=方式1 B口方式 D7=1 标志位 1=输入 0=输出 C口高4位I/O 1=输入 0=输出 A口I/O
置位/复位控制字 D7 D6 D5 D4 D3 D2 D1 D0 任意值 1 置位 0 复位 D7=0 标志位 000 选中PC0 001 选中PC1 111 选中PC7 位选择
例:A口设置为方式1,输入,C口上半部分为输 出,B口指定为方式0,输出,C口下半部分为输 入。(8255的控制口地址为303H) MOV DX,303H MOV AL,0B1H OUT DX,AL
例:设一片8255的口地址为300H~303H,PC2平 时为低,要求从PC2的引脚输出一个正脉冲 MOV DX,303H MOV AL,00000101B OUT DX,AL MOV AL,00000100B OUT DX,AL
利用8255A的PC6产生方波,经滤波和功放后, 送至喇叭,使产生不同频率的声音 OUTSPK PROC MOV DX,303H MOV AL,0DH OUT DX,AL CALL DELAY1 MOV AL,0CH OUT DX,AL CALL DELAY1 RET OUTSPK ENDP
A、B口按位输出高/低电平 若要使PA7位输出高/低电平,则用下列程序段: 使PA7输出高电平(设A口地址为300H) MOV DX,300H ;PA数据口地址 IN AL,DX ;读人A H原输出内容 MOV AH,AL ;保存原输出内容 OR AL,80H ; OUT DX,AL ; MOV AL,AH ;恢复原输出内容 OUT DX,AL
使PA7输出低电平: MOV DX,300H ;A口地址 IN AL,DX ;读人端口原输出值 MOV AH,AL ;保存原输出值 AND AL,7FH ;使PA7清0 OUT DX,AL ;输出PA7 MOV AL,AH ;恢复原输出值 OUT DX,AL
7.3 8255A的方式0及应用 方式0 基本输入输出方式(不需要应答)A口,B 口,C口都可工作在方式0,既可输入也可输出,输 出是锁存的,输入是不锁存的;适用于不需联络信号 (适用于同步传送、查询传送)
并行打印机接口设计 打印机接口信号 *数据信号接受CPU送来的数据信息 DATA1~DATA8 *控制信号 由CPU送出,控制打印机的动作 STB *状态信号 由打印机送给CPU,说明打印机的状态 ACK 应答信号 用于中断方式 BUSY忙信号 用于查询方式
打印机传送字符时序 BUSY ACK DATA DATA STB
采用查询方式CPU与打印机的数传过程: ①首先查询BUSY。BUSY=1,打印机忙,等待;BUSY=0,可以传数据。 ②通过并行接口把数据送给标准插座DATA BITl—DATA BIT8数据线上,此时数据并未进入打印机。 ③再送出一个数据选通信号 /DATA STROBE(负脉冲)把数据线上的数据打人到打印机的内部缓冲器。 ④打印机在收到数据后,发出“忙”(BUSY=1)信号,表明打印机正在处理输入打印机的数据。等到输入的数据处理完毕(打印完1个字符撤消“忙”信号,即置BUSY=0。
⑤最后在10号引脚上送出一个回答信号ACK绐主机,⑤最后在10号引脚上送出一个回答信号ACK绐主机, 表示上一个字符已经处理完毕。 如此重复工作, 直到把全部字符打印出来。
打印机接口 打印机插座 8255A PA0~7 DATA1~8 CPU PC7 STB PC2 BUSY 地 地
CODE SEGMENT ASSUME CS:CODE,DS:CODE START: MOV AX,CODE MOV DS,AX MOV DX,303H MOV DX,303H MOV AL,0EH MOV AL,10000001B OUT DX,AL OUT DX,AL NOP MOV AL,00001111B NOP OUT DX,AL MOV AL,0FH MOV SI,OFFSET BUF OUT DX,AL MOV CX,0FFH INC SI L: MOV DX,302H DEC CX IN AL,DX JNZ L AND AL,04H MOV AX,4C00H JNZ L INT 21H MOV DX,300H BUF DB ?,? MOV AL,[SI] CODE ENDS OUT DX,AL END START
对可编程并行口8255初始化 • 检测BUSY忙信号的状态:若忙,则不断检测;若空闲,GOTO 3 • 从内存读出要打印的数据,送相应的数据口 • 送选通脉冲,即STB上形成负脉冲。
7.4 8255A的方式1及应用 方式1 选通输入输出 A口,B口可工作在方式1,既可输入也可输出。 当A口,B口工作在选通方式,C口相应口工作在 联络信号。 选通方式为握手方式,适用于查询方式和中断方 式。 方式1的输入输出选通信号不同
选通输入方式 STB选通信号 低电平有效 表示外部设备把数据送入8255 的A口或B口 IBF输入缓冲器满 高电平有效 表示数据已送到8255口,指示8255 不能再接受数据 INTE 中断允许信号 控制8255能否向CPU发中断请求 信号 A口(PC4) B口(PC2) INTR中断请求信号 高电平有效 当STB、IBF、INTE三者为高电 平时,INTR置成高电平,向CPU 提出中断申请 8 PA7~PA0 D7D6D5D4D3D2D1D0 1 0 1 1 1/0 X X X INTEA PC4 PC5 STBA IBFA & INTRA PC3 PC6,7 I/O 8 PB7~PB0 D7D6D5D4D3D2D1D0 1 X X X X 1 1 X INTEB PC2 PC1 STBB IBFB & INTRB PC0
方式1输入的工作时序 ①数据输入时,外设处于主动地位,当外设准备好数据并放到数据线上后,首先发/STB信号,由它把数据输入到8255A. ②在/STB的下降沿约300ns,数据已锁存到8255A的缓冲器后,引起IBF变高,表示8255A的“输入缓冲器满”,禁止输入新数据。 ③在/STB的上升沿约300ns后,在中断允许(INTE=1)的情况下IBF的高电平产生中断请求,使INTR上升变高,通知CPU接口中已有数据,请求CPU读取。
④CPU得知INTR信号有效之后,执行读操作时,/RD信号的下降沿使INTR复位,撤销中断请求,为下一次中断请求作好准备。/RD信号的上升沿延时一段时间后清除IBF使其变低,表示接口的输入缓冲器变空,允许外设输入新数据。如此反复,直至全部数据输人。
选通输出方式 OBF输出缓冲满信号 低电平有效 表示CPU将数据写入8255的A口或 B口 ACK外设回答信号 低电平有效 表示CPU送到8255口的数据,已 被外设接受 INTE 中断允许信号 控制8255能否向CPU发中断请求 信号 A口(PC6) B口(PC2) INTR中断请求信号 高电平有效 当ACK、OBF、INTE三者为高电 平时,INTR置成高电平,向CPU 提出中断申请 8 PA7~PA0 D7D6D5D4D3D2D1D0 1 0 1 0 1/0 X X X PC7 PC6 OBFA ACKA INTEA INTRA & PC3 PC4,5 I/O 8 PB7~PB0 D7D6D5D4D3D2D1D0 1 X X X X 1 0 X PC1 PC2 OBFB ACKB INTEB INTRB & PC0
方式1输出的工作时序 ①数据输出时,CPU应先准备好数据,并把数据写到8255A输 出数据寄存器。当CPU向8255A写完一个数据后,/WR的上升 沿使/OBF有效,表示8255A的输出缓冲器已满,通知外设读 取数据。并且/WR使中断请求INTR变低,封锁中断请求。 ②外设得到/OBF有效的通知后,开始读数。当外设读取数据 后,用/ACK回答8255A,表示数据已收到。 ③/ACK的下降沿将/OBF置高,使/OBF无效,表示输出缓冲器 变空,为下一次输出作准备。在中断允许的条件下,/ACK的 上升沿使INTR置高,产生中断请求。
方式1的状态字(地址选择C口) D7 D6 D5 D4 D3 D2 D1 D0 I/O I/O IBFA INTEA INTRA INTEB IBFB INTRB 输入状态字 D7 D6 D5 D4 D3 D2 D1 D0 输出状态字 OBFA INTEA I/O I/O INTRA INTEB OBFB INTRB
1、状态字的作用 状态字为查询方式提供状态标志位,IBF和OBF; 同时,由于8255不能直接提供中断矢量,CPU通过 状态字确定中断源,实现查询中断。如:INTRA和 INTRB被置位表示A口和B口有中断请求。
2、使用状态字时要注意的几个问题 ①状态字是在8255A输入/输出操作过程中由内部产 生,从C口读取的,与C口的外部引脚无关。 ②状态字中供CPU查询的状态位有:输入时—IBF位 和INTR位;输出时—OBF位和INTR位。但从可靠性来 看,查INTR位比查出IBF位或OBF位更可靠。 ③状态字中的INTE位,是控制标志位,控制8255A能 否提出中断请求,因此它不是I/0操作过程中自动 产生的状态,而是由程序通过按位置位/复位命令 来设置或清除的。
方式1的接口方法 (1)在1方式下,首先根据实际应用的要求确定A口 和B口是作输入还是输出,然后把C口中分配作联络 的专用应答线与外设相应的控制或状态线相连。 (2)如果是采用中断方式,还要把中断请求线INTR 接到微处理器或中断控制器;若采用查询方式,中 断请求线可以空着不接,而去查状态字中的INTR状 态位。
(3)PC系统中1方式的中断处理,通过系统中的中(3)PC系统中1方式的中断处理,通过系统中的中 断控制器来提供寻找中断服务程序人口地址的中断 类型号。 (4)在1方式下CPU采用查询方式时,对输入,通过 C口查IBF位或INTR位的状态。对输出,查OBF位或 INTR位的状态。值得注意的是,在采用查询方式来 查询INTR位时,一定要使中断允许位置(INTE=1), 否则,如果INTE=0,就会禁止中断,8255A就不能产 生中断请求,因而状态字中的INTR位也就不能置 位。
对PA口的方式1输入设置在开中方式(控制口的地对PA口的方式1输入设置在开中方式(控制口的地 址为303H) MOV DX,303H ;8255A命令口 MOV AL,00001001B ;置PC4=1,允许 ;中断请求 OUT DX,AL
对PA口的方式1输入设置在关中方式(控制口的地对PA口的方式1输入设置在关中方式(控制口的地 址为303H) MOV DX,303H ;8255A命令口 MOV AL,00001000B ;置PC4=0,禁止 ;中断请求 OUT DX,AL
在甲乙两台微机之间并行传送1K字节数 据,甲机发送,乙机接受。甲机一侧的 8255A采用方式1工作,乙机一侧的8255A 采用方式0工作,两机的CPU与接口之间都 采用查询方法交换数据 (甲机,乙机地址都为300H~303H)
8255A方式1 8255A方式0 PA0~7 PA0~7 乙(接受) 甲(发送) OBF PC7 PC7 ACK PC3 PC6 PC4~6 PC3 PC0~2 PB0~7 PB0~7 PC0~5
甲机发送程序: MOV DX,303H L:MOV DX,302H MOV AL,10100000B IN AL,DX OUT DX,AL AND AL,08H MOV AL,0DH ;中断允许 JZ L OUT DX,AL MOV DX,300H MOV SI,OFFSET BUFS MOV AL,[SI] MOV CX,3FFH OUT DX,AL MOV DX,300H INC SI MOV AL,[SI] DEC CX OUT DX,AL JNZ L INC SI MOV AH,4C00H DEC CX INT 21H
乙机接受程序 MOV DX,303H MOV DX,303H MOV AL,00000110B MOV AL,10011000B OUT DX,AL OUT DX,AL NOP MOV AL,00000111B NOP OUT DX,AL MOV AL,00000111B MOV DI,OFFSET BUFR OUT DX,AL MOV CX,3FFH INC DI L1:MOV DX,302H DEC CX IN AL,DX JNZ L1 AND AL,80H MOV AX,4C00H JNZ L1 INT 21H MOV DX,300H BUF DB 1024 DUP(?) IN AL,DX MOV [DI],AL
甲机工作在方式1查询方式,即通过读取C口 中INTR的状态,判断乙机是否接受是否接受 数据 乙机通过检测的OBF状态判断甲机是否已 发送数据,若甲机已发送数据,则乙机接受完 数据后,在PC3形成负脉冲,作为应答信号, 通知甲机数据已接受
7.5 8255A的方式2及应用 方式2 双向方式 仅A口具有方式2,即同时可输入输出,当 A口工作在方式2时,C口相应口作联络信 号方式2在功能上为方式1输入和输出的结 合,且在输入和输出时分别可以中断。
INTRA PC3 ≥1 PA0~7 & OBF PC7 PC6 ACK INTE & STBA PC4 PC5 INTE IBFA WR PC0~2 I/O RD
方式2的状态字 D7 D6 D5 D4 D3 D2 D1 D0 OBFA INTE1 IBFA INTE2 INTRA X X X