微机原理 接口部分编程题复习

某系统中8253芯片端口地址为FFF0H~FFF3H。计数器0工作在方式2,CLK0=2MHz,要求OUT0输出1kHz的脉冲;计数器l工作在方式0,对外部事件计数,每计满100个向CPU发出中断请求。试写出8253的初始化程序。

对于计数器0 ,二进制方式计数
MOV  DX,0FFF3H  ;写控制端口
MOV  AL, 00110100B ;写控制字
OUT  DX, AL 
MOV  AX, 2000 ;计数初值
MOV   DX,0FFF0H ;计数器0端口
OUT   DX,  AL  ;先写低8位
MOV  AL, AH 
OUT  DX, AL;写高8位

计数器1,BCD码计数
MOV   DX,0FFF3H
MOV  AL, 01010001B ;写控制字
OUT  DX, AL
MOV   DX,0FFF1H
MOV  AL, 100
OUT DX, AL

8255A作打印机接口,工作于查询方式。A端口作为传送字符的通道,工作于方式0,输出方式;B端口不用;端口C工作于方式0,PC2作为BUSY信号输入端,PC3~PC0为输入方式;PC6作为选通信号输出端, PC7~PC4为输出方式。 设CPU为8086,8255A的端口地址为:A端口:00D0H C端口: 00D4H 端口:00D2H 控制口:00D6H,试写出初始化程序片段。
在这里插入图片描述

LEA  SI, BUFF
MOV  AL, 10000001B ;A口方式0输出,C口高四位输出,低四位输入,B口不工作
OUT   0D6H, AL ;送控制端口
MOV   AL,00001101B 置位/复位控制字
OUT    0D6H, AL 
WAIT:    IN  AL, 0D4H ;读C端口,检测打印机是否为忙
TEST   AL, 00000100B  ;检测PC2状态,1为忙
JNZ  WAIT 
MOV  AL, [SI]
OUT  0D0H, AL
MOV   AL,00001100B
OUT  0D6H, AL
MOV   AL,00001101B 
OUT  0D6H, AL

猜你喜欢

转载自blog.csdn.net/weixin_42240667/article/details/106572946