或正在打印一行字符,则BUSY1;反之,则BUSY0。因此,当查询到BUSY0时,则可通过8255A向打印机输出一个字符。此时,要给打印机的选通端DSTB一个负脉冲,将字符选通到打印机的输入缓冲器中。
由电路图可知,A口作为传送字符的通道,工作于方式0输出;C口高四位工作于方式0输入,C口低四位工作于方式0输出。故8255A的方式选择控制字为10001000B,即88H。其程序如下:Datasegme
t
Aportequ200HCportequ202HCtrolequ203H
word完美格式
f专业资料
ADYdb26dup
DataE
ds
Stacksegme
t
Db100dup
Stacke
ds
Codesegme
t
Assumecscodedsdatassstack
MAINPROCFAR
PUSHDS
XORAXAX
PUSHAX
MOVDXCtrol
MOVAL88H方式控制字10001000B
OUTDXAL
MOVAL,03H用C口置复位控制字使PC11
OUTDX,AL
MOVCX26设置计数器初值为26
LEASIADY
LL:MOVDXCport
INAL,DX
读C口的值
ANDAL,20H
测试D5位
JNZLL
不为0,则PC51,打印机正忙,等待
MOVDXAport
MOVAL,SI
打印机不忙,则送字符给A口
OUTDX,AL
MOVDXCtrol
MOVAL,02H
使PC10
OUTDX,AL
INCAL
使PC11,则得一个负脉冲输出
OUTDX,AL
INCSI
修改地址指针
DECCX
修改计数器的值
JNZLL
26个字符未输完,则继续
RET
MAINENDP
CODEENDS
ENDMAIN
5、某PC机应用系统以8255A作为接口,采集8位开关S0~S7的状态,然后通过
一组发光二极管LED0~LED7显示出来(Si闭合,对应的LEDi亮)。电路连接图如
下图所示。
(1)写出8255的四个端口地址;
(2)写出8255的方式控制字(未用的位设为0);
word完美格式
f专业资料
(3)编写实现给定功能的程序段。
附:8255A控制字格式:D0:C口低4位方式,0输出、1输入D1:B口IO方式,0输出、1输入D2:B口工作方式,0方式0、1方式1D3:C口高4位方式,0输出、1输入D4:A口IO方式,0输出、1输入D6、D5:A口工作方式,00方式0、01方式1、10或11方式2D7:标志位为1
解:(1)由图可知,当A9A8A7A6A5A4A3A211001000时,74LS138的Y0输出低
电平,选中8255A。由此可知:
8255A的A口、B口、C口及控制口地址分别为:320H、321H、322H、323H。
(2)A口工作在方式0输出、B口工作在方式0输入,C口空闲,所以8255A的
工作方式控制字为:82H。
(3)程序段如下:
MOVAL,82H;置方式字
MOVDX,323H;置控制口地址
OUTDX,AL;写控制字
MOVDX,321H;置B口地址
INAL,DX;读开关状态(断开为1,接通为0)
NOTAL
;状态取反
word完美格式
f专业资料
MOVDX,320H;置A口地址
OUTDX,AL;输出(1灯亮,0灯灭)
HLT
;停机
6、某系统中8253r