微机原理 接口部分编程题复习
程序员文章站
2024-01-30 23:22:40
...
某系统中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