📄 p2764.asm
字号:
;P1.0=0时启动电机
;P3.4为打点信号
;P3.3为继电器信号
;10H保存打印头型号
;12H保存RAM的大小
;13H保存一行字符数
;14H保存打印头数据
;15H保存一行点阵数
;16H字符高度
;17H,18H与造表位置有关
;19H保存打印右限(51H)
;1AH与用户定义一个字符有关,保存用户已定义的字符数(26H)
;1BH页长
;1CH行间距(31H)
;1DH保存字符,图形打印宽度(1-4)(55H)
;1EH保存字符,图形打印高度(1-4)(56H)
;1FH保存字符,图形打印高,宽度(1-4)(57H)
;21H选用字符集(1,2)(36H);
;31H保存图形打印时字节数的高字节
;32H保存图形打印时字节数的低字节
;36H用于暂存行间距
;37H保存打印左限(6CH)
;38H下划线打印用
;39H上划线打印用
;3AH装订长(4EH,4FH)
;3BH保存N个空格或N行空格(66H)
;24H.0=1 SEL压下
;24H.1=1 SEL压下
;24H.2=1 LF键按下
;24H.3=1 图形打印
;25H.1=0 从BUF读到一个字节
;25H.5=1 允许反白打印
;25H.6=1 该行内所有字符以2倍宽度打印(0EH,14H)
; |24H.5=1 允许 24H.5=0 不允许
;反向打印| (63H)
; |26H.0=1 允许 26H.1=1 不允许
;=========================
;03CCH-04ABH共32*7个单元用于用户定义的字符
SEL EQU 20H ;24H.0
LF EQU 22H ;24H.2
ORG 0000H
MOV SP,#3DH
SETB P3.2
JNB P3.2,SEL_KEY
SJMP NOT_KEY
NOP
ORG 000BH
TIMER0: LJMP TIMER0_INT
SEL_KEY: LCALL DELAY20MS
JB P3.2,NOT_KEY
SEL_KEY1: SETB SEL
LJMP MAIN
ORG 001BH
LJMP Q10E5
NOT_KEY: CLR SEL
Q0020: SJMP Q0041
RETI
;================================================
ORG 0023H
LJMP REC_INT
;================================================
Q0026:
DB 14H
DW Q045D
DB 0eH
DW Q0460
DB 18H
DW Q1039
DB 0dH
DW JUMP3
DB 0aH
DW JUMP2
DB 0cH
DW Q0352
DB 0bH
DW Q0361
DB 09H
DW Q04EE
DB ffH
DW Q00E1
Q0041: SJMP MAIN
;=============================================
Q0043:
DB 25H
DW Q0518
DB 26H
DW USER_DEF_CHAR
DB 4bH
DW Q0C00
DB 2bH
DW Q0474
DB 2dH
DW Q046B
DB 36H
DW Q04D9
DB 37H
DW Q04DD
DB 3aH
DW Q0591
DB 31H
DW Q03AE
DB 42H
DW Q03C9
DB 43H
DW Q03B3
DB 44H
DW Q040B
DB 4aH
DW Q050B
DB 4eH
DW Q03C0
DB 4fH
DW Q03C5
DB 51H
DW Q0432
DB 55H
DW Q044B
DB 56H
DW Q0463
DB 57H
DW Q0467
DB 66H
DW Q03ED
DB 69H
DW Q04E2
DB 6cH
DW Q0442
DB 22H
DW Q0114
DB 27H
DW Q0120
DB 40H
DW Q11AD
DB 63H
DW Q0161
DB 32H
DW Q0FBF
DB 33H
DW Q0F8A
DB 41H
DW Q0F93
DB 4cH
DW Q0BFE
DB 34H
DW Q0DEF
DB 47H
DW Q0DEF
DB 2aH
DW Q0DE3
DB ffH
DW Q00E1
;===========================================================
MAIN: SETB P3.5
SETB P3.0
LCALL RAM_SIZE ;12H=RAM_SIZE
LCALL GET_PARA ;取打印头参数
LCALL CONNECT ;取LF键状态
Q00B6: LCALL JUMP_STAT ;取跳线状态
CLR 24H.1
JNB SEL,Q00C3
SETB 24H.1 ;SEL压下
Q00C0: LCALL Q0A79
Q00C3: LCALL INIT_SYTEM
Q00C6: LCALL SET_TIMER1
LCALL Q11C9
JNB LF,Q00D1
CLR P3.0
Q00D1: MOV A,11H
CJNE A,#01H,Q00D9
LJMP Q020F
Q00D9: CJNE A,#02H,Q00E1
MOV A,11H
LJMP Q017B
;===========================================
Q00E1: MOV SP,#3DH
MOV DPTR,#Q00E1
PUSH DPL
PUSH DPH
LCALL SET_P1
ACALL GET_BYTE_TO_R0
;==================================================
Q00F0: MOV A,R0
XRL A,#1BH
JZ Q0108
MOV A,R0
CLR C
SUBB A,#20H
JC Q00FF
LCALL Q0863
RET
;===================================================
Q00FF: ACALL Q0128
MOV DPTR,#Q0026
ACALL GET_ADDR_TO_DPTR
ACALL JUMP_DPTR
;==================================================
Q0108: ACALL Q0128
ACALL GET_BYTE_TO_R0
;==================================================
DO_ESC: MOV A,R0
MOV DPTR,#Q0043
ACALL GET_ADDR_TO_DPTR
ACALL JUMP_DPTR
;================================================
Q0114: ACALL QGET_BYTE
XRL A,#00H
JZ Q011F
Q011A: LCALL Q0A2C
JC Q011A
Q011F: RET
;====================================================
Q0120:
LCALL Q02BA
JZ Q011F
LJMP Q00F0
;===================================================
Q0128: PUSH 00H
MOV A,34H
JZ Q0135
MOV R0,A
MOV 34H,#00H
LCALL Q088B
Q0135: POP 00H
RET
;====================================================
GET_ADDR_TO_DPTR: PUSH 00H
Q013A: CLR A
MOVC A,@A+DPTR
INC DPTR
DB 05H,E0H
JZ Q014A
DB 15H,E0H
XRL A,R0
JZ Q014A
INC DPTR
INC DPTR
SJMP Q013A
Q014A: CLR A
MOVC A,@A+DPTR
PUSH ACC
CLR A
INC DPTR
MOVC A,@A+DPTR
MOV DPL,A
POP DPH
POP ACC
RET
;===================================================
JUMP_DPTR: POP ACC
POP ACC
PUSH DPL
PUSH DPH
RET
;==================================
Q0161: ACALL QGET_BYTE
Q0163: CJNE A,#01H,Q016F
MOV A,R6
JNZ Q016C
SETB 24H.5
RET
;=============================================
Q016C: SETB 26H.0
RET
;=============================================
Q016F: JZ Q0172
RET
Q0172: MOV A,R6
JNZ Q0178
CLR 24H.5
RET
Q0178: SETB 26H.1
RET
;===================================================
Q017B: MOV SP,#3DH
MOV DPTR,#Q017B
PUSH DPL
PUSH DPH
LCALL SET_P1
ACALL GET_BYTE_TO_R0
Q018A: MOV A,R0
CLR C
SUBB A,#10H
JC Q0195
MOV A,R0
LCALL Q088B
RET
;==================================================
Q0195: MOV DPTR,#Q01E2
ACALL GET_ADDR_TO_DPTR
ACALL JUMP_DPTR
;===================================================
Q019C:
CLR A
MOV R0,A
MOV R1,#03H
Q01A0: CLR C
SUBB A,R6
JNC Q01AE
MOV A,R0
ADD A,#3CH
MOV R0,A
DJNZ R1,Q01A0
LCALL Q075E
RET
;====================================================
Q01AE: JNZ Q01B2
MOV A,#3CH
Q01B2: MOV R1,A
ADD A,R6
MOV R6,A
MOV A,R7
CLR C
SUBB A,R1
MOV R7,A
RET
;==============================================
Q01BA: ACALL GET_BYTE_TO_R0
LCALL Q071B
RET
;==============================================
Q01C0: ACALL Q0591
LCALL CLR_BUF
RET
;==============================================
Q01C6: ACALL QGET_BYTE
MOV R1,A
ACALL GET_BYTE_TO_R0
Q01CB: MOV A,R1
PUSH 01H
PUSH 00H
LCALL Q088B
POP 00H
POP 01H
DJNZ R0,Q01CB
RET
ACALL Q02BA
JZ Q01E1
LJMP Q018A
Q01E1: RET
;===================================================
Q01E2: DB 01H
DW Q044B
DB 02H
DW Q0463
DB 03H
DW Q0467
DB 04H
DW Q03AE
DB 05H
DW USER_DEF_CHAR
DB 06H
DW Q0518
DB 07H
DW Q019C
DB 08H
DW Q01BA
DB 09H
DW Q01C0
DB 00H
DW Q02A5
DB 0aH
DW Q0329
DB 0dH
DW Q0323
DB 0eH
DW Q01C6
DB 0fH
DW Q0599
DB ffH
DW Q017B
;=============================================
Q020F: MOV SP,#3DH
MOV DPTR,#Q020F
PUSH DPL
PUSH DPH
LCALL SET_P1
ACALL GET_BYTE_TO_R0
Q021E: MOV A,R0
CLR C
SUBB A,#10H
JC COMMAND
MOV A,R0
PUSH 00H
LCALL Q088B
POP 05H
RET
;============================================
COMMAND: MOV DPTR,#Q0284
ACALL GET_ADDR_TO_DPTR
ACALL JUMP_DPTR
Q0234:
JUMP1: ACALL USER_DEF_CHAR
ACALL GET_BYTE_TO_R0
CJNE A,#0DH,Q021E
ACALL GET_BYTE_TO_R0
CJNE A,#0AH,Q021E
Q0240: RET
;=================================================
Q0241:
ACALL Q02BA
JZ Q0240
SJMP Q021E
;=================================================
Q0247:
JNB 25H.4,Q024D
CLR 25H.4
RET
Q024D: SETB 25H.4
RET
;=================================================
Q0250:
ACALL GET_BYTE_TO_R0
CLR C
SUBB A,#09H
JC Q025E
INC A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -