;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
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
文章评论(0条评论)
登录后参与讨论