为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

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

2012-04-25 5页 pdf 92KB 13阅读

用户头像

is_409582

暂无简介

举报
AVR8.7中断应用举例——打印机接口设计程序 8.7 中断应用举例——打印机接口设计 打印机功能:计算机的主要外围设备之一,用 来把测量、运算结果或程序清单打印出来,有些打 印机还可以打印表格和图形。 打印机的种类:有字符式、针式、激光、笔描 和热灼式等,工作原理也各不相同,价格由 100 元到几万元不等,其内部由一些单片机、集成电路、 机械机构和微电机等部分组成的机电一体化系统。 但其与计算机接口方法基本上是相近的。 目前打印机与单片机的接口大多采用标准的 Centronic 打印机接口。Centronic 接口的打印机一 般采用: 8 位数据线 和...
AVR8.7中断应用举例——打印机接口设计程序
8.7 中断应用举例——打印机接口设计 打印机功能:计算机的主要外围设备之一,用 来把测量、运算结果或程序打印出来,有些打 印机还可以打印#格#和图形。 打印机的种类:有字符式、针式、激光、笔描 和热灼式等,工作原理也各不相同,价格由 100 元到几万元不等,其内部由一些单片机、集成电路、 机械机构和微电机等部分组成的机电一体化系统。 但其与计算机接口方法基本上是相近的。 目前打印机与单片机的接口大多采用的 Centronic 打印机接口。Centronic 接口的打印机一 般采用: 8 位数据线 和三根基本的应答控制线: 、BUSY、 。 为选通信号,由单片机发出,可把数据线上的 打印机数据存入打印机的缓冲区中,送满一行后启 动打印机打印一行字符。BUSY 表示打印机是否处 于忙的状态,如它等于 1(处于忙状态),则不能 接受新的数据,如等于 0(处于空闲状态),则可 以接收新的打印数据。 是打印机完成一次打印 后的应答信号。 以 PP40 彩色绘图打印机为例,PP40 与主机的 通讯接口时序如图 8.1 所示。如下: 1/5 图 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 2/5 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 才能传送一个字节数据,用查询 的方法送一组数据给打印机有时需要数秒钟。这样 单片机在这段时间内就不能干别的事情,有些情况 是不允许的,常采用中断的方法,其工作过程如下。 主程序送第一个数据给打印机数据口,接着发 选通脉冲,打印机接收处理该数据时,忙线变高, 3/5 直到处理好此数据后忙线变低,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;X 指向打印缓冲区首址 ldi xl,$00 ldi r25,17;要打印的字符数 ld r24,x+ ;向打印机数据口送第一个字符 out portc,r24 cbi portd,0 ;发选通脉冲( ) rcall t1us 4/5 sbi portd,0 ldi r24,$40 ;使能 INT0 中断 out gimsk,r24 sei ;开中断 here: rjmp here 采用中断的方法中断服务程序如下: EXT_INT0:in r1,sreg;保护标志寄存器 ld r24,x+ ;向打印机数据口送字符 out portc,r24 cbi portd,0;发选通脉冲( ) rcall t1us sbi portd,0 dec r25 ;是否发完 brne ext_int01 ldi r24,$00;发完则关 INT0 中断 out gimsk,r24 ext_int01: out sreg,r1 ;恢复标志寄存器 reti;中断返回 5/5
/
本文档为【AVR8.7中断应用举例——打印机接口设计程序】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索