习题9-并接口8255
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题 9 并行接口
主要内容 : 8255 的外部特性、内部结构,初始化编程,应用。
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 提供控制信号和状态信号。
【答]】当 8255A 接收到写入控制
口的控制字时,就会对最高位即标志位进行测试。
如为 0,则此字节作为对端口
8255A 的方式 0 一般使用在什么场合在方式
【答】方式 0 的使用场合有两种,一种是同步传送,另一种是查询式传送。
在方式 没有规定固定的应答信号,所以,这时,将端口
A 端口
B 作为数据端口,把端口
位(高 4位或者是低 4位均可)规定为输岀口,用来输岀一些控制信号, 4 个数位规定为输入口,用来读入外设的状态。
就是这样,利用端口 B 的输入 / 输岀操作。
当数据从8255A 的端口 C 往数据总线上读岀时,
8255A 的几个控制信号
分别是什么
【答】 CS0、A11 、A00、 RD1 、WR0。
8255A 的方式选择控制字和置 1/置 0控制字都是写入控制端口的,那么, 分的
0 时,如要使用应答信号进行联络,应该怎么办
0 情况下, C 的4个数 C 的另外
而把端口 C 来配合端口 CS 、 A 1、 A 0、 A 和端口
RD 、WR
它们是由什么来区
将此字节作为方式选择控制字写入控制寄存器;如为 置 0 控制来处理。
1,则 C 的置 1/
对 8255A 设置工作方式,
口 B 工作在方式 0,输岀;端口
80H~83H )
8255A 的控制口地址为 00C6H 。
C 的高4位配合端口 要求端口 A 工作在方式
A 工作;低 4 位为输
入。
1,输入;端
(口地址为
【答】控制字:= B1H
MOVAL , B1H
OUT
83H , AL
设 8255A 的 4 个端口地址为 00C0H , 00C2H , 00C4H , 00C6H ,
1,对 PC4 置 0。
答】 MOVAL , 00001101H
;对PC6置1的控制字 MOVDX , 00C6H ; 控制地址 DX
OUT
DX , AL
;对PC6置1操作 MOVAL , 00001000H
;对PC4置0的控制字
OUT
DX , AL
编一初始化程序, 使 8255A 的PC5端输岀一个负跳变。
如果要求
PC5端输岀一个负脉冲则初
要求用置 0/ 置 1 方式对 PC6 置
始化程序又是什么情况 答】 初始化程序:
;PC 5置“ 1 ”控制字f AL
;控制口地址f DL
MOV AL , 0000 1011 H MOVDX , 046H
打£*机
FA7 FM --------
\
1
PCT
iZ
------ A
4 -------- 111 BY
图 10-1
【答】工作过程:当主机要往打印机输出字符时,先查询打印机忙信号,如 果打印机正在处理一个
字符或在打印一行字符,则忙信号为 1,否则为0。
OUT DX, AL ;置“ 1”控制字f 控制寄存器 MOV AL ,00001010B ;PC 5置“0”控制字f AL OUT DX , AL
;置“ 0”控制字f 控制寄存器
如果要求 PC 5输入一个负脉冲则再加两条指令
:
MOV A L , 00001011
OUT
DX, AL
8255A 与打印机的接口如图 10-1 , 8255为工作方式
符送到打印机打印,编写打印程序。
(口地址为
0,试编写初始化程序。
若要将
DL 中的字
60H~63H )
PP: MOV AL,81H ; 8255 工作方式字
输岀,co〜3输入OUT 63H,AL ;A 口方式0,输岀,C4~7
MOV AL,00001111B ;PC7置1,禁止STB
OUT 63H,AL
LPST IN AL,62H ;读C 口
AND AL,01H ;查PC0=0
JNZ LPST ; 忙,等待;不忙,送数
MOV AL,DL ;CL中字符送端口 A
OUT 60H,AL ;送数到A 口
MOV AL,00001110B ;将PC7置0(使STB有效)
OUT 63H,AL ;AL= 0000 1100 B
NOP ;延时
MOV AL, 0000 1111 ;AL= 0000 1111 B
OUT 63H, AL ; 再使STB (PC7)为1
9.9设一工业控制系统,有四个控制点,分别由四个对应的输入端控制,现用8255A的C 口实现
该系统的控制,如图10-2。
开关K)〜K3打开则对应发光二极管L0〜L3亮,表示系统该控制点运行正常;开关闭合则对应发光二极管不亮,说明该控制点岀现故障。
编写8255A的初始化程序和这段控制程序。
【答】参考程序如下:
OUT
46H , AL
AL
,
42H
OUT
40H , AL JMP L1
;写 A 口控制 LED
TEST AL,01H JZ L11
MOV AL,00000001B
L21
MOV AL,00000011B OUT 63H,AL JMP
TEST AL,04H L31
MOV AL,00000101B
TEST AL,08H L41
MOV AL,00000111B
;循环查询 K0 状态
10.10 8255芯片的A 口和B 口分别与8个LED 灯和8个开关连接好, 通过开关控制 LED 等的
开和闭。
8255的端口地址为 40, 42, 44和46H 。
画岀译码电路图,编写初始化程序和控制程 序。
【答】参考程序如下:
L1: IN
MOV AL,B OUT 63H,AL
AL,62H ;8255 方式设置 ;查询 K0 状态
OUT 63H,AL ;正常, L0 亮
JMP
L2
L11: MOV AL,00000000B ;不正常, L0 灭
OUT
63H,AL L2: IN
AL,62H
TEST AL,02H
;查询 K1 状态
JZ L3
L21:
MOV AL,00000010B OUT
63H,AL L3: IN
AL,62H
;查询 K2 状态
JZ
OUT 63H,AL JMP
L4
L31:
MOV AL,00000100B OUT
63H,AL L4: IN
AL,62H ;查询 K3 状态
JZ
L41:
OUT JMP
63H,AL L1
MOV AL,00000110B OUT 63H,AL JMP
L1
MOV AL , B
L1: IN
;8255 方式设置 ;读 B 口开关状态
如图10-3为用一片8255A 控制八个8段共阴极LED 数码管的电路。
现要求按下某个开关, 其代
表的数字(K 1为1, K 2为2,・・・K 8为8)在数码管从左到右循环显示(已有一个延时子程 序DELAY 可以调用),直到按下另一个开关。
假定
8255A 的口 A 、B 、C 及控制口的地址
依次为FFF0h H FFF3H 。
编写完成上述功能的程序,应包括 8255A 的初始化、控制程序和
数码管的显示代码表。
JC MOV AL,8
MOV DX,0FFF0H
【答】参考程序:
TAB DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH
;位选定义 ;开关状态暂
PB PC
DB 1 DB 0 MOV BX,0 MOV DS,BX
MOV BX,OFFSET TAB ;段码表指针
MOV AL,B MOV DX,0FFF3H OUT DX,AL
L1: MOVDX,0FFF1H
MOV AL,PB ;8255方式设置
OUT DX,AL
CALL DELAY ;位选通
ROL P B,1 MOV DX,0FFF2H IN
AL,DX
;位选转换
MOV PC,AL MOV CX,8
L2: RCR
P C,1 ;读开关状态 ;开关状态暂存
;移位8次查询开关状态,同时按下最高位优先
L3 SUB
AL,CL
XALT
;获得开关位 ;查表获得显示段
OUT
DX,AL ;显示开关位
L3: LOOP
L2 JMP
8255工作在方式 L1
1,
【答】输入中断服务程序从 8255输入数据寄存器读数据。
输岀中断服务程序向 存器写数据。
输入和输岀时中断服务程序各完成什么功能 8255输岀数据寄
MOV AL,01100101B OUT 43H,AL ;8253计数器 1方式设置
MOV AL,10H
OUT 41H,AL ;计数值为 1000,并启动计数器 1计数
MOV AL,B
OUT 63H,AL
;8255方式设置 JMP
$
STI
;1秒中断 IN AL,60H ;读A 口
OUT 61H,AL
口显示
IRET
【答】8253计数器1输入为1ms 脉冲,输岀中断请求。
INTP:
有个 1 m s 的脉冲信号源送 8253 的计数器 1 利用软件方式扩大定时 1 秒,每秒钟从 8255 的
PA 口读入一组开关数并送 PB 口的LED 管显示,设8253 , 8255的端口地址分别为 40H~43H 和60H 〜63H ,且只用10条地址线(A0~A9)用于端口译码。
请完成:①硬件连接。
②编 写对8253计数器1初始
化程序段(仅 50ms )。
③ 编写对8255的初始化程序以及 1秒 到后从PA 口读入一个字节开关数并送
PB 口显示的程序段。