📄 knife.asm
字号:
LJMP NO_BUTTON
Y0EQ_H: CLR A
INC DPTR
MOVC A,@A+DPTR
CJNE A,RXDATA+05H,Y0NEQ_L
LJMP COMP_DOWNRIGHT
Y0NEQ_L: JNC NEXT_Y0L
LJMP COMP_DOWNRIGHT
NEXT_Y0L:
INC DPTR
INC DPTR
INC DPTR
INC DPTR
LJMP NO_BUTTON
COMP_DOWNRIGHT: ;比较收到的坐标是否在对应按钮的左上
COMP_X1: CLR A
INC DPTR
MOVC A,@A+DPTR
CJNE A,RXDATA+02H,X1NEQ_H
JMP X1EQ_H
X1NEQ_H:
JC NEXT_X1H
INC DPTR
LJMP COMP_Y1
NEXT_X1H: INC DPTR
INC DPTR
INC DPTR
LJMP NO_BUTTON
X1EQ_H:
CLR A
INC DPTR
MOVC A,@A+DPTR
CJNE A,RXDATA+03H,X1NEQ_L
LCALL COMP_Y1
X1NEQ_L: JC NEXT_X1L
LCALL COMP_Y1
NEXT_X1L:
INC DPTR
INC DPTR
LJMP NO_BUTTON
COMP_Y1:
CLR A
INC DPTR
MOVC A,@A+DPTR
CJNE A,RXDATA+04H,Y1NEQ_H
LJMP Y1EQ_H
Y1NEQ_H: JC NEXT_Y1H
LJMP FIND_BUTTON
NEXT_Y1H: INC DPTR
LJMP NO_BUTTON
Y1EQ_H: CLR A
INC DPTR
MOVC A,@A+DPTR
CJNE A,RXDATA+05H,Y1NEQ_L
LJMP FIND_BUTTON
Y1NEQ_L: JC NO_BUTTON
LJMP FIND_BUTTON
NO_BUTTON: INC R0
CJNE R0,#0CH,NEXT_BUTTON ;11个按钮是否判断完毕,是则根据结果执行相应的动作,否则继续
LJMP EXIT_JUDGE
NEXT_BUTTON: LJMP COMP_UPLEFT
FIND_BUTTON: MOV SELECT,R0
EXIT_JUDGE: LCALL ACTION ;调用显示程序,根据SELECT的值判断显示内容
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ACTION: ;根据SELECT中的值判断是何按钮
MOV A,#1
POWERADD: CJNE A,SELECT,POWERSUB ;指令是1吗?是的话则将POWER值加1
MOV A,#09H
CJNE A,POWER,ADD1 ;POWER值是10吗,是则不变,否则加1
INC POWER ;等于9时则要显示3个字符
MOV R7,#1 ;发送100数值的百位
MOV R5,#10
LCALL GETDATA
LCALL TXDATA
MOV R7,#0 ;发送十位
MOV R5,#0
LCALL GETDATA
LCALL TXDATA
LJMP EXIT_ACTION
ADD1: JC EXIT_ADD1 ;大于9时啥也不干,小于9时加1
INC POWER ;POWER值加1
MOV R7,POWER
MOV R5,#0
LCALL GETDATA
LCALL TXDATA
EXIT_ADD1: LJMP EXIT_ACTION
POWERSUB: MOV A,#2
CJNE A,SELECT,PERFUSIONADD
MOV A,#0
CJNE A,PERFUSION,SUB2
LJMP EXIT_ACTION ;等于零时啥也不干,否则减1显示
SUB2: DEC POWER
MOV R7,POWER
MOV R5,#0
LCALL GETDATA
LCALL TXDATA
LJMP EXIT_ACTION
PERFUSIONADD: MOV A,#3
CJNE A,SELECT,PERFUSIONSUB
MOV A,#9
CJNE A,PERFUSION,ADD3
INC PERFUSION
MOV R7,#1 ;发送100数值的百位
MOV R5,#11
LCALL GETDATA
LCALL TXDATA
MOV R7,#0 ;发送十位
MOV R5,#2
LCALL GETDATA
LCALL TXDATA
LJMP EXIT_ACTION
ADD3: JC EXIT_ADD3
INC PERFUSION
MOV R7,PERFUSION
MOV R5,#2
LCALL GETDATA
LCALL TXDATA
EXIT_ADD3: LJMP EXIT_ACTION
PERFUSIONSUB: MOV A,#4
CJNE A,SELECT,PERFUSIONONOFF
MOV A,#0
CJNE A,PERFUSION,SUB4
LJMP EXIT_ACTION
SUB4: DEC PERFUSION
MOV R7,PERFUSION
MOV R5,#2
LCALL GETDATA
LCALL TXDATA
LJMP EXIT_ACTION
PERFUSIONONOFF:MOV A,#5
CJNE A,SELECT,SUCTIONADD
LJMP EXIT_ACTION
SUCTIONADD: MOV A,#6
CJNE A,SELECT,SUCTIONSUB
MOV A,#9
CJNE A,SUCTION,ADD6
INC SUCTION
MOV R7,#1
MOV R5,#12
LCALL GETDATA
LCALL TXDATA
LJMP EXIT_ACTION
ADD6: JC EXIT_ADD6
INC SUCTION
MOV R7,SUCTION
MOV R5,#4
LCALL GETDATA
LCALL TXDATA
EXIT_ADD6: LJMP EXIT_ACTION
SUCTIONSUB: MOV A,#7
CJNE A,SELECT,SUCTIONONOFF
MOV A,#0
CJNE A,SUCTION,SUB7
LJMP EXIT_ACTION
SUB7: DEC SUCTION
MOV R7,SUCTION
MOV R5,#4
LCALL GETDATA
LCALL TXDATA
LJMP EXIT_ACTION
SUCTIONONOFF: MOV A,#8
CJNE A,SELECT,RESET
LJMP EXIT_ACTION
RESET: MOV A,#9 ;复位工作时间
CJNE A,SELECT,SETFREQ
MOV TIMESECH,#0
MOV TIMESECL,#0
MOV TIMEMINH,#0
MOV TIMEMINL,#0
MOV R7,TIMEMINH
MOV R5,#6
LCALL GETDATA
LCALL TXDATA
LCALL DELAY
MOV R7,TIMEMINL
MOV R5,#7
LCALL GETDATA
LCALL TXDATA
LCALL DELAY
MOV R7,TIMESECH
MOV R5,#8
LCALL GETDATA
LCALL TXDATA
LCALL DELAY
MOV R7,TIMESECL
MOV R5,#9
LCALL GETDATA
LCALL TXDATA
LJMP EXIT_ACTION
SETFREQ: MOV A,#10
CJNE A,SELECT,HELP
LJMP EXIT_ACTION
HELP: MOV A,#11
CJNE A,SELECT,EXIT_ACTION
LJMP EXIT_ACTION ;暂时退出
EXIT_ACTION:
RET
DELAY: ;延时5毫秒
MOV R4,#50
DELAY0: MOV R5,#50
DELAY1: DJNZ R5,DELAY1
DJNZ R4,DELAY0
RET
lib1: DB 0AAH,71H,08H,00H,38H,00H,38H,00H,18H,00H,30H ;24*48 '0'
DB 0AAH,71H,08H,00H,50H,00H,38H,00H,18H,00H,30H ;'1'
DB 0AAH,71H,08H,00H,68H,00H,38H,00H,18H,00H,30H ;'2'
DB 0AAH,71H,08H,00H,80H,00H,38H,00H,18H,00H,30H ;'3'
DB 0AAH,71H,08H,00H,98H,00H,38H,00H,18H,00H,30H ;'4'
DB 0AAH,71H,08H,00H,0b0H,00H,38H,00H,18H,00H,30H ;'5'
DB 0AAH,71H,08H,00H,0c8H,00H,38H,00H,18H,00H,30H ;'6'
DB 0AAH,71H,08H,00H,0e0H,00H,38H,00H,18H,00H,30H ;'7'
DB 0AAH,71H,08H,00H,0f8H,00H,38H,00H,18H,00H,30H ;'8'
DB 0AAH,71H,08H,01H,10H,00H,38H,00H,18H,00H,30H ;'9'
DB 0AAH,71H,08H,00H,00H,00H,00H,00H,18H,00H,30H ;'空白位置添补百位'
DataPosition: DB 00H,74H,00H,8AH ;PowerDataH
DB 00H,8CH,00H,8AH ;PowerDataL
DB 00H,74H,01H,00H ;PerfusionDataH
DB 00H,8CH,01H,00H ;PerfusionDataL
DB 00H,74H,01H,78H ;SuctionDataH
DB 00H,8CH,01H,78H ;SuctionDataL
DB 01H,0E0H,01H,0B4H ;TimeMinH
DB 01H,0F8H,01H,0B4H ;TimeMinL
DB 02H,2EH,01H,0B4H ;TimeSecH
DB 02H,46H,01H,0B4H ;TimeSecL
DB 00H,5CH,00H,8AH ;PowerDataH=10
DB 00H,5CH,01H,00H ;PerfusionDataH=10
DB 00H,5CH,01H,78H ;SuctionD
BUTTON: DB 00H,0F8H,00H,5AH,01H,35H,00H,8AH ;PowerAdd
DB 00H,0F8H,00H,99H,01H,35H,00H,0C9H ;PowerSub
DB 00H,0F8H,00H,0D2H,01H,35H,01H,02H ;PerfusionAdd
DB 00H,0F8H,01H,11H,01H,35H,01H,41H ;PerfusionSub
DB 00H,0FH,01H,00H,00H,40H,01H,30H ;PerfusionOnoff
DB 00H,0F8H,01H,52H,01H,35H,01H,82H ;SuctionAdd
DB 00H,0F8H,01H,8AH,01H,35H,01H,0BAH ;SuctionSub
DB 00H,0FH,01H,7CH,00H,40H,01H,0ACH ;SuctionOnoff
DB 01H,0A7H,00H,58H,02H,3EH,00H,94H ;Reset
DB 01H,0A7H,00H,0ABH,02H,3EH,00H,0E7H ;SetFreq
DB 01H,0A7H,01H,00H,02H,3EH,01H,3CH ;Help
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -