📄 print.asm
字号:
A8255 XDATA 8000H ;PA口地址
B8255 XDATA 8001H ;PB口地址
C8255 XDATA 8002H ;PC口地址
D8255 XDATA 8003H ;状态口地址
ORG 0000H
AJMP MAIN
;*****************************************************************************
; /*主程序*/
;*****************************************************************************
ORG 0030H
MAIN: MOV DPTR,#D8255 ;状态口
MOV A,#080H
MOVX @DPTR,A
MOV A,#1BH ;初始化打印机
CALL OUTDATA
MOV A,#40H
CALL OUTDATA
MOV A,#1BH ;选择字符集命令
CALL OUTDATA
MOV A,#38H ;选择字符集3
CALL OUTDATA
LOOP: MOV R0,#00H
MOV DPTR,#TAB
NEXT: MOV A,R0
MOVC A,@A+DPTR ;取要打印的字符
CJNE A,#00H,PRINT
AJMP LOOP
PRINT: CALL OUTDATA
INC R0
AJMP NEXT
;*****************************************************************************
; /*数据传送子程序*/
;*****************************************************************************
OUTDATA: PUSH DPL
PUSH DPH
MOV DPTR,#A8255
MOVX @DPTR,A ;送入打印机
MOV DPTR,#D8255
LL: MOV A,#0EH ;产生STB脉冲
MOVX @DPTR,A
MOV A,#0FH
MOVX @DPTR,A
CALL CHECK
CALL DELAY
POP DPH
POP DPL
RET
;*****************************************************************************
; /*检忙子程序*/
;*****************************************************************************
CHECK: MOV DPTR,#C8255
BUSY: MOVX A,@DPTR
JB ACC.4,BUSY
RET
;*****************************************************************************
; /*延时子程序*/
;*****************************************************************************
DELAY: MOV R4,#25 ;延时
DELAY1: MOV R5,#25
DJNZ R5,$
DJNZ R4,DELAY1
RET
TAB: DB 0C6H,0F4H ;启
DB 0B6H,0ABH ;东
DB 0CAH,0D0H ;市
DB 0CEH,0A2H ;微
DB 0BBH,0FAH ;机
DB 0D3H,0A6H ;应
DB 0D3H,0C3H ;用
DB 0D1H,0D0H ;研
DB 0BEH,0BFH ;究
DB 0CBH,0F9H ;所
DB 00H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -