📄 ltp1245.a51
字号:
LJMP MAINP_5
ORDNNOP6:
MOV ORDBUFPIN, #00H
MOV ORDFLAG, #0FFH ;为0表示完成,FF表示末完成,其它表示命令串指针
LJMP MAINP_5
ORDNOP:
MOV A, R7
JNZ ORDNOP1 ;?? ADD ONE
MOV R7, #20H
SJMP ORDNOP2
ORDNOP1:
SUBB A, #20H
JC ITSORD ;判是否命令
ORDNOP2:
MOV DPTR, #PRTTEMPBUF ;打印暂存缓冲区 32个字节 (20H)
MOV A, PRTTEMPBUFP ;打印暂存缓冲区指针
CLR C
SUBB A, #PRTTEMPBUFLONG
JC ITSDATA
LJMP MAINP_5
ITSDATA:
MOV A, PRTTEMPBUFP ;打印暂存缓冲区指针
LCALL DPADDA
MOV A, R7
MOVX @DPTR, A
INC PRTTEMPBUFP
LJMP MAINP_5
ITSORD:
MOV R6, #00H
ITSORD0:
MOV A, R6 ;??
INC R6
INC R6
INC R6
MOV DPTR, #ORDTAB1 ;相对应的命令处理入口表
MOVC A, @A+DPTR
CJNE A, #0FFH, ITSORD4
MOV R7, #20H
SJMP ORDNOP2 ;??
ITSORD4:
CJNE A, 7, ITSORD0
MOV DPTR, #ORDBUF ;是命令
MOV A, R7
MOVX @DPTR, A
CJNE A, #0DH, ITSORD1
SJMP ITSORD3
ITSORD1:
CJNE A, #0AH, ITSORD2
ITSORD3:
MOV ORDFLAG, #0FFH ;为0表示完成,FF表示末完成,其它表示命令串指针
LJMP MAINP_5
ITSORD2:
MOV ORDFLAG, #01H ;为0表示完成,FF表示末完成,其它表示命令串指针
LJMP MAINP_5
COMNNOP1:
MOV DPTR, #DEFHZBUF ;32*72=2304(900H);自定义汉字通讯缓冲区
MOV A, DEFBUFPWH
CJNE A, #90H, COMDOT0 ;?+
SJMP COMNNOP2
COMDOT0:
MOV A, DEFBUFPWL
ADD A, DPL
MOV DPL, A
MOV A, DEFBUFPWH
ADDC A, DPH
MOV DPH, A
MOV A, R7
MOVX @DPTR, A
MOV DPL, DEFBUFPWL
MOV DPH, DEFBUFPWH
INC DPTR
MOV DEFBUFPWL, DPL
MOV DEFBUFPWH, DPH
COMNNOP2:
DEC DOTTRAC ;点阵传送计数
MOV A, DOTTRAC
CJNE A, #00H, COMNNOP3
MOV DOTTRAFLAG, #00H
COMNNOP3:
LJMP MAINP_5
ORDNNOP:
MOV DPTR, #ORDBUF
INC DPTR
MOV A, R7
MOVX @DPTR, A
MOV DPTR, #ORDBUF
MOVX A, @DPTR
CJNE A, #1BH, ORDNNOP2
MOV A, R7
CJNE A, #40H, ORDNNOP3
LJMP ORDNNOP2
ORDNNOP3:
CJNE A, #2AH, ORDNNOP4 ;图形点阵传送 1B 2A N1(高) N2(宽)
MOV REMAINLONG, #02H
LJMP ORDNNOP5
ORDNNOP4:
MOV REMAINLONG, #01H
ORDNNOP5:
MOV ORDFLAG, #02H
LJMP MAINP_5
ORDNNOP2:
MOV ORDFLAG, #0FFH ;为0表示完成,FF表示末完成,其它表示命令串指针
LJMP MAINP_5
POWEROFF:
LJMP MAINP_2
;*************************************************************
;中断程序
;*************************************************************
;外部0中断 ;纸测试,电平触发
INTSE:
CLR RI ; 串口0中断
CLR TI
RETI
;T0中断 ;加热时间控制
INTT0:
PUSH DPL
PUSH DPH
PUSH ACC
PUSH PSW
PUSH 0
CLR TR0
MOV DPTR, #DRVDST ;0C002H 打印驱动地址
MOV DRVDST_U9, #00H
MOV A, DRVDST_U9
MOVX @DPTR, A ;关加热
MOV A, HOTCT ;加热次数计数器
JZ INTT0_1
MOV R0, ADDSA ;加热地址中间寄存器
LCALL HOTDO ;取下一区加热的时间控制长度
MOV ADDSA, R0
DEC HOTCT
SJMP OVER2
INTT0_1:
JB CHOOSE, INTT0_2 ;步进判断标志
PUSH 2
MOV DSTC2, HPPIN2 ;第二区加热次数计数器
MOV R2, #18
MOV R0, #HPARBUF1 ;加热参数缓冲区长度18个字节
MOV DPTR, #HPBUF1
LCALL DPX_XR0 ;外部RAM-->外部RAM R2( @DPTR-->@R0 )
POP 2
SETB P1.4 ;加热头数据锁存
CLR P1.4
NOP
SETB P1.4
INTT0_2:
CLR DSTOVER ;加热结束
JNB INTOUT, OVER2
CLR INTOUT
SETB TF1 ;置T1溢出标志
OVER2:
POP 0
POP PSW
POP ACC
POP DPH
POP DPL
RETI
;T1中断 ;步长控制
OPENINT1:
RETI
INTT1:
PUSH DPL
PUSH DPH
PUSH ACC
PUSH PSW
CLR TR1
SET3:
JNB DSTOVER, SET1 ;加热结束
SETB INTOUT
SJMP INT1RET
SET1:
JB PRTING, SET4 ;打印完关定时器
CLR TR1
CLR INTT1FLAG
SJMP INT1RET
SET4:
SETB P1.6 ;BUSY
MOV 56H, 50H
MOV 57H, 51H
MOV 58H, 52H
MOV 59H, 53H
MOV 5AH, 54H
MOV 5BH, 55H
PUSH 7
PUSH 6
PUSH 5
PUSH 4
PUSH 3
PUSH 2
PUSH 1
PUSH 0
PUSH 0F0H
LCALL DRIVPRT ;驱动打印
POP 0F0H
POP 0
POP 1
POP 2
POP 3
POP 4
POP 5
POP 6
POP 7
MOV 50H, 56H
MOV 51H, 57H
MOV 52H, 58H
MOV 53H, 59H
MOV 54H, 5AH
MOV 55H, 5BH
CLR P1.6
SETB EX1
INT1RET:
POP PSW
POP ACC
POP DPH
POP DPL
RETI
;T2中断
INTT2:
CLR TF2 ;T2溢出标志
PUSH ACC
PUSH DPH
PUSH DPL
PUSH PSW
CLR TR2
JNB HARDFLAG, INTT2_0
INC WINDC
MOV A, WINDC
CJNE A, #10, INT220
INT220:
JC INTT2_0
MOV WINDC, #00H
MOV DPTR, #DRVDST ;0C002H 打印驱动地址
CLR A
MOVX @DPTR, A ;关加热
INTT2_0:
JNB T1OVER, INTT2_1 ;步进电机大电流驱动完标志
CLR EEA ;马达
CLR EB ;驱动电流
MOV DPTR, #WMC ;0C003H 马达,及卷纸控制驱动地址
MOV A, WMC_U2 ;相位PA PB PA_ PB_ 马达EEA, 驱动电流EB 及卷纸WIND 控制
MOVX @DPTR, A
CLR T1OVER
INTT2_1:
JNB WINDOVER, INTT2_3
INC WINDC
MOV A, WINDC
CJNE A, #WDTIME, INTT2_10 ;常数 15
INTT2_10:
JC INTT2_3
MOV WINDC, #00H
CLR WINDOVER
MOV DPTR, #WMC ;0C003H 马达,及卷纸控制驱动地址
CLR WIND ;卷纸
MOV A, WMC_U2 ;相位PA PB PA_ PB_ 马达EEA, 驱动电流EB 及卷纸WIND 控制
MOVX @DPTR, A
INTT2_3:
JNB RUNSTOPFLAG, INTT2_2 ;步进停止标志
INC RSTOPC
MOV A, RSTOPC
CJNE A, #SPTIME, STOP1 ;常数 40
STOP1:
JC INTT2_2
MOV RSTOPC,#00H
MOV A, WMC_U2 ;相位PA PB PA_ PB_ 马达EEA, 驱动电流EB 及卷纸WIND 控制
ORL A, #0FH
MOV DPTR, #WMC ;0C003H 马达,及卷纸控制驱动地址
MOV WMC_U2, A ;相位PA PB PA_ PB_ 马达EEA, 驱动电流EB 及卷纸WIND 控制
MOVX @DPTR, A
CLR RUNSTOPFLAG ;步进停止标志
MOV PHASE, PHMAINTAIN ;相位保存寄存器
MOV STEPLONGC, #00H ;步长计数器
INTT2_2:
MOV TH2, #0FAH
MOV TL2, #0CAH
SETB TR2
POP PSW
POP DPL
POP DPH
POP ACC
RETI
;并行口中断,外部中断1
INTEX1:
SETB EX1
CLR P1.6
INTEE1:
RETI
INTE1:
CLR EX1
SETB P1.6 ;置PBUSY信号
; NOP
; CLR P1.6
; NOP
; SETB P1.6
INTE10:
; JB P3.3, INTEX1 ;并口有数据输入 DZHB
; JB P3.3, INTEX1
; JB P3.3, INTEX1 ;检测是否干扰
JB QUEUEFULL, INTEX1
PUSH ACC
PUSH 0F0H
PUSH DPH
PUSH DPL
PUSH PSW
; JB P3.3, JMP_WAIT_DATA
; NOP
; NOP
; NOP
; NOP
; JB P3.3, JMP_WAIT_DATA
; NOP
; NOP
; NOP
; NOP
;JMP_WAIT_DATA:
MOV DPTR, #RPDB ;0C000H 并口地址(读)
MOVX A, @DPTR
; CPL A
MOV B, A
CLR P1.5 ;DZHB 01-8-21 21:47
PUSH 62H
PUSH 63H
PUSH 0
MOV DPTR, #COMBUF ;2K 通讯缓冲 1000H
MOV A, DPL
ADD A, COMBUFPEL ;通讯缓冲区尾指针
MOV DPL, A
MOV A, DPH
ADDC A, COMBUFPEH
MOV DPH, A
MOV A, B
MOVX @DPTR, A
CLR C ;DZHB 01-8-16 11:12
MOV A, COMBUFPEL
ADD A, #01H
MOV COMBUFPEL,A
MOV A, COMBUFPEH
ADDC A, #00H
MOV COMBUFPEH, A
MOV A, COMBUFPEH
SUBB A, #08H
JC INTE11
MOV COMBUFPEH, #00H
MOV COMBUFPEL, #00H
INTE11:
LCALL TESTCBUF
SETB P1.5
JNC INTE12
SETB QUEUEFULL ;打印队列满
CLR EX1
SJMP INTEX3
INTE12:
; NOP
; NOP
; NOP
; NOP
SETB P1.5
CLR P1.6
; NOP
; NOP
; NOP
; NOP
INTEX3:
POP 0
POP 63H
POP 62H
POP PSW
POP DPL
POP DPH
POP 0F0H
POP ACC
JB QUEUEFULL, INTRET ;打印队列满
SETB EX1
INTRET:
RETI
;*************************************************************
;子程序
;*************************************************************
;TPC 自检(R7为0->上电自检;R7不为0->命令自检,其中R7为命令参数表示对应自检项)
;返回值->R7
ZJTPC:
CJNE R7, #00, ZJTPC1 ;代码和自检
LCALL ZJROM
MOV A, R7
JNZ ZJRET
LCALL ZJZK
LCALL FINDVT ;打印电压,温度值
ZJRET:
RET
ZJTPC1:
CJNE R7, #01H, ZJTPC2 ;打印测试页
LJMP PTESTPAG
ZJTPC2:
CJNE R7, #02H, ZJTPC3 ;打印版本号
LJMP PEDITION
ZJTPC3:
LJMP PROMADD ;打印代码和
;求代码和 结果低位-->R1,高位-->R0
ZJROM:
MOV DPTR, #00H
MOV R0, #00H
MOV R1, #00H
MOV R2, #33H
CDMH1: LCALL ROMADD ;0000H-->0033H
DJNZ R2, CDMH1
MOV DPTR, #35H
ROMJC: LCALL ROMADD ;0035H-->2000H
MOV A, DPH
XRL A, #20H
JNZ ROMJC
MOV DPTR, #33H
MOV A, #00H
MOVC A, @A+DPTR
XRL A, R0
JNZ CODESUME
INC DPTR
MOVC A, @A+DPTR
XRL A, R1
JZ CODESUMY
CODESUME:
; SETB CODEERROR ;*DZHB 01-8-21 11:09
MOV R7, #00H ;#0FFH *01-8-21 10:02
ZJEND:
RET
CODESUMY:
MOV R7, #00H
SJMP ZJEND
ZJZK:
PUSH WPAGE_U7
MOV R0, #00H ;代码和高位
MOV R1, #00H ;代码和低位
CLR C
MOV A, WPAGE_U7 ;置0页
ANL A, #0E0H
MOV WPAGE_U7, A
ZJZK_2:
MOV A, WPAGE_U7
PUSH DPH
PUSH DPL
MOV DPTR, #WPAGE
MOVX @DPTR, A
POP DPL
POP DPH
MOV DPTR, #8000H
ZJZK_3:
MOVX A, @DPTR
ADD A, R1
MOV R1, A
CLR A
ADDC A, R0
MOV R0, A
INC DPTR
MOV A, DPL
CJNE A, #0FEH, ZJZK_3
MOV A, DPH
CJNE A, #0BFH, ZJZK_3
MOV A, WPAGE_U7
ANL A, #1FH
CJNE A, #1FH, ZJZK_4
SJMP ZJZK_5
ZJZK_4:
MOV R2, #02H
ZJZK_41:
MOVX A, @DPTR
ADD A, R1
MOV R1, A
CLR A
ADDC A, R0
MOV R0, A
INC DPTR
DJNZ R2, ZJZK_41
INC WPAGE_U7
SJMP ZJZK_2
ZJZK_5:
MOVX A, @DPTR
MOV R3, A ;高位
INC DPTR
MOVX A, @DPTR
MOV R4, A
POP WPAGE_U7
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -