共享知识 分享快乐
习题9 并行接口
主要内容:8255的外部特性、内部结构,初始化编程,应用。
9.1 8255A的3个端口在使用时有什么差别?
【答】 (1) 端口A对应1个8位数据输入锁存器和1个8位数据输出锁存器/缓冲器。所以,
用端口A作为输入或输出时,数据均受到锁存(与工作方式有关)。(2) 端口B对应1个8位数据输入缓冲器和1个8位数据输出锁存器/缓冲器。(3) 端口C对应1个8位数据输入缓冲器和1个8位数据输出锁存器/缓冲器。这样,当端口C作为输入端口时,对数据不做锁存,而作为输出端口是,对数据进行锁存。在使用中,端口A和端口B常常作为独立的输入端口或输出端口,端口C则配合端口A和端口B的工作。具体的讲,端口C常常通过控制命令被分成2个4位端口,每个4位端口包含1个4位的输入缓冲器和1个4位的输出锁存器/缓冲器,它们分别用来为端口A和端口B提供控制信号和状态信号。 9.2 8255A的方式0一般使用在什么场合?在方式0时,如要使用应答信号进行联络,应该怎
么办?
【答】方式0的使用场合有两种,一种是同步传送,另一种是查询式传送。在方式0情况下,没
有规定固定的应答信号,所以,这时,将端口A端口B作为数据端口,把端口C的4个数位(高4位或者是低4位均可)规定为输出口,用来输出一些控制信号,而把端口C的另外4个数位规定为输入口,用来读入外设的状态。就是这样,利用端口C来配合端口A和端口B的输入/输出操作。
9.3当数据从8255A的端口C往数据总线上读出时,8255A的几个控制信号CS、A1、A0、RD、WR
分别是什么?
【答】 CS0、A11、A00、RD1 、WR0。
9.4 8255A的方式选择控制字和置1/置0控制字都是写入控制端口的,那么,它们是由什么来
区分的?
【答]】当8255A接收到写入控制口的控制字时,就会对最高位即标志位进行测试。如为1,则
将此字节作为方式选择控制字写入控制寄存器;如为0,则此字节作为对端口C的置1/置0控制来处理。
9.5 对8255A设置工作方式,8255A的控制口地址为00C6H。要求端口A工作在方式1,输入;
端口B工作在方式0,输出;端口C的高4位配合端口A工作;低4位为输入。(口地址为80H~83H)
【答】 控制字:10110001=B1H
MOV OUT
AL ,B1H 83H ,AL
9.6 设8255A的4个端口地址为00C0H,00C2H,00C4H,00C6H,要求用置0/置1方式对PC6
置1,对PC4置0。 【答】 MOV
MOV OUT MOV
OUT
AL,00001101H DX,AL DX,AL
;对PC6置1的控制字
DX,00C6H ;控制地址DX
;对PC6置1操作
;对PC4置0的控制字
AL,00001000H
9.7 编一初始化程序,使8255A的PC5端输出一个负跳变。如果要求PC5端输出一个负脉冲则
初始化程序又是什么情况? 【答】 初始化程序:
MOV
AL,0000 1011 H
;PC5置“1”控制字→AL
共享知识 分享快乐
MOV OUT MOV OUT MOV OUT
DX,046H DX,AL DX , AL
;控制口地址→DL
;置“1”控制字→控制寄存器 ;PC5置“0”控制字→AL
;置“0”控制字→控制寄存器
AL,00001010B
如果要求PC5输入一个负脉冲则再加两条指令:
A L ,00001011 DX,AL
9.8 8255A与打印机的接口如图10-1,8255为工作方式0,试编写初始化程序。若要将DL中的
字符送到打印机打印,编写打印程序。(口地址为60H~63H)
图10-1
【答】工作过程:当主机要往打印机输出字符时,先查询打印机忙信号,如 果打印机正在处理一个字符或在打印一行字符,则忙信号为1,否则为0。
PP:
MOV OUT MOV OUT
LPST: IN
AND JNZ MOV OUT MOV OUT NOP MOV
AL,81H ;8255工作方式字 63H, AL ;A口方式0,输出,C4~7输出,C0~3输入 AL,00001111B ;PC7置1,禁止STB 63H,AL AL,62H ;读C口 AL,01H ;查PC0=0? LPST ;忙,等待;不忙,送数 AL,DL ;CL中字符送端口A 60H,AL ;送数到A口
AL,00001110B ;将PC7置0(使STB有效) 63H,AL ;AL= 0000 1100 B ; 延时 AL, 0000 1111 ;AL=0000 1111 B
OUT 63H,AL ;再使STB(PC7)为1
9.9 设一工业控制系统,有四个控制点,分别由四个对应的输入端控制,现用8255A的C口实
现该系统的控制,如图10-2。开关K0~K3打开则对应发光二极管L0~L3亮,表示系统该控制点运行正常;开关闭合则对应发光二极管不亮,说明该控制点出现故障。编写8255A的初始化程序和这段控制程序。
图10-2
共享知识 分享快乐
【答】参考程序如下:
MOV OUT
L1: 10.10
IN TEST JZ MOV OUT JMP MOV OUT IN TEST JZ MOV OUT JMP MOV OUT IN TEST JZ MOV OUT JMP MOV OUT IN TEST JZ MOV OUT JMP MOV OUT JMP
AL,10000001B 63H,AL AL,62H AL,01H L11
AL,00000001B 63H,AL L2
AL,00000000B 63H,AL AL,62H AL,02H L21
AL,00000011B 63H,AL L3
AL,00000010B 63H,AL AL,62H AL,04H L31
AL,00000101B 63H,AL L4
AL,00000100B 63H,AL AL,62H AL,08H L41
AL,00000111B 63H,AL L1
AL,00000110B 63H,AL L1
;循环查询K0状态
;查询K3状态
;查询K2状态
;查询K1状态 ;不正常,L0灭
;正常,L0亮
;8255方式设置 ;查询K0状态
L11: L2:
L21: L3:
L31: L4:
L41:
8255芯片的A口和B口分别与8个LED灯和8个开关连接好,通过开关控制LED等
的开和闭。8255的端口地址为40, 42, 44和46H。画出译码电路图,编写初始化程序和控制程序。
【答】参考程序如下:
MOV
OUT IN OUT
L1:
AL,10000010B 46H,AL AL,42H 40H,AL
;8255方式设置 ;读B口开关状态 ;写A口控制LED