320 likes | 478 Views
第八章 常用接口芯片. 并行接口芯片 8255A 定时器 / 计数器接口芯片 8253 串行接口芯片 8251A 模拟接口 多功能外围接口芯片 82380. 8.1 并行接口芯片 8255A. Intel 8255A 是一种通用的可编程并行 I / O 接口芯片,是为 Intel 8080 / 8085 系列微处理器设计的,也可用于其他系列的微机系统。 通过 8255A , CPU 可直接同外设相连接,是应用最广的并行 I / O 接口芯片。 8086/8088 系统中就采用 8255A 作为键盘、扬声器、打印机等外设的接口电路芯片。.
E N D
第八章 常用接口芯片 • 并行接口芯片8255A • 定时器/计数器接口芯片8253 • 串行接口芯片8251A • 模拟接口 • 多功能外围接口芯片82380
8.1 并行接口芯片8255A Intel 8255A是一种通用的可编程并行I/O接口芯片,是为Intel 8080/8085系列微处理器设计的,也可用于其他系列的微机系统。 通过8255A,CPU可直接同外设相连接,是应用最广的并行I/O接口芯片。 8086/8088系统中就采用8255A作为键盘、扬声器、打印机等外设的接口电路芯片。
8.1.1 8255A的内部结构(两部分组成:数据端口和控制寄存器)
1. 三个8位端口A、B和C (1)端口A(PA口)——可作为8位输入输出端口,输入输出数据可以锁存; (2)端口B(PB口)——可作为8位输入输出端口,输出数据可以锁存; (3)端口C(PC口)——可作为8位输入输出端口,输出数据可以锁存;也可以分为2个4位的输入输出端口,其中高4位分配给PA口,称为A组,低4位分配给PB口,称为B组。 2. 控制寄存器——用于接收CPU送来的控制命令字,以决定端口的工作方式。
1. 片选 及地址线A1,A0——用于芯片及内部端口和寄存器的寻址; 8.1.2 8255A的引脚说明
在IBM-PC机中,用A9A8A7A6A5=00011选中8255A(CS=0)A4A3A2未用,A1A0接8255A的A1A0,其功能及地址为:在IBM-PC机中,用A9A8A7A6A5=00011选中8255A(CS=0)A4A3A2未用,A1A0接8255A的A1A0,其功能及地址为: A9A8A7A6A5A4A3A2A1A0功能 基本地址 0 0 0 1 1 ××× 0 0 选中端口A 60H 0 0 0 1 1 ××× 0 1 选中端口B 61H 0 0 0 1 1 ××× 1 0 选中端口C 62H 0 0 0 1 1 ××× 1 1 选中控制寄存器 63H ( 其他) ××××× 芯片禁止,数据线高阻 • (说明:由于A4A3A2未用,8255A共有32个地址,即060H~07FH,其中060H~063H为基本地址,其余为影像地址)
2. 读写控制信号RD,WR 3. 复位信号RESET——当RESET=1(有效)时,8255A复位,内部寄存器被清除,三个端口自动置为输入方式; 4. 数据线D7~D0——双向、三态,用于8255A与CPU之间的数据传送; • 5.A口外设数据线PA7~PA0(双向) • B口外设数据线PB7~PB0(双向) • C口外设数据线PC7~PC0(双向)
8.1.3 8255A的工作方式(3种) • 1.方式0——基本输入输出方式 • 特点:适用于PA口、PB口和PC口作输入/输出端口, 2. 方式1——选通输入/输出方式(应答式输入/输出) 特点:适用于PA口和PB口作输入/输出端口,PC口主要作为联络线; 3. 方式2——双向选通输入输出方式 特点:仅适用于PA口作双向端口(可输入也可输出),PC口主要作为联络线;
1.方式0——基本输入输出方式 • A口、B口、C口均可以工作在方式0 ,无需用专用的应答联络信号; • 分成彼此独立的8位A口、B口及4位上C口、下C口四个并行口,由控制字可分别设置成输入或输出口使用,共有 16种不同的使用组态(每组只能同时设定为输入或输出); • 与CPU交换信息不能采用中断的方法,但可用应答查询方式:通常以A口和B口作为数据口,而用C口某些位作为控制与状态信号线使用(C口中哪条引线充当何种应答功能,可以由用户来指定); • 输出带锁存,但输入不带锁存
2. 方式1——选通输入/输出方式(应答式输入/输出) • 主要是为中断应答式数据传送而设计; • 端口 A和瑞口 B仍作为数据的输出口或输入口,同时固定C口的某些位作为联络信号(C口的其他位仍可作数据位使用); • 输出和输入方式不同
PC7/PC1——输出缓冲器满信号OBFA/OBFB,低电平有效;当OBF=0时,表示CPU将新数据写入相应端口的数据缓冲器,外设可依此信号将数据取走,同时使OBF=1示空。PC7/PC1——输出缓冲器满信号OBFA/OBFB,低电平有效;当OBF=0时,表示CPU将新数据写入相应端口的数据缓冲器,外设可依此信号将数据取走,同时使OBF=1示空。 (1)方式1下的输出方式
PC6/PC2——响应信号ACKA/ACKB,低电平有效;外设在OBF=0(缓冲器满)的条件下,用ACK=0将数据去走,同时使OBF=1(示空),在中断允许(INTE=1)时,使INTR=1产生中断请求。PC6/PC2——响应信号ACKA/ACKB,低电平有效;外设在OBF=0(缓冲器满)的条件下,用ACK=0将数据去走,同时使OBF=1(示空),在中断允许(INTE=1)时,使INTR=1产生中断请求。 PC3/PC0——中断请求信号输出INTRA/INTRB 当外设接收了由CPU送给8255A的数据后,8255A通过INTR向CPU发中断请求,请求再输出下一字节数据。 说明:PC6/PC2也是中断允许位INTEA/INTEB
(2)方式1下的输入方式 PC5/PC1——输入缓冲器满信号IBFA/IBFB,高电平有效;当IBF=1时,表示外设已将数据输入相应端口的数据缓冲器,CPU可依此信号将数据取走,同时使IBF=0示空。
PC4/PC2——选通信号STBA/STBB,低电平有效;外设在IBF=0(缓冲器空)的条件下,用STB=0将数据锁存于数据缓冲器,同时使IBF=1(示满),在中断允许(INTE=1)时,使INTR=1产生中断请求。PC4/PC2——选通信号STBA/STBB,低电平有效;外设在IBF=0(缓冲器空)的条件下,用STB=0将数据锁存于数据缓冲器,同时使IBF=1(示满),在中断允许(INTE=1)时,使INTR=1产生中断请求。 PC3/PC0——中断请求信号输出INTRA/INTRB 说明:PC4/PC2也是中断允许位INTEA/INTEB,要开放中断,就要用PC口置0/置1命令使相应位为1;例如,开放INTEA(PC4=1),操作: MOV AL,00001001B; OUT 63H,AL;
说明: • 当 8255A工作于方式1时,输入/输出过程通常采用中断控制; • 输入/输出过程也可采用查询方式,分别查询IBF和OBF是否有效; • 8255的端口A和端口B可以均为输入,均为输出,也可以一个输入一个输出,还可以其中一个端口工作于方式1,而另一个端口工作于方式0。
3. 方式2——双向选通输入输出方式 • 可以用中断方式,也可以用查询方式与CPU联系 ; • 方式2只有8255的A口才能采用 ; • 在A口工作于双向输入输出方式时,固定利用C口的5条线作为联络信号线。 • 此时,B口只能工作在方式0或方式1, • 而C口剩下的3条线可作为输入输出线使用或用作B口方式1之下的联络线。
8255A CS PC7 PC6 A1 PC5 A0 PC4 PC3 输出设备 OBFA ACKA A口 D7~D0 AB CPU DB 译 码 输入设备 IBFA STBA INTRA PC7——输出缓冲器满信号OBFA; 用于 PC6——响应信号ACKA 输出PC5——输入缓冲器满信号IBFA 用于PC4——选通信号STBA 输入 PC3——中断请求信号INTRA
8.l.4 8255A的控制字(要求记住) 1. 方式选择控制字——用于决定8255A三个端口的工作方式
例如:8255A的地址为60H~63H。若规定端口A工作于方式1输入,端口B工作于方式1输出,余下的PC7、PC6规定为输出,则方式选择控制字如右所示。例如:8255A的地址为60H~63H。若规定端口A工作于方式1输入,端口B工作于方式1输出,余下的PC7、PC6规定为输出,则方式选择控制字如右所示。 MOV AL,0B4H OUT 63H,AL
2. C口位操作控制字——设置端口C各位的值 • 例如,置端口C的D7位为1:MOV AL,00001111B; • OUT 63H,AL;
0 0 0 0 1 1 1 PC7 例:若要从8255A的PC7输出正脉冲,则可以用以下程序段(设原来的PC7=0): MOV AL,00001111B ;PC7置1 OUT 63H,AL MOV AL,00001110B ;PC7置0 OUT 63H,AL
PA7~PA0 8255A CS PC6 PC2 A1 A0 打印机 STB BUSY D7~D0 AB CPU DB 驱动 译 码 8.1.5 8255A应用举例 例8.1 用8255A作为打印机的接口,工作于方式0,CPU用查询方式接打印机打印。 PA口方式0下输出,PC口的PC6作为选通输出信号STB PC2作为输入,接收打印机送来的忙/闲信号BUSY, 当BUSY为1时表忙,为0时表闲。
设输出字符放在寄存器CL中,则具体打印子程序如下:设输出字符放在寄存器CL中,则具体打印子程序如下: PRINT: PUSH AX ;保护现场 MOV AL,81H ;8255A初始化 OUT 0A3H,AL MOV AL,0DH ;1101用C口位操作控制字使PC6为1 OUT 0A3H,AL WAITO: IN AL,0A2H ;检测PC2的值 AND AL,04H JNZ WAITO ;打印机忙,继续等待 MOV AL,CL ;打印机不忙,字符送端口A OUT 0A0H,AL MOV AL,0CH ;1100PC6输出负脉冲,字符进入打印机 OUT 0A3H,AL INC AL OUT 0A3H,AL POP AX ;恢复现场 RET ;返回主程序
PA7~PA0 8255A CS PC4 PC6 A1 PC7 A0 PC3 打印机 STB ACK D7~D0 AB CPU DB 驱动 译 码 OBF INTR送8259A的IRQ3 PA口方式1输出,PC口的PC4作选通信号STB PC6自动作响应信号ACK,PC7自动作输出缓冲信号OBF PC3自动作中断信号INTR送8259A管理 例8.2 用8255A作为打印机的接口,工作于方式1,CPU用中断方式接打印机打印。
主程序 中断子程序 INTR1 送1个字符 送选通信号 撤消选通信号 中断结束 返回 设置8255A方式 设置中断向量 SI←BUFF偏 CX←100 开8255A中断 关选通信号 开中断 等待HLT SI←SI+1 关中断 CX-1≠0? END
;主程序 MAIN: MOV AL,0A0H ;10100000,8255A初始化 OUT 0A3H,AL MOV AL,09H ;1001,使PC4为1 OUT 0A3H,AL PUSH DS ;设置中断向量 XOR AX,AX MOV DS,AX MOV AX,OFFSET INTP MOV [003CH],AX MOV AX,SEG INTP MOV [003EH],AX POP DS MOV AL,0DH ;1101,PC6置1,允许8255A中断 OUT 0A3H,AL STI ;开中断
;中断服务程序 INTP: MOV AL,CL ;打印字符送8255A OUT 0A0H,AL MOV AL,08H ;1000,选通打印机 OUT 0A3H,AL INC AL OUT 0A3H,AL … ;后继处理 IRET ;中断返回
8255A在IBM-PC机中的应用 (一)各端口的用途 1. PA口——工作于方式0,作为数据输入用,接受键盘扫描码。 2. PB口——工作于方式0,作为输出产生控制信号 PB0:控制扬声器的工作频率,该位为1时允许频率输出,为0关闭频率输出; PB1:控制扬声器数据开关,该位为1时允许输出,为0关闭;
PB2:输出键盘测试数据,测试键盘; • PB3:控制读系统配置开关DIP的状态,为1则读DIP的高4位,为0读低4位; • PB4:控制RAM奇偶校验位的开启,为0时开启; • PB5:控制I/O奇偶校验位的开启,为0时开启; • PB6:控制键盘时钟,为1时产生键盘时钟; • PB7:控制键盘工作,为1时禁止键盘工作。 3. PC口——工作于方式0,作为输入数据用 PC3~PC0:接收系统配置开关DIP的高4位或低4位;
PC4:接受已进入扬声器的数据,供CPU检测; • PC5:接受已进入扬声器的音调,供CPU检测; • PC6:接受I/O通道的校验结果,为高时则产生NMI中断; • PC7:接受RAM的校验结果,为高时则产生NMI中断; (二)8255A在IBM-PC机中的初始化编程: MOV AL,10011001B; OUT 63H,AL;
(三)8255A在IBM-PC机中的使用: • 例1:对PB口编程使扬声器发音: • IN AL,61H; • OR AL,03H;使PB1,PB0=11,其他位不变 • OUT 61H,AL; 例2:允许RAM奇偶校验: IN AL,61H; AND AL,11101111B;使PB4=0开启,其余位不变 OUT 61H,AL;