原创 单片机驱动微型打印机

2010-10-9 23:24 2533 4 4 分类: MCU/ 嵌入式

;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


   list      p=16f877A         ;列表伪指令


include  “p16f877A.inc”   ;将包含文件插入源程序中     


DATA1        equ       25H               ;定义变量


    DATA2        equ       26H


 


MAIN         bcf       STATUS,RP1        ;设置存储体1


bsf       STATUS,RP0


clrf      TRISD             ;将RD端口设置为输出


bcf       TRISA,1           ;RA1设置为输出


bsf       TRISA,2           ;RA2设置为输入


       


call       LOP2             ;调图形打印命令


movlw      00H              ;取点阵码的起始位置送入DATA2


movwf      DATA2


call       GOZO             ;打印上部分图形点阵


call       HOHO             ;换行


call       LOP2             ;调图形打印命令


movlw      10H              ;取下部分点阵码的起始位置


movwf       DATA2


call        GOZO            ;打印下部分图形点阵


call        HOCO            ;调回车子程序


call        HOCO


goto        MAIN


;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


 


LOP2      movlw       1BH              ;1B,4B为打印n1×8点阵图形命令


call        SOZO    


movlw       4BH


call        SOZO


movlw       20H             ;20H为n1打印宽度


call        SOZO


movlw       00H             ;00H为n2


call        SOZO


return


 


GOZO      movlw       20H              ;打印的字节数送DATA1


movwf       DATA1


DLOOP      movf        DATA2,W         ;点阵码的起始位置送入W


call        DLOOP1           ;取点阵码


call        SOZO             ;进行打印点阵


incf        DATA2         


decfsz      DATA1            ;点阵码的字节数减一


goto        DLOOP            ;末打印完继续


return                       ;打印完返回


 


   SOZO      bcf        STATUS,RP0        ;设置存储体0


          bsf         PORTA,1           ;RA1设置为高电平


          bsf         PORTA,2           ;RA2设置为高电平


LOOP2   btfsc       PORTA,2            ;打印机“BUSY”是否忙


          goto       LOOP2              ;忙继续检测


         movwf      PORTD              ;不忙输出打印


          bcf        PORTA,1            ;产生 信号


          bsf        PORTA,1


       return


 


HOHO     movlw      0AH                ;换行子程序,0AH为换行命令


call        SOZO


return


 


HOCO    movlw       0DH                ;回车子程序,0DH为回车命令


call        SOZO


return


;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *


 


DLOOP1   addwf    PCL                   ;地址偏移量加当前PC值


retlw    20H                    ;点阵码,上部分图形


retlw    50H


retlw    88H


retlw    88H


 retlw    50H


retlw    27H


retlw    08H


retlw    10H


retlw    20H


retlw    04H


retlw    04H


retlw    04H


retlw    02H


retlw    10H


retlw    08H


retlw    00H


retlw    00H                    ; 点阵码,下部分图形


retlw    00H


retlw    00H


retlw    00H


retlw    00H


retlw    0F0H


retlw    08H


retlw    04H


retlw    02H


retlw    02H


retlw    02H


retlw    02H


retlw    04H


retlw    08H


retlw    10H


retlw    00H


       end

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条