网站大量收购独家精品文档,联系QQ:2885784924

作为打印机接口.docVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
作为打印机接口.doc

5.4.7 8255A的编程和应用举例 【例】8255A作为连接打印机的接口,工作于方式0,如图5.23所示。 图255A作为打印机接口的示意图 工作过程为:当主机要往打印机输出字符时,先查询打印机忙(BUSY)信号,如果打印机正在处理一个字符或正在打印一行字符,暂时不能接收数据,则忙信号为1,反之,则忙信号为0。因此,当查询到忙信号为0时,则可通过8255A往打印机输出一个字符。此时,要将选通信号置成低电平,然后再使 为高电平,即在端输出一个负脉冲,此负脉冲将字符选通到打印机输入缓冲器。 现将8255A端口A作为传送字符的通道,工作于方式0输出方式;B端口未用,也设为方式0;作为BUSY信号输入端,故为输入方式,作为STB信号输出端,故为输出方式。 设8255A的端口地址为: A端口:00DOH B端口:00D2H C端口:00D4H 控制口:00D6H 使用查询方式输出,待输出的字符在CL中,具体程序段如下: PP: MOV??? AL,81H?;控制字,使A组、B组均为方式0,A端口为输出,PC7~PC4输出,PC3~PC0输入OUT?? 0D6H,AL??;写入控制口MOV?? AL,0DH???;用C端口置1/置0方式使PC6为1,即STB初始状态为高电平OUT?? 0D6H,AL??;写入控制口LPST:IN??? AL,0D4H;读端口C的值TEST??AL,04H;测试PC2位JNZ???LPST ?;如不为0,说明BUSY信号为1,即打印机处于忙状态,故等待MOV???AL,CL?;如不忙,则把CL中字符送端口AMOV???AL,0CH;用置1/置0方式使PC6为0OUT? 0D6H,AL;即向STB输出负脉冲INC???AL OUT???0D6H,AL;再使STB为1· · · ;后续程序段注意:端口C置1/置0 控制字输出到控制口,但是它作用的对象是端口C的某1位。也可以直接把数据输出到端口C,但这种方法会改变端口C的8位而不是1位。 【例】8255A作中断方式工作的字符打印机的接口,如图5.24所示。 图5.24 8255A作中断方式打印机接口 8255A的A端口作为数据通道,工作在方式1输出方式,此时,自动作为OBF信号输出端,则自动作为信号输入端,而自动作为INTR信号输出端。 打印机接口需要一个数据选通信号,故由CPU控制来产生选通脉冲。在此没有用,将它悬空就行了。端连接打印机端。 连到中断控制器8259A(在第六章讲述)的中断请求信号输入端。对应于中断类型号0BH,此中断对应的中断,向量放在00段2CH、2DH、2EH、2FH这4个单元中,8259A在系统程序中已完成初始化,这部分连接图没有画出。??? 设8255A的端口地址为: A端口:00COH B端口:00C2H C端口:00C4H 控制口:00C6H 方式控制字为AOH,因为B口未用,故取位为0,其他各位的值使A组工作于方式1,A端口为输出,作为输出。 在这个例子中,由中断处理子程序完成字符输出;而初始化程序完成对8255A设置方式控制字、设置中断向量、开放中断。主程序执行其它操作,并等待中断,这里没有写出主程序。 中断服务主程序入口标号为INTPR。所谓设置中断向量,就是把中断服务程序的入口地址(4字节的逻辑地址)写到中断向量表中由中断类型号指定的单元中。 要指出的是这里开放中断不仅是指用STI使CPU的中断允许标志IF为1,还要使8255A的INTEA为1,即允许8255A请求中断。 在中断处理子程序中,设字符已放在主机的字符输出缓冲区,往A端口输出字符后,CPU用对C端口的置1/置0命令使输出负脉冲,从而将数据送入打印机。当打印机接收并打印字符后,发出回答信号ACK,由此清除了8255A的“输出缓冲器满”信号,并使8255A产生新的中断请求。INIT;MOV??? AL,0AOH;初始化程序 OUT??? 0C6H,AL???????;设置8255A的控制字 MOV??? AL,01??;使PC0为1,即让STB初始状态为低电平 OUT??? 0C6H,AL XOR??? AX,AX MOV??? DS,AX?????;DS指到0段,中断向量表在0段LEA??? AX,INTPR MOV??? WORD PTR [0BH*4],AX;中断类型号为0BH,写入的表地址为0BH×4MOV??? AX,SEG? INTPRMOV??? WORD PTR [0BH*4+2],AX;把向量高字写入高地址MOV??? AL,0DH?;使INTE为l,允许8255A请求中断OUT??? 0C6H,ALSTI???;使IF为1,开放中断中断处理子程序的主要程序段如下: INTPR:MOV??? AL,DI;D

文档评论(0)

000 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档