📄 printju.asm
字号:
;*********************PRINTJU****************************
;本程序实现炜煌汉字微型打印机打印矩形波曲线。
;入口参数:无。
;出口参数:无。
;占用资源:W,STATUS,RD0~RD7,RA0,RA1,RA2,RA4,RA5,023H,028H,029H,二重堆栈。
;说明: 1,具体型号为WH-40-PT,命令集选用ESC格式。
; 2,接口为标准并行接口CENTRONICS。
; 3, RD口为数据输出口,RA口为控制口。
; 4, 本程序未考虑CALL,GOTO超过2K范围,及表大于256的情况。
;******************常量定义*******************************
IFNDEF PRINTJU1
#DEFINE PRINTJU1
#DEFINE ERR PORTA,0 ;打印机的出错信号
#DEFINE ACK PORTA,1 ;打印机的确认信号
#DEFINE BUSY PORTA,2 ;打印机的忙信号
#DEFINE SEL PORTA,4 ;打印机的在线信号
#DEFINE STB PORTA,5 ;单片机对打印机的选通信号
;CNT EQU 23H ;延时用
;TEMP1 EQU 28H ;存待发送数据个数
;TEMP2 EQU 29H ;数据指针
DNUMBER EQU .93 ;待发送数据的个数
INCLUDE "printinit.ASM" ;包含初始化文件
;****************取数据子程序******************************
IN_DATA ADDWF PCL,F
RETLW 1BH ;打印方波曲线。
RETLW 27H ;第一点行
RETLW .18 ;ESC 27
RETLW 05H
RETLW 06H
RETLW 07H
RETLW 08H
RETLW 09H
RETLW 0AH
RETLW 0FH
RETLW 10H
RETLW 11H
RETLW 12H
RETLW 13H
RETLW 14H
RETLW 19H
RETLW 1AH
RETLW 1BH
RETLW 1CH
RETLW 1DH
RETLW 1EH
RETLW 0DH
RETLW 1BH ;第二点行
RETLW 27H
RETLW .6
RETLW 05H
RETLW 0AH
RETLW 0FH
RETLW 14H
RETLW 19H
RETLW 1EH
RETLW 0DH
RETLW 1BH ;第三点行
RETLW 27H
RETLW .6
RETLW 05H
RETLW 0AH
RETLW 0FH
RETLW 14H
RETLW 19H
RETLW 1EH
RETLW 0DH
RETLW 1BH ;第四点行
RETLW 27H
RETLW .6
RETLW 05H
RETLW 0AH
RETLW 0FH
RETLW 14H
RETLW 19H
RETLW 1EH
RETLW 0DH
RETLW 1BH ;第五点行
RETLW 27H
RETLW .6
RETLW 05H
RETLW 0AH
RETLW 0FH
RETLW 14H
RETLW 19H
RETLW 1EH
RETLW 0DH
RETLW 1BH ;第六点行
RETLW 27H
RETLW .24
RETLW 00H
RETLW 01H
RETLW 02H
RETLW 03H
RETLW 04H
RETLW 05H
RETLW 0AH
RETLW 0BH
RETLW 0CH
RETLW 0DH
RETLW 0EH
RETLW 0FH
RETLW 14H
RETLW 15H
RETLW 16H
RETLW 17H
RETLW 18H
RETLW 19H
RETLW 1EH
RETLW 1FH
RETLW 20H
RETLW 21H
RETLW 22H
RETLW 23H
RETLW 0DH
RETLW 1BH ;纸进给30点行。
RETLW 4AH
RETLW .30
;*******************子程序********************************
PRINTJU CALL PRINTINIT
BCF STATUS,RP0 ;选体0
MOVLW DNUMBER ;初始化发送数据个数
MOVWF TEMP1
MOVLW 00H ;数据指针赋初值
MOVWF TEMP2
BSF STB ;初始化STB为高电平
N_DATA NOP
IN_SEL BTFSS SEL ;测试是否在线
GOTO IN_SEL
IN_ERROR BTFSS ERR ;测试是否有错误
GOTO IN_ERROR
IN_BUSY BTFSC BUSY ;测试是否忙
GOTO IN_BUSY
MOVF TEMP2,W
CALL IN_DATA ;调取数据子程序
MOVWF PORTD ;发送数据
BCF STB ;产生STB选通信号
CALL DELAY201
BSF STB
IN_ACK BTFSC ACK ;检测应答信号
GOTO IN_ACK
INCF TEMP2,F ;数据指针加一
DECFSZ TEMP1,F
GOTO N_DATA
RETURN
;****************大于20(29)微秒延时子程序*************************
DELAY201 MOVLW .8
MOVWF CNT
LOOP103 DECFSZ CNT,F
GOTO LOOP103
RETURN
ENDIF
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -