8255典例之打印机(选通信号和置位复位控制字的应用)

目录

题目

分析 

思考问题 

完整代码 (使用子程序段)


题目

在某一8086系统中接有一个打印机,8255A作为输出接口,工作在方式0。试编一程序将寄存器DL中的内容传送到打印机打印。


 

分析 

 打印机接口简介:25芯D型连接器,在计算机机箱上是孔状插座。

打印机的主要引脚: 

  • D7~D0:8条数据引脚
  • STB:打印机数据选通
  • BUSY:打印机忙
  • 缺纸、联机、出错、初始化等引脚

打印机具体工作过程:

  1. 需要打印时,查询打印机是否忙?BUSY有效,则告诉接口,打印机正在打印数据。BUSY无效,表示打印机空闲,可以通过8255A发送一个字符给打印机。
  2. 数据线D7—D0出现有效数据;
  3. 打印机的STB有效,通知打印机,接口给打印机一个数据,数据从数据线进入打印机。为使打印机接收数据,要生成一个选通脉冲(初始值是1,置0,再置1)
  4. 需要让PC0位输出一个1-0-1变化的选通信号

 

题目分析控制字

A口:方式0、输出数据

上C口:方式0、PC4输入状态信号

下C口:方式0、PC0输出选通信号

方式控制字为:10001000B=88H


 

思考问题 

1. 如何测试BUSY状态? 使用TEST指令

TEST指令与AND指令作用相似,但是运算完后不改变原值 

BUSY接的是PC4,我们需要测试C口PC4是1还是0

  • 若是1,说明打印机忙,循环回到起点,继续检测BUSY状态
  • 若是0,则可以继续进行下一步操作
again:in AL, c_port	  ;读C口数据
       test AL,00010000b 
       jnz again;若PC4为1,则回到循环   

 

2. 如何让C口的某一位变化?使用置位/复位控制字:只对C口的某一位有效

置位/复位控制字:当将端口A定义为方式1或者方式2,或者将端口B定义为方式1时,要求使用端口C的某些位作控制使用,这时需要使用专门的控制字对端口C的各位进行置位/复位操作。

 在本题中,我们需要让PC0位输出一个1-0-1变化的选通信号,因此只需要写3个分别代表101的置位复位控制字,即可完成一根线上输入不同电平的操作

 

  • 设置PC0为1的置位复位控制字(设置C口的PC0位为1)
00000001
  • 设置PC0为0的置位复位控制字(设置C口的PC0位为0)
00000000

 三次写控制字的操作,便可以实现输出101的选通信号

mov AL,00000001b     ;置PC0为1
out ctrl_port,AL
mov AL, 00000000b     ;发选通信号,置PC0为0
out ctrl_port,AL
mov AL, 00000001b     ;置PC0为1
out ctrl_port,AL

通信号

完整代码 (使用子程序段)

PRINTER PROC
;设置工作方式,初始化
   MOV AL,88H
   OUT CTR_PORT,AL
PRINT: IN AL,C_PORT
       TEST AL,00010000B  ;测试PC4是否为1
       JNZ PRINT
       MOV AL,DL  ;把要打印的字符放入AL中
       OUT A_PORT,AL  ;把字符从A口输出,进入打印机
       MOV AL,00000001B ;发送选通信号,置位PC0为1
       OUT CTRL_PORT,AL
       MOV AL,00000000B ;发送选通信号,复位PC0为0
       OUT CTRL_PORT,AL
       MOV AL,00000001B ;发送选通信号,置位PC0为1
       OUT CTRL_PORT,AL
       RET ;子程序结束标志,返回主程序
PRINTER ENDP

  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值