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

📄 p2764.asm

📁 微型针式打印机的源代码和PCB图纸
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;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 + -