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

📄 main.asm

📁 (1)完成键盘
💻 ASM
📖 第 1 页 / 共 3 页
字号:
;@@@@@@@@@@@@@@@@@@@@@___MAIN____@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
MAIN:            ORG   0
                 LJMP   MAIN_ST
                 ORG    03H
                 LJMP   PINT0
                 ORG 30H
;*************************************************************
                   NUM1 EQU  20H
                   NUM2 EQU  21H
                   NUM3 EQU  22H
                   NUM4 EQU  23H
                   NUM5 EQU  24H
                   NUM6 EQU  25H
                   LINSHI1   EQU    26H
                   LINSHI2   EQU    27H
                   LINSHI3   EQU    28H
                   LINSHI4   EQU    29H
                   LINSHI5   EQU    2AH
                   LINSHI6   EQU    2BH
                   LED1 EQU 30H
                   LED2 EQU 31H
                   LED3 EQU 32H
                   LED4 EQU 33H
                   LED5 EQU 34H
                   KEYTEST EQU 35H
                   GROUPLINSHI  EQU 36H
                   BAOYUANZHI   EQU 37H
                   ADH   EQU    38H
                   ADL   EQU    39H
                   TESTSD1 EQU  3AH
                   TESTSD2 EQU  3BH
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
MAIN_ST:
;------------------------------------------

                   MOV SP,#65H
                   LCALL READDATA
                   LCALL  TESTCSN
                   LCALL  L_W_SR
                   SETB   EA
;----------------------MAIN-----------------------------------
START:
                   LCALL   L_TESTKEY
                   MOV     R4,A
                   ANL     A,#0FH
                   CJNE    A,#0FH,USER
                   LCALL   ZJTEST
                   AJMP    START

;*******************ZJ  CALL PROGRAM**************************
 ZJTEST:           MOV     A,R4
                   CPL     A
                   ANL     A,#0F0H
                   SWAP    A
                   JNB      ACC.3,ZJ0
                   RET
 ZJ0:              CJNE   A,#01H,ZJ1
                   LCALL  L_LEDTEST
                   RET
 ZJ1:              CJNE   A,#02H,ZJ2
                   LCALL  L_BEEPTEST
                   RET
 ZJ2:              CJNE   A,#03H,ZJ3
                   LCALL  L_KEYTEST
                   RET
 ZJ3:              CJNE   A,#04H,ZJ4
                   LCALL  L_ADTEST
                   RET
 ZJ4:              CJNE   A,#05H,ZJ5
                   LCALL  L_WDOGTEST
                   RET
 ZJ5:              CJNE   A,#06H,ZJ6
                   LCALL  L_EXP1
                   RET
 ZJ6:              CJNE   A,#07H,ZJ7
                   LCALL  L_EXP2
                   RET
 ZJ7:              MOV  R5,#030H
 ZJ8:              LCALL  L_PLAYERRO
                   DJNZ  R5,ZJ8
                   RET
                   NOP
                   NOP
                   LJMP  L_EEROR
;*******************ZJ  CALL PROGRAM  END********************

;*******************USER PROGRAM*****************************
USER:
;********************INPUT PASSWORD**************************
USER1:
                   LCALL  KEY_TEST1
                   CJNE  A,NUM1,INPUTERROR
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE  A,NUM2,INPUTERROR
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE  A,NUM3,INPUTERROR
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE  A,NUM4,INPUTERROR
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE  A,NUM5,INPUTERROR
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE  A,NUM6,INPUTERROR
                   LCALL L_KEYBEEP
                   AJMP  USER2
INPUTERROR:        MOV R4,#030H
INPUTERRORC:       LCALL   L_PLAYERRO
                   DJNZ R4, INPUTERRORC
                   AJMP  START
                   NOP
                   NOP
                   LJMP  L_EEROR
;********************INPUT SET KEK MODE***********************
USER2F:            CJNE A,#4H,USER2
                   AJMP    START
USER2:             LCALL  KEY_TEST2
                   CJNE  A,#1H,USER2F     ;SET MODE
;************************STORE DATA****************************
STORE:             LCALL  KEY_TEST3
                   CJNE  A,#4H,ZZOTHER
                   AJMP  START
ZZOTHER:           CJNE  A,#2H,ZZOTHER1
                   AJMP  TAKE
ZZOTHER1:          CJNE  A,#1H,STORE
UPKEY:
                   MOV  LED1,#080H
                   MOV  LED2,#080H
                   MOV  LED3,#080H
                   MOV  LED4,#080H
                   MOV  LED5,#07EH
                   MOV  R0,#LED5
UPKEY3:            MOV  R4,#0H
                   ;MOV  R3,#0AH
UPKEY1:            LCALL KEY_TEST0
                   CJNE A,#4H,ZUMINF
                   AJMP  START
ZUMINF:            CJNE A,#3H,UPKEY4
                   AJMP  STORE
UPKEY4:            CJNE A,#2H,UPKEY2
                   INC  R4
                   MOV  A,R4
                   MOV  DPTR,#L_TAB
                   MOVC A,@A+DPTR
                   MOV   @R0,A
                   CJNE  R4,#05H,UPKEY1
                 
                   MOV   R4,#0FFH
                   AJMP  UPKEY1
                   NOP
                   NOP
                   LJMP  L_EEROR
UPKEY2:            CJNE A,#1,UPKEY1    ;CAN INSTAND OF LEFT KEY
;------------------STORE GROUP AND DATA-----------------------
GROUP:             CJNE R4,#0FFH,GROUP1
                   MOV R4,#5H
GROUP1:            MOV  36H,R4
UPKEYA:            LCALL  KEY_TEST1
                   CJNE  A,#4H,UKTS1
                   AJMP   START
UKTS1:             CJNE  A,#3H,UKTS2
                   AJMP  STORE
UKTS2:             CJNE A,#1H,UPKEYA
                   MOV  LED1,#0
                   MOV  LED2,#07EH
                   MOV  LED3,#07EH
                   MOV  LED4,#07EH
                   MOV  LED5,#07EH
                   MOV  R0,#LED5
UPKEYA3:
                   MOV  R4,#0
UPKEYA1:           LCALL KEY_TEST0
                   CJNE A,#4H,UPKEYA4
                   MOV R1,#30H
                   MOV R3,#5H
YOUDIAN1:          MOV A,@R1
                   JB ACC.0,YOUDIAN
                   INC R1
                   DJNZ R3,YOUDIAN1
                   INC  @R0
                   AJMP  UPKEYA1
YOUDIAN:           LCALL L_KEYBEEP
                   AJMP  UPKEYA1
UPKEYA4:           CJNE A,#2H,UPKEYA2
                   MOV R2,#1H
                   AJMP  BAOZHI
GUOSHU:            MOV R4,#0H
                   DJNZ R2,POLIKOU
BAOZHI:            MOV  A,R4
                   CLR   C          ;
                   SUBB A,#09H        ;
                   JNC  GUOSHU        ;  YIWAI HOU CAI JUMP
                   MOV  A,R4          ;
                   MOV  DPTR ,#L_TAB   ;
                   MOVC  A,@A+DPTR     ;
                   MOV   37H,@R0       ;
                   INC   R4            ;
                   CJNE  A,37H,BAOZHI
POLIKOU:           MOV  A,R4         ;
                   MOV  DPTR,#L_TAB  ;hai ke yi baoliu yuan zhi
                   MOVC A,@A+DPTR    ;danxuyao zenjian chengxu
                   MOV   @R0,A       ;
                   ;CJNE  R4,#09H,UPKEYA1
                   AJMP  UPKEYA1
;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 R3,A                              ;
                   MOV R2,#5H         ;
STOREDATA:         MOV A,@R1          ;
                   MOV @R0,A          ;
                   INC R1             ;STORE TO RAM
                   INC R0             ;
                   DJNZ R2,STOREDATA  ;
STORE_DOG:         MOV  A,R3           ;ADDRESS OF WATHCHDOG
                   MOV  R1,A
                   MOV R2,#5H                                                                                                                 ;EQU  ADDRESS OF RAM
WRITEDATA:         CLR  CS
                   CLR SCK
                   MOV A,#06H
                   ACALL L_W_BETY
                   SETB CS
                   CLR CS
                   CLR SCK
                   MOV A,#02H
                   ACALL L_W_BETY
                   MOV A,R1
                   ACALL L_W_BETY

WRITEDATA1:        MOV A,@R1
                   ACALL L_W_BETY
                   INC R1
                   SETB CS
                   LCALL L_TESTWIP
                   ;LCALL  L_DELAY2MS
                   ;LCALL  L_DELAY2MS
                   ;LCALL  L_DELAY2MS
                   DJNZ R2,WRITEDATA

                   AJMP STORE
                   NOP
                   NOP
                   LJMP  L_EEROR
;---------------------LEFTKEY---------------------------------
ZZUPKEYA1A:        AJMP UPKEYA1
LEFTKEY:           CJNE  A,#3H,ZZUPKEYA1A
                   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,#4H,CHULI4
                   MOV R1,#30H
                   MOV R3,#5H
