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

📄 main3.asm

📁 (1)完成键盘
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;@@@@@@@@@@@@@@@@@@@@@___MAIN____@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
MAIN:
;*******************PASSWORD NUMBER*************************
                   NUM1 EQU  1
                   NUM2 EQU  1
                   NUM3 EQU  1
                   NUM4 EQU  1
                   NUM5 EQU  1
                   NUM6 EQU  1
                   LED1 EQU 30H
                   LED2 EQU 31H
                   LED3 EQU 32H
                   LED4 EQU 33H
                   LED5 EQU 34H
                   KEYTEST EQU 35H
                   GROUPLINSHI  EQU 36H
                   BAOYUANZHI   EQU 37H
                   KEYTESTNO EQU  38H
                   ;STOREDATA:40H~~~ 70H
                   MOV SP,#71H
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
START:             LCALL   L_TESTKEY
                   MOV     R4,A
                   ANL     A,#0FH
                   CJNE    A,#0FH,USER
;*******************ZJ  CALL PROGRAM***********************
                   MOV     A,R4
                   ANL     A,#0F0H
                   CPL     A
                   JNB      ACC.3,ZJ0
                   AJMP    START
 ZJ0:              CJNE   A,#01H,ZJ1
                   LCALL  L_LEDTEST
                   AJMP   START
 ZJ1:              CJNE   A,#02H,ZJ2
                   LCALL  L_BEEPTEST
                   AJMP   START
 ZJ2:              CJNE   A,#03H,ZJ3
                   LCALL  L_KEYTEST
                   AJMP   START
 ZJ3:              CJNE   A,#04H,ZJ4
                   LCALL  L_ADTEST
                   AJMP   START
 ZJ4:              CJNE   A,#05H,ZJ5
                   LCALL  L_WDOGTEST
                   AJMP   START
 ZJ5:              MOV  R5,#0FFH
                   LCALL  L_PLAYERRO
                   DJNZ  R5,ZJ5
                   AJMP START
;*******************ZJ  CALL PROGRAM  END***********************


;*******************USER PROGRAM***********************
USER:
;********************INPUT PASSWORD************************
USER1:
                   LCALL  KEY_TEST1
                   CJNE  A,#NUM1,INPUTERROR
                   LCALL  KEY_TEST1
                   CJNE  A,#NUM2,INPUTERROR
                   LCALL  KEY_TEST1
                   CJNE  A,#NUM3,INPUTERROR
                   LCALL  KEY_TEST1
                   CJNE  A,#NUM4,INPUTERROR
                   LCALL  KEY_TEST1
                   CJNE  A,#NUM5,INPUTERROR
                   LCALL  KEY_TEST1
                   CJNE  A,#NUM6,INPUTERROR
                   AJMP  USER2
INPUTERROR:        MOV R4,#0FFH
                   LCALL   L_PLAYERRO
                   DJNZ R4, INPUTERROR
                   AJMP  START
;********************INPUT SET KEK MODE***********************
ZZSETKEY:          AJMP    SETKEY
USER2:             LCALL  KEY_TEST2
                   CJNE  A,#1H,ZZSETKEY    ;SET MODE
;************************STORE DATA****************************
STORE:             LCALL  KEY_TEST2     ;CHARGE LED 
                   CJNE  A,#3H,ZHONGZHUAN_TAKE
UPKEY:             LCALL  KEY_TEST1
                   CJNE  A,#4H,STORE   ;KEY4 TOCONTINUE
                   MOV  LED1,#0
                   MOV  LED2,#07EH
                   MOV  LED3,#07EH
                   MOV  LED4,#07EH
                   MOV  LED5,#07EH
                   MOV  R0,#LED5
UPKEY3:            MOV  R4,#0
                   MOV  R3,#0AH
UPKEY1:            LCALL KEY_TEST0
                  ; CJNE A,#2H,UPKEY4
                  ; INC  @R0
                  ; AJMP  UPKEY1
UPKEY4:            CJNE A,#4H,UPKEY2
                   INC  R4
                   MOV  A,R4
                   MOV  DPTR,#L_TAB
                   MOVC A,@A+DPTR
                   MOV   @R0,A
                   DJNZ R3,UPKEY1
                   AJMP  UPKEY3
ZHONGZHUAN_TAKE:   AJMP  TAKE
UPKEY2:            CJNE A,#2H,UPUP
                   AJMP  UPKEY
UPUP:              CJNE A,#1,UPKEY1    ;CAN INSTAND OF LEFT KEY
;------------------STORE GROUP AND DATA----------------------------
GROUP:             MOV  36H,R4
UPKEYA:            LCALL  KEY_TEST1
                   CJNE  A,#4H,UPKEYA
                   MOV  LED1,#0
                   MOV  LED2,#07EH
                   MOV  LED3,#07EH
                   MOV  LED4,#07EH
                   MOV  LED5,#07EH
                   MOV  R0,#LED5

UPKEYA3:           MOV  R3,#0AH
                   MOV  R4,#0
UPKEYA1:           LCALL KEY_TEST0
                   CJNE A,#2H,UPKEYA4
                   INC  @R0
                   AJMP  UPKEYA1
UPKEYA4:           CJNE A,#4H,UPKEYA2
                   MOV R2,#1H
                   AJMP  BAOZHI
GUOSHU:            MOV R4,#0H
                   DJNZ R2,POLI
BAOZHI:            MOV  A,R4          ;
                   SUBB A,#0AH        ;
                   JNC  GUOSHU        ;  YIWEI HOU CAI JUMP
                   MOV  A,R4          ;
                   MOV  DPTR ,#L_TAB   ;
                   MOVC  A,@A+DPTR     ;
                   MOV   37H,@R0       ;
                   INC   R4            ;
                   CJNE  A,37H,BAOZHI
PILIKOU:           MOV  A,R4         ;
                   MOV  DPTR,#L_TAB  ;hai ke yi baoliu yuan zhi
                   MOVC A,@A+DPTR    ;danxuyao zenjian chengxu
                   MOV   @R0,A       ;
                   DJNZ R3,UPKEYA1
                   AJMP  UPKEYA3
POLI:              INC  R4
                   AJMP PILIKOU
UPKEYA2:           CJNE A,#1,LEFTKEY  ;
                   MOV A,36H          ;
                   MOV B,#5H          ;
                   MUL AB             ;
                   ADD A,#40H         ;STORE DATA
                   MOV R1,#30H        ;
                   MOV R0,A           ;
                   MOV R2,#5H         ;
STOREDATA:         MOV A,@R1          ;
                   MOV @R0,A          ;
                   INC R1             ;
                   INC R0             ;
                   DJNZ R2,STOREDATA  ;
                   AJMP UPKEY
;---------------------LEFTKEY---------------------------------
LEFTKEY:           CJNE  A,#3H,UPKEYA1
                   DEC   R0
                   MOV   A,R0
                   SUBB  A,#31H
                   JC    LEFTROL
                   AJMP  UPKEYA1
LEFTROL:           MOV   A,R0
                   SUBB  A,#2FH
                   JNC   CHULILED1
                   MOV   R0, #34H
                   AJMP  UPKEYA1
CHULILED1:
CHULI1:            LCALL KEY_TEST0       ;
                   CJNE A,#2H,CHULI4     ;
                   INC  @R0              ;
                   AJMP  CHULI1          ;
CHULI4:            CJNE A,#4H,UPKEYA2    ;
                   MOV  A,R4             ; LED1 PLAY CHULI
                   SUBB A,#4H            ;
                   JNC   CLRR4            ;
                   INC  R4               ;
CLRR4F:            MOV  A,R4             ;
                   MOV  DPTR,#L_LED1B    ;
                   MOVC A,@A+DPTR        ;
                   MOV  @R0,A            ;
                   AJMP  CHULI1          ;
CLRR4:             MOV R4,#0H            ;
                   AJMP   CLRR4F         ;
;--------------------------------------------------------------
L_LED1B: DB 0H,0CH,8CH,80H
;*************************STORE  DATA END***********************
;*************************TAKEMOVE DATA*************************
ZZSTORE:           AJMP  STORE
RFF:               CJNE  A,#2H,ZZSTORE
                   AJMP  USER2
TAKE:              CJNE  A,#4H,RFF
TAKEA:             LCALL  KEY_TEST1
                   CJNE  A,#4H,ZZSTORE   ;KEY4 TOCONTINUE
                   MOV  LED1,#0
                   MOV  LED2,#07EH
                   MOV  LED3,#07EH
                   MOV  LED4,#07EH
                   MOV  LED5,#07EH
                   MOV  R0,#LED5
TAKE3:             MOV  R4,#0
                   MOV  R3,#0AH
TAKE1:             LCALL KEY_TEST0
                   CJNE A,#4H,TAKE2
                   INC  R4
                   MOV  A,R4
                   MOV  DPTR,#L_TAB
                   MOVC A,@A+DPTR
                   MOV   @R0,A
                   DJNZ R3,TAKE1
                   AJMP  TAKE3
TAKE2:             CJNE A,#2H,TATA
                   AJMP  TAKEA
TATA:              CJNE A,#1,TAKE1
;-------------------------------------------------------------
                   MOV A,R4           ;
                   MOV B,#5H          ;
                   MUL AB             ;
                   ADD A,#40H         ;TAKE DATA
                   MOV R1,#30H        ;
                   MOV R0,A           ;
                   MOV R2,#5H         ;
TAKEDATA:          MOV A,@R0          ;
                   MOV @R1,A          ;
                   INC R1             ;
                   INC R0             ;
                   DJNZ R2,TAKEDATA   ;
TAKETEST:          LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,#0FFH,TAKEOVER
                   LCALL   L_PLAY5LED
                   AJMP    TAKETEST
TAKEOVER:          MOV     R5,#5H
                   MOV     35H,A
TAKEOVER1:         LCALL   L_DELAY2MS
                   DJNZ    R5,TAKEOVER1
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,35H,TAKETEST
                   LCALL   NOKEY0A
                   AJMP     TAKE1
;*************************TAKE DTAT OVER**************************
;**************************SET PASSWORD*************************
SETKEY:            CJNE  A,#3H,RETURN













;***************************************************************
RETURN:            CJNE  A,#2H,RETURNA
                   AJMP  START
RETURNA:           AJMP USER2
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;************************L_TESTKEY  PLAY ---**************888
L_TESTKEY:         LCALL  SEL8
                   MOV    A,P1
                   CJNE   A,#0FFH,LKEY_TEST0
                   LCALL   L_PLAY5__
                   AJMP    L_TESTKEY
LKEY_TEST0:        MOV     R5,#5H
                   MOV     35H,A
LKEY_TEST1:        LCALL   L_DELAY2MS
                   DJNZ    R5,LKEY_TEST1
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,35H,L_TESTKEY
                   RET
;***********************L_TESTKEY   END**************88
 ;************************L_TESTKEY0  PLAY **************888
L_TESTKEY0:        MOV B,@R0
L_TESTKEYD:        MOV @R0,B
                   SETB RS1
                   SETB RS0
                   MOV R1,#5H
L_TESTKEYC:        MOV R2,#0FFH
L_TESTKEYB:        MOV R3,#0FFH
L_TESTKEYA:        LCALL  SEL8
                   MOV    A,P1
                   CJNE   A,#0FFH,LKEY_TEST00
                   LCALL   L_PLAY5LED
                   DJNZ   R3,L_TESTKEYA
                   DJNZ   R2,L_TESTKEYB
                   DJNZ   R1,L_TESTKEYC
                   CLR RS1
                   CLR RS0
                   MOV @R0,#0H
                   SETB RS1
                   SETB RS0
                   MOV R1,#5H
L_TESTKEYC1:       MOV R2,#0FFH
L_TESTKEYB1:       MOV R3,#0FFH
L_TESTKEYA1:       LCALL  SEL8
                   MOV    A,P1
                   CJNE   A,#0FFH,LKEY_TEST00
                   LCALL   L_PLAY5LED
                   DJNZ   R3,L_TESTKEYA1
                   DJNZ   R2,L_TESTKEYB1
                   DJNZ   R1,L_TESTKEYC1
                   CLR RS1
                   CLR RS0
                   AJMP    L_TESTKEYD
LKEY_TEST00:        CLR RS1
                    CLR RS0
                    MOV     R5,#5H
                    MOV     @R0,B
                    MOV    35H,A
LKEY_TEST01:        LCALL   L_DELAY2MS
                   DJNZ    R5,LKEY_TEST01
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,35H,L_TESTKEYD
NOKEY0A:           LCALL   SEL8
NOKEY0:            MOV     A,P1
                   LCALL   L_PLAY5LED
                   CJNE    A,#0FFH,NOKEY0A
                   MOV     R5,#5H
NOKEY0B:           LCALL   L_DELAY2MS
                   DJNZ    R5,NOKEY0B
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,#0FFH,NOKEY0A
                   MOV  A,35H
                   RET
;***********************L_TESTKEY0 END**************88
;************************L_TESTKEY1  PLAY INPUT**************888
L_TESTKEY1:        LCALL  SEL8
                   MOV    A,P1
                   CJNE   A,#0FFH,LKEY_TEST10

⌨️ 快捷键说明

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