⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 printju.asm

📁 PIC单片机的汇编源码合集,应用比较广泛,设计程序时可做子程序来用
💻 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 + -