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

📄 knife.asm

📁 在项目超生刀产品中
💻 ASM
📖 第 1 页 / 共 2 页
字号:
               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 + -