中断应用举例打印机接口设计程序.docVIP

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

8.7 中断应用举例——打印机接口设计 打印机功能:计算机的主要外围设备之一,用来把测量、运算结果或程序清单打印出来,有些打印机还可以打印表格和图形。 打印机的种类:有字符式、针式、激光、笔描和热灼式等,工作原理也各不相同,价格由100元到几万元不等,其内部由一些单片机、集成电路、机械机构和微电机等部分组成的机电一体化系统。但其与计算机接口方法基本上是相近的。 目前打印机与单片机的接口大多采用标准的Centronic打印机接口。Centronic接口的打印机一般采用: 8位数据线 和三根基本的应答控制线:、BUSY、。为选通信号,由单片机发出,可把数据线上的打印机数据存入打印机的缓冲区中,送满一行后启动打印机打印一行字符。BUSY表示打印机是否处于忙的状态,如它等于1(处于忙状态),则不能接受新的数据,如等于0(处于空闲状态),则可以接收新的打印数据。是打印机完成一次打印后的应答信号。 以PP40彩色绘图打印机为例,PP40与主机的通讯接口时序如图8.1所示。如下: 图8.2 8535与PP40接口电路 若打印如下两行字符: t: 32 ℃ P: 102kPa 则要把以下ASCⅡ码送给打印机:$74(t)、$3A(:)、$20(空格)、$33(3)、$32(2)、$6F(°)、$43(C )、$0A(换行)、$50(P)、$3A(:)、$20(空格)、$31(1)、$30(0)、$32(2)、$6B(k)、$50(P)、$61(a)、$0A(换行)。 事先已将这些ASCⅡ码放在SRAM中$100开始的单元中。 一、采用查询的方法 给打印机送数据可以采用查询的方法,单片机每送一个数据,发选通脉冲后,打印机忙线变高,同时接收处理该数据,完成后忙线变低,单片机查到忙线变低后再送下一个数据。采用查询的方法程序如下: 采用查询的方法程序如下: .include 8535def.inc RESET: ldi r16,low(ramend) ;栈指针置初值 out spl,r16 ldi r16,high(ramend) out sph,r16 ldi r16,$ff;定义C口为输出 out ddrc,r16 ldi r16,$01 ;定义PD0为输出,PD2为输入 out ddrd,r16 sbi portd,0;先使PD0输出为高() ldi xh,$01;X指向打印缓冲区首址 ldi xl,$00 ldi r25,18 ;要打印的字符数 loop: ld r24,x+ ;向打印机数据口送一个字符 out portc,r24 cbi portd,0 ;发选通脉冲() rcall t1us sbi portd,0 rcall t1us ;延时3us rcall t1us rcall t1us loop1: sbic pind,2;等待忙线变低 rjmp loop1 dec r25 ;字节数是否发完 brne loop;没发完再发下一个 here: rjmp here 二、采用中断的方法 打印机中的微电机和机械的动作是一个慢过程,需要几十ms才能传送一个字节数据,用查询的方法送一组数据给打印机有时需要数秒钟。这样单片机在这段时间内就不能干别的事情,有些情况是不允许的,常采用中断的方法,其工作过程如下。 主程序送第一个数据给打印机数据口,接着发选通脉冲,打印机接收处理该数据时,忙线变高,直到处理好此数据后忙线变低,BUSY的下降沿产生一个INT0中断; 在中断服务子程序中再送下一个数据,发送选通脉冲后立即返回主程序。这样,送字符和发选通信号是在外中0服务子程序中完成,单片机主程序照常执行,每送一个字符,只打断几微秒。 采用中断的方法主程序如下: .include 8535def.inc .org $000 rjmp RESET rjmp EXT_INT0 RESET: ldi r16,low(ramend);栈指针置初值 out spl,r16 ldi r16,high(ramend) out sph,r16 ldi r16,$ff ;定义C口为输出 out ddrc,r16 ldi r16,$01 ;定义PD0输出,PD2输入 out ddrd,r16 sbi portd,0 ;先使PD0输出为高 ldi r16,$02;定义INT0下降沿申请中断 out mcucr,r16 clr r16 ;清中断标志寄存器 out gifr,r16 ldi xh,$01;

文档评论(0)

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

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

1亿VIP精品文档

相关文档