当前位置:首页 > 微机原理与接口技术习题集2
最新精品文档,知识共享!
OUT 80H,AL MOV AL,77H OUT 43H,AL MOV AL,50H OUT 41H,AL MOV AL,72H OUT 41H,AL CALL DLSS MOV AL,00H OUT 80H,AL IRET
504. 编写8255A以中断方式作为打印机接口的程序 【参考答案】P93 例84
PB7~PB08255A工作方式1,其电路
PC5STB如图51所示,这中断向量PC2ACK为2000H:3000H,在2CH、
8255APC1OBF未用2DH、2EH、2FH中端口地PC0址设为E0H、E2H、E4H、
图518255A与打印机接口E6H,
控制程序如下: START: MOV AL,84H OUT 0E6H,AL MOV AL,0BH OUT 0E6H,AL XOR AX,AX MOV DS,AX MOV AX,3000H MOV WORD PTR DS:[002CH],AX MOV AX,2000H MOV WORD PTR DS:[002EH],AX MOV AL,05H OUT 0E6H,AL STI …ROUTINI1R: MOV AL,[DI] OUT 0E0H,AL MOV AL,0AH OUT 0E6H,AL INC AL OUT 0E6H,AL … LRET
505. 通过8255A接口控制8个发光二极管亮、暗的应用实例 【参考答案】P94 例85
打印机
最新精品文档,知识共享!
通过8255A 端口A输出控5V8255AL7制8个发光二极管的亮和RPA7R暗,接口连接如图52所示,PA6L68255A的端口地址为80H~83H。要求L7~L0每隔RPA03s点亮1次,点亮的顺序为:L0图528255A控制8个发光二L7→L6→L5→L4→L3→L2
极管的亮和暗 →L1→L0→L7……周而复
始。
1. 写出8255A 的方式控制字和初始程序,并加以注释。 2. 写出题意要求的程序。
根据图52可知:设置端口A 为方式0输出,其余任意,方式控制字为:
1 00 0 000 即80H ------- ----------- ------- ------- 标志位 A口方式0 输出 任意
初始化程序如下:
MOV AL,80H ;设置8255A方式控制字 OUT 83H,AL
根据题意可知:8个发光二极管L7~L0为共阳极接法,当PAi输出为“0”时,发光二极管亮;输出为“1”时,发光二极管灭。当L7亮时,其余LED都为暗,所以端口A 的控制字为:01111111B,即7FH.因为显示顺序是L7→L6→L5→L4→L3→L2→L1→L0→L7……因此每隔3s,是控制字右移一位,即“0”往右移,程序如下: MOV AH,7FH LOOP: MOV AL,AH OUT 80H,AL ;使L7亮控制字输出 CALL DELAY3s ;延迟3s ROR AH,1 ;控制字小循环右移1位 JMP LOOP
506. 利用8255A作为两机并行通信接口的应用实例 【参考答案】P95 例86
两台PC机通过8255A 构成的借口实现并行传送数据,A机发送数据,B机接收数据。A机一侧的8255A工作于方式1输出,B机一侧的8255A工作于方式0输入。两机的CPU与8255A之间均采用查询方式交换数据。假设两台机传送1KB数据,发送缓冲区为0300:0000H,接收缓冲区为0400:0000H。 硬件连接如图53所示
……最新精品文档,知识共享!
CPUD0…D7A机(发送)8255PA0…PA7B机(接收)8255PA0…PA7CPUD0…D7PC7PC6OBFACKPC4PC0图53
A机是发送,所以把A机一侧8255的A 口设定为方式1输出,从PA7~PA0引脚上发送由CPU
两台PC机并行通信接口电路原理写入A 口的数据,而PA7和PA6引脚作为联络线OBF和ACK。B机是接收数据,将B机一
侧的A口设定为方式0输入,由PA7~PA0接收A机送来的数据,而选用PA4和PA0作 为联络线。假定A、B 两机的通信接口8255的A端口地址均为300H ~303H,驱动程序如下: A机的发送程序段: … MOV AX,0300H MOV ES,AX ;设A机发送缓冲区段基址 MOV BX,0 ;设A机发送缓冲区偏移量 MOV CX,3FFH ;置发送字节计数器 ;对8255A初始化 MOV DX,303H ;指向8255A控制口 MOV AL,10100000H ;设A口为方式1输出 OUT DX,AL MOV AL,00001101B ;这发送中断允许INTEA=1 OUT DX,AL ;发送第一个数据
LOOP0: LOOP1:
MOV MOV OUT INC DEC MOV IN AND JZ MOV MOV OUT INC DEC
DX,300H AL,ES:[BX] DX,AL BX CX
DX,302H AL,DX AL,08H LOOP1 DX,300H AL,ES:[BX] DX,AL BX CX
;向A口写第一个数据,产生第一个OBF信号,送给对方以便获取对方的ACK
;缓冲区指针+1 ;计数器减1
;指向8255A状态
;查询发送中断请求INTRA=1? ;PC3=INTRA=1? ;若无中断请求则等待 ;有请求向A发送数据 ;从缓冲区取数据
;通过A口送第二个数据 ;缓冲区指针加1 ;字节计数器减1
最新精品文档,知识共享!
JNZ MOV INT B机接收程序段:
… MOV MOV MOV MOV MOV
MOV
LOOP0
AX,4C00H 21H
AX,0400H ES,AX BX,0
CX,3FFH
DX,303H AL,10011000B
OUT DX,AL MOV AL,00000001B ;置PC0=ACK=1,表示尚未接收数据 OUT DX,AL LOOP0: MOV DX,302H ;指向C口 LOOP1: IN AL,DX ;查A机的OBF(PC4)=0? AND AL,10H ;即查A机是否发来数据? JNZ LOOP1 ;若为发来数据,则等待 MOV DX,300H ;发来数据从A口读数据 IN AL,DX MOV ES:[BX],AL ;存入接收缓冲区 MOV DX,303H ;产生ACK信号,并发回B机 MOV AL,0 ;PC0置“0” OUT DX,AL NOP ;ACK负脉冲宽度 NOP MOV AL,01H ;PC0=1 OUT DX,AL INC BX ;缓冲区指针加1 DEC CX ;计数器减1 JNZ LOOP0 MOV AX,4COOH INT 21H ;送完返回DOS 507. 8255A通过开关控制红、绿、黄灯的亮、暗的应用实例 用8255A控制一组红、绿、黄灯(见图54),反复检测K1、K2,要求由K1、K2的闭合和断开,控制红、绿、黄三灯的点亮。 当K1合,K2合时,黄灯亮; K1合,K2断时,红灯亮; K1断,K2合时,绿灯亮; K1断,K2断时,黄灯亮;
已知8255A的端口地址为60H~63H,试编写初始化程序及控制程序。
;字节未发送完继续 ;功能调用号
;已完,返回DOS
;接收缓冲区段基地址
;接收缓冲区偏移量 ;接收字节计数器 ;8255A初始化 ;8255A控制口
;A口和C口高4位为方式0输入,C口低4位为方式0输出
共分享92篇相关文档