LYOUDIAN1:         MOV A,@R1
                   JB ACC.0,LYOUDIAN
                   INC R1
                   DJNZ R3,LYOUDIAN1
                   CJNE @R0,#0H,LYOUDIAN2
                   AJMP LYOUDIAN
LYOUDIAN2:         CJNE @R0,#80H,LYOUDIAN3
                   AJMP LYOUDIAN
LYOUDIAN3:         INC  @R0              ;
                   AJMP  CHULI1
LYOUDIAN:          LCALL L_KEYBEEP
                   AJMP  CHULI1
ZZCLUPKEYA2:       AJMP UPKEYA2                                          ;
CHULI4:            CJNE A,#2H,ZZCLUPKEYA2    ;
                   MOV  A,R4
                   CLR  C            ; LED1 PLAY CHULI
                   SUBB A,#3H            ;
                   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**********************
TAKE:              LCALL  KEY_TEST4
TAKEA:             CJNE   A,#4H,TAKETEST1
                   AJMP START
TAKETEST1:         CJNE   A,#2H,TAKETEST2
                   AJMP    SETKEY
TAKETEST2:         CJNE  A,#1H,TAKE
                   MOV  LED1,#080H
                   MOV  LED2,#080H
                   MOV  LED3,#080H
                   MOV  LED4,#080H
                   MOV  LED5,#07EH
                   MOV  R0,#LED5
TAKE3:             MOV  R4,#0
                   MOV  R3,#09H
TAKE1:             LCALL KEY_TEST0
                   CJNE A,#4H,TKSTF1
                   AJMP  START
TKSTF1:            CJNE A,#3H,TKSTF2
                   AJMP  TAKE
TKSTF2:            CJNE A,#2H,TAKE2
                   INC  R4
                   MOV  A,R4
                   MOV  DPTR,#L_TAB
                   MOVC A,@A+DPTR
                   MOV   @R0,A
                   CJNE  R4,#05H,TAKE1
                   ;DJNZ R3,UPKEY1
                   MOV   R4,#0FFH
                   AJMP  TAKE1
TAKE2:             CJNE A,#1,TAKE1
;--------------------------------------------------------------
                   CJNE R4,#0FFH,TAKEZ
                   MOV R4,#5H
TAKEZ:             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
                   LCALL NOKEY5A  ;
TAKETEST:          LCALL   SEL8
                   MOV     A,P1
                   LCALL   L_PLAY5LED
                   CJNE    A,#0FFH,TAKEOVER
                   AJMP    TAKETEST
TAKEOVER:          MOV     R5,#2H
                   MOV     35H,A
TAKEOVER1:         LCALL   L_DELAY2MS
                   DJNZ    R5,TAKEOVER1
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,35H,TAKETEST
                 AJMP     TAKE
                   NOP
                   NOP
                   LJMP  L_EEROR
;*************************TAKE DTAT OVER**********************
;**************************SET PASSWORD***********************
SETKEY:            LCALL  KEY_TEST5
                   CJNE   A,#4H,SKTS1
                   AJMP   START
SKTS1:             CJNE   A,#2H,SKTS2
                   AJMP   STORE
SKTS2:             CJNE   A,#1H,SETKEY
SETKEY1:           LCALL  KEY_TEST1
                   CJNE   A,NUM1,INPUTERROR1
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE   A,NUM2,INPUTERROR1
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE   A,NUM3,INPUTERROR1
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE   A,NUM4,INPUTERROR1
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE   A,NUM5,INPUTERROR1
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE   A,NUM6,INPUTERROR1
                   LCALL L_KEYBEEP
                   AJMP   SETKEY2
INPUTERROR1:       MOV R4,#030H
INPUTERRORAA:      LCALL   L_PLAYERRO
                   DJNZ R4, INPUTERRORAA
                   AJMP  SETKEY
;-------------------------INPUT NEW---------------------------
SETKEY2:           MOV    R0,#26H       ;
                   MOV    R1,#6H        ;
SETKEY3:           LCALL  KEY_TEST2     ; INPUT NEW PASSWORD
                   MOV  @R0,A           ;
                   INC  R0
                   LCALL L_KEYBEEP             ;
                   DJNZ R1,SETKEY3      ;
;----------------------INPUT AGAIN-----------------------------
SETKEYA1:          LCALL  KEY_TEST1
                   CJNE   A,26H,INPUTERRORA1
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE   A,27H,INPUTERRORA1
                   LCALL L_KEYBEEP

⌨️ 快捷键说明

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