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

📄 p2764.asm

📁 微型针式打印机的源代码和PCB图纸
💻 ASM
📖 第 1 页 / 共 5 页
字号:
                  JNC	Q0505
                  INC	DPH
Q0505:            MOVX	A,@DPTR
                  MOV	2FH,A
                  SETB	27H.5
                  RET
;==========================================================
Q050B:
                  LCALL	Q075E
                  ACALL QGET_BYTE
                  MOV	R5,A
                  LCALL	Q14BB
                  ORL	P1,#FFH
                  RET
;==========================================================                  
Q0518:            MOV	R0,#20H
                  MOV	DPTR,#04C9H
Q051D:            MOVX	A,@DPTR
                  JZ	Q0524
                  INC	DPTR
                  INC	DPTR
                  DJNZ	R0,Q051D
Q0524:            MOV	A,#20H
                  CLR	C
                  SUBB	A,R0
                  CJNE	A,#20H,Q0534
                  CLR	A
                  MOV	DPTR,#04C9H
                  MOVX	@DPTR,A
                  INC	DPTR
                  MOVX	@DPTR,A
                  SJMP	Q0518
Q0534:            JZ	Q0538
                  SETB	PSW.5
Q0538:            MOV	R3,A
                  ACALL QGET_BYTE
                  JZ	Q058E
                  MOV	R1,A
                  XRL	A,#0DH
                  JNZ	Q0556
                  ACALL GET_BYTE_TO_R0
                  XRL	A,#0AH
                  JZ	Q058E
                  CLR	PSW.5
                  MOV	A,11H
                  XRL	A,#03H
                  JZ	Q0553
                  LJMP	Q018A
Q0553:            LJMP	Q00F0
Q0556:            ACALL QGET_BYTE
                  MOV	R2,A
                  MOV	C,PSW.5
                  CLR	PSW.5
                  MOV	DPTR,#04C9H
                  JC	Q0569
                  MOV	A,R1
                  MOVX	@DPTR,A
                  INC	DPTR
                  MOV	A,R2
                  MOVX	@DPTR,A
                  SJMP	Q0518
Q0569:            INC	DPTR
                  MOVX	A,@DPTR
                  XRL	A,R2
                  JNZ	Q0584
                  MOV	A,DPL
                  DEC	A
                  JNC	Q057E
                  CLR	A
                  CPL	A
                  MOV	DPL,A
                  MOV	A,DPH
                  DEC	A
                  MOV	DPH,A
                  SJMP	Q0580
Q057E:            MOV	DPL,A
Q0580:            MOV	A,R1
                  MOVX	@DPTR,A
                  SJMP	Q0518
Q0584:            INC	DPTR
                  DJNZ	R3,Q0569
                  MOV	A,R1
                  MOVX	@DPTR,A
                  INC	DPTR
                  MOV	A,R2
                  MOVX	@DPTR,A
                  SJMP	Q0518
Q058E:            CLR	PSW.5
                  RET
;=================================================
Q0591:            MOV	DPTR,#04C9H
                  MOV	R0,#41H
                  LJMP  CLR_RAM
;=================================================
Q0599:
                  MOV	DPTR,#02CFH
                  ACALL GET_BYTE_TO_R0
                  CJNE	R0,#00H,Q05A3
                  SJMP	Q05D9
Q05A3:            ACALL	Q05DC
                  MOV	DPTR,#02CFH
;======================================================
Q05A8:            CJNE	R7,#00H,Q05BD
                  PUSH	ACC
                  PUSH	DPL
                  PUSH	DPH
                  LCALL	Q075E
                  ORL	P1,#FFH
                  POP	DPH
                  POP	DPL
                  POP	ACC

Q05BD:            ACALL GET_CHAR_WIDTH
                  MOV	R3,A
                  MOVX	A,@DPTR
                  MOV	R1,A
                  MOV	A,R6
                  MOV	R0,A
                  INC	DPTR
                  MOV	P2,#00H
Q05C8:            MOV	A,R3
                  MOV	R2,A
                  MOVX	A,@DPTR
Q05CB:            LCALL PUT_A_TO_@R0
                  INC	R0
                  INC	R6
                  DJNZ	R7,Q05D4
                  SJMP	Q05D9
Q05D4:            DJNZ	R2,Q05CB
                  INC	DPTR
                  DJNZ	R1,Q05C8
Q05D9:            RET
;=====================================================
Q05DA:
                  SJMP	Q05A8
Q05DC:            MOV	R1,#00H
                  CLR	C
                  SUBB	A,15H
                  JZ	Q05E8
                  JC	Q05E8
                  MOV	R1,A
                  MOV	R0,15H
Q05E8:            MOV	A,R0
                  MOVX	@DPTR,A
                  INC	DPTR
Q05EB:            ACALL QGET_BYTE
                  ACALL	Q05FB
                  MOVX	@DPTR,A
                  INC	DPTR
                  DJNZ	R0,Q05EB
                  MOV	A,R1
                  JZ	Q05FA
Q05F6:            ACALL QGET_BYTE
                  DJNZ	R1,Q05F6
Q05FA:            RET
;============================================================
;点阵空间变换
Q05FB:            PUSH	ACC
                  MOV	A,11H
                  XRL	A,#03H
                  JZ    Q0606             ;40字符行不用变换
                  CLR	C
                  SJMP	Q0607
Q0606:            SETB	C
Q0607:            POP	ACC
                  JC	Q061F
                  PUSH  01H             ;<40字符行,高低位须序颠倒
                  PUSH	02H
                  MOV	R2,#08H
Q0611:            RRC	A
                  XCH	A,R1
                  MOV	ACC.0,C
                  RL	A
                  XCH	A,R1
                  DJNZ	R2,Q0611
                  MOV	A,R1
                  RR	A
                  POP	02H
                  POP	01H
Q061F:            RET
;=========================================================
GET_CHAR_WIDTH:            JNB   25H.6,Q0627
                  MOV	A,#02H
                  SJMP	Q062E
Q0627:            MOV	A,1FH
                  CJNE	A,#01H,Q062E
                  MOV	A,1DH
Q062E:            RET
;=========================================================
USER_DEF_CHAR:            MOV   A,1AH
                  MOV	R3,A
                  ACALL GET_BYTE_TO_R0
                  MOV	DPTR,#03CCH
                  MOV	A,#20H
                  XRL	A,R3
                  JZ	Q065C
                  MOV	A,#20H
                  CLR	C
                  SUBB	A,R3
                  MOV	R1,A
Q0641:            MOV	R2,#07H
                  MOVX	A,@DPTR
                  XRL	A,R0
                  JZ	Q064E
Q0647:            INC	DPTR
                  DJNZ	R2,Q0647
                  DJNZ	R1,Q0641
                  SJMP	Q065C
Q064E:            INC	DPTR
                  DEC	R2
                  SETB  PSW.5           ;有相同
Q0652:            ACALL QGET_BYTE
                  ACALL	Q05FB
                  MOVX	@DPTR,A
                  INC	DPTR
                  DJNZ	R2,Q0652
                  SJMP	Q0663
Q065C:            MOV	A,R0
                  MOVX	@DPTR,A
                  INC	DPTR
                  MOV	R2,#06H
                  SJMP	Q0652
Q0663:            MOV	A,1AH
                  MOV	C,PSW.5
                  CLR	PSW.5
                  JC	Q0672
                  DEC	A
                  JNZ	Q0670
                  MOV	A,#20H
Q0670:            MOV	1AH,A
Q0672:            RET
;==============================================
QGET_BYTE:        PUSH  DPH
                  PUSH	DPL
                  LCALL SET_P1
                  SETB	25H.1
                  SETB  RS0
Q067E:            LCALL	Q150D
                  MOV	DPTR,#060AH
                  MOV	A,DPL
                  MOV	R0,#FFH
                  XCH	A,R0
                  CLR	C
                  SUBB	A,R0
                  XRL	A,R6
                  JNZ	Q0696
                  MOV	A,DPH
                  LCALL	Q128B
                  XRL	A,R7
                  JZ	Q067E
Q0696:            MOV	A,R3
                  ANL	A,#7FH
                  MOV	DPH,A
                  MOV	A,R2
                  MOV	DPL,A
                  MOVX	A,@DPTR
                  MOV	R0,A
                  CLR	IE.7
                                ;缓冲区长度加一
                  MOV	A,R6
                  ADD	A,#01H
                  JNC	Q06AC
                  MOV	R6,#00H
                  INC	R7
                  SJMP	Q06AD
Q06AC:            INC	R6
                                           ;读地址加一
Q06AD:            CJNE	R2,#FFH,Q06C3
                  MOV	R2,#00H
                  INC	R3
                  MOV	A,12H
                  XRL	A,R3
                  JNZ	Q06C4
                  MOV	DPTR,#060AH
                  MOV	A,DPH
                  MOV	R3,A
                  MOV	A,DPL
                  MOV	R2,A
                  SJMP	Q06C4
Q06C3:            INC	R2

Q06C4:            CJNE	R7,#00H,Q06D0
                  MOV	A,R6
                  CLR	C
                  SUBB	A,#30H
                  JC	Q06D0
                  LCALL	Q11C9
Q06D0:            JB    LF,Q06D5
                  SJMP	Q06E7
Q06D5:            PUSH	PSW
                  JB	25H.2,Q06DE
                  POP	PSW
                  SJMP	Q06E7
Q06DE:            POP	PSW
                  JC	Q06E9
                  CLR	25H.2
                  LCALL	Q10D5
Q06E7:            SETB	IE.7
Q06E9:            MOV	A,R0
                  PUSH	ACC
                  CLR	25H.1
                  POP	ACC
                  CLR   RS0
                  POP	DPL
                  POP	DPH
                  LCALL SET_P1
                  RET
;=======================================
;从缓冲区读一字节到R0中
GET_BYTE_TO_R0:            ACALL QGET_BYTE
                  MOV	R0,A
                  RET
;=======================================
Q06FE:            MOV	A,1CH
                  JZ	Q0707
                  ACALL CHAR_W_H_TO_R2_R1
                  LCALL	Q09BB
Q0707:            RET
;=======================================
CHAR_W_H_TO_R2_R1:            MOV   A,1FH
                  MOV	R1,A
                  MOV	R2,A
                  CJNE	A,#01H,Q0715
                  MOV	A,1DH
                  MOV	R2,A
                  MOV	A,1EH
                  MOV	R1,A
Q0715:            JNB	25H.6,Q071A
                  MOV	R2,#02H
Q071A:            RET
;========================================
Q071B:            MOV	A,R0
                  JZ	Q0727
Q071E:            PUSH	00H
                  LCALL	Q072B
                  POP	00H
                  DJNZ	R0,Q071E
Q0727:            ORL	P1,#FFH
                  RET
;====================================================
Q072B:            MOV	A,R6
                  JZ	Q074D
                  LCALL	Q099F
                  MOV	A,R6
                  INC	A
                  MOV	3CH,A
                  MOV	A,1FH
                  MOV	R1,A
                  MOV	R2,A
                  CJNE	A,#01H,Q0740
                  MOV	A,1EH
                  MOV	R2,A
                  MOV	R1,A
Q0740:            MOV	A,16H
                  MOV	R3,A
                  LCALL PRINT_CHAR_LINE
Q0746:            LCALL	Q150D
                  LCALL	Q06FE
                  RET
;====================================================
Q074D:            MOV	A,1FH
                  MOV	R2,A
                  CJNE	A,#01H,Q0755
                  MOV	R2,1EH
Q0755:            MOV	R5,#08H
                  LCALL	Q14BB
                  DJNZ	R2,Q0755
                  SJMP	Q0746
;=============================================
Q075E:            MOV	2EH,#00H
                  LCALL	Q072B
Q0764:            MOV	A,1BH
                  MOV	R0,A
                  MOV	A,20H
                  MOV	R1,A
                  MOV	A,R0
                  CLR	C
                  SUBB	A,R1
                  JNZ	Q0779
                  MOV	A,3AH
                  MOV	R0,A
                  LCALL	Q071B
                  CLR	A
                  MOV	R1,A
                  MOV	A,1BH
Q0779:            MOV	R0,A
                  INC	R1
                  MOV	A,R1
                  MOV	20H,A
                  JNB	26H.0,Q0787
                  CLR	26H.0
                  SETB	24H.5
                  SJMP	Q078E
Q0787:            JNB	26H.1,Q078E
                  CLR	26H.1
                  CLR	24H.5
Q078E:            MOV	A,R0
                  LCALL SET_P1
                  RET
;==========================================================
;打印多点行,R3保存点行数
;R1保存字符高度倍数

PRINT_CHAR_LINE:  SETB  P3.3
                  SETB	P3.4
                  MOV	R5,#80H
                  JNB	24H.5,Q07A3
                  MOV	R5,#01H
                  JNB	27H.3,Q07A3
                  MOV	R5,#20H
Q07A3:            LCALL	Q07CB
                  MOV	A,R1
                  MOV	R2,A
                  MOV	A,R5
                  JNB	24H.5,Q07AF
                  RL	A
                  SJMP	Q07B0
Q07AF:            RR	A
Q07B0:            MOV	R5,A
                  DJNZ	R3,Q07A3
                  ORL	P1,#FEH
                  LCALL	Q1208
                  RET
;========================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -