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

📄 main11.asm

📁 (1)完成键盘
💻 ASM
📖 第 1 页 / 共 3 页
字号:
TAKEOVER:          MOV     R5,#2H
                   MOV     35H,A
TAKEOVER1:         LCALL   L_DELAY2MS
                   DJNZ    R5,TAKEOVER1
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,35H,TAKETEST
NOKEYTA:           LCALL   SEL8
NOKEYT:            MOV     A,P1
                   LCALL   L_PLAY5LED
                   CJNE    A,#0FFH,NOKEYTA
                   MOV     R5,#2H
NOKEYTB:           LCALL   L_DELAY2MS
                   DJNZ    R5,NOKEYTB
                   LCALL   SEL8
                   MOV     A,P1
                   CJNE    A,#0FFH,NOKEYTA
                   MOV     A,35H
                   AJMP     TAKE
;*************************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  KEY_TEST1
                   CJNE   A,NUM2,INPUTERROR1
                   LCALL  KEY_TEST1
                   CJNE   A,NUM3,INPUTERROR1
                   LCALL  KEY_TEST1
                   CJNE   A,NUM4,INPUTERROR1
                   LCALL  KEY_TEST1
                   CJNE   A,NUM5,INPUTERROR1
                   LCALL  KEY_TEST1
                   CJNE   A,NUM6,INPUTERROR1
                   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              ;
                   DJNZ R1,SETKEY3      ;
;----------------------INPUT AGAIN-----------------------------
SETKEYA1:          LCALL  KEY_TEST1
                   CJNE   A,26H,INPUTERRORA1
                   LCALL  KEY_TEST1
                   CJNE   A,27H,INPUTERRORA1
                   LCALL  KEY_TEST1
                   CJNE   A,28H,INPUTERRORA1
                   LCALL  KEY_TEST1
                   CJNE   A,29H,INPUTERRORA1
                   LCALL  KEY_TEST1
                   CJNE   A,2AH,INPUTERRORA1
                   LCALL  KEY_TEST1
                   CJNE   A,2BH,INPUTERRORA1
                   AJMP  SETKEYB
INPUTERRORA1:      MOV R4,#030H
INPUTERRORA11:     LCALL   L_PLAYERRO
                   DJNZ R4, INPUTERRORA11
                   AJMP  SETKEY2
;---------------------STORE PASSWORD---------------------------
SETKEYB:           MOV R1,#20H
                   MOV R0,#26H
WRITESN:           CLR  CS
                   MOV A,#06H
                   ACALL L_W_BETY
                   SETB CS
                   CLR CS
                   MOV A,#02H
                   ACALL L_W_BETY
                   MOV A,#010H
                   ACALL L_W_BETY
                   MOV R2,#6H
WRITESN1:          MOV A,@R0
                   MOV @R1,A
                   ACALL L_W_BETY
                   INC R0
                   INC R1
                   DJNZ R2,WRITESN1
 ;                  SETB CS
;WRITESNB:           CLR  CS
;                   MOV A,#06H
;                   ACALL L_W_BETY
;                   SETB CS
;                   CLR CS
;                   MOV A,#0AH
 ;                  ACALL L_W_BETY
;                   MOV A,#0F4H
;                   ACALL L_W_BETY
;                   MOV R2,#2H
;WRITESNB1:         MOV A,@R0
 ;                  MOV @R1,A
 ;                  ACALL L_W_BETY
 ;                  INC R0
;                   INC R1
;                   DJNZ R2,WRITESNB1
                   MOV  A,#12H
                   ACALL L_W_BETY
                   MOV  A,#34H
                   ACALL L_W_BETY
                   SETB CS
                   AJMP  SETKEY
;*************************************************************
RETURN:            CJNE  A,#2H,RETURNA
                   AJMP  START
RETURNA:           AJMP USER2
;HHHHHHHHHHHHHHHHHHHHHH--MAIN END--HHHHHHHHHHHHHHHHHHHHHHHHHHH

 ;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
 ;*******************L_LEDTEST********************************
L_LEDTEST:            NOP
                    RET
;*******************L_LEDTEST END*****************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;******************L_BEEPTEST*********************************
L_BEEPTEST:           NOP
                    RET
;***********************L_BEEPTEST  END***********************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;***********************L_KEYTEST*****************************
L_KEYTEST:       MOV  LED1,#0
                 MOV  LED2,#72H
                 MOV  LED3,#0F2H
                 MOV  LED4,#0DCH
                 MOV  LED5,#0
                 LCALL  SEL8
                 MOV A,P1
                 JNB ACC.7, L_PLAYKEYEND
                 JNB ACC.0, L_PLAYKEY1
                 JNB ACC.1, L_PLAYKEY2
                 JNB ACC.2, L_PLAYKEY3
                 JNB ACC.3, L_PLAYKEY4
                 AJMP L_KEYTEST
L_PLAYKEY1:      MOV  LED5,#0CH
                 LCALL L_PLAY5
                 LCALL L_KEYBEEP
                 AJMP  L_KEYTEST
L_PLAYKEY2:      MOV  LED5,#0B6H
                 LCALL L_PLAY5
                 LCALL L_KEYBEEP
                 AJMP  L_KEYTEST
L_PLAYKEY3:      MOV  LED5,#9EH
                 LCALL L_PLAY5
                 LCALL L_KEYBEEP
                 AJMP  L_KEYTEST
L_PLAYKEY4:      MOV  LED5,#0CCH
                 LCALL L_PLAY5
                 LCALL L_KEYBEEP
                 AJMP  L_KEYTEST
L_KEYBEEP:       CLR     P2.3
                 LCALL   L_DELAY65MS
                 SETB    P2.3

L_PLAYKEYEND:        RET
;--------------------------------------------------------------
L_DELAY65MS:
                 MOV    R7,#0
L_DELAY65MS1:    MOV    R6,#0
L_DELAY65MS2:    DJNZ   R6,L_DELAY65MS2
                 DJNZ   R7,L_DELAY65MS1
                 RET
;**********************L_KEYTEST END **************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;********************L_ADTEST**********************************
L_ADTEST:
                 MOV    R0,#ADH
L_AD1:           CLR    P2.0
                 CLR    P2.1
                 MOV    A,P1
                 SETB   P2.1
                 MOV    @R0,A
                 INC    R0
                 CLR    P2.2
                 MOV    A,P1
                 SETB   P2.2
                 SETB   P2.0
                 MOV    @R0,A
L_AD2:

                     RET
;*********************L_ADTEST END************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;*****************WATCH DOG TEST****************
L_WDOGTEST:
;*****************DEFINE**************************************
                L_W_AD EQU 2FH ;WATCH DOG ADDRESS
                L_R_AD  EQU 3FH ;RAM ADDRAESS
                CS EQU P3.4
                SCK EQU P3.5
                SI EQU P3.6
                SO EQU P3.7


;***************MAIN*********************************

L_KEY:          ACALL KEY_TEST
                CJNE  A,#1H, L_KEY1
                ACALL  L_READ
                ACALL  L_W_PLAY
                LCALL   L_TESTKEY
                JNB   ACC.7,L_KEY0
                AJMP   L_KEY
L_KEY1:
                CJNE  A,#2H, L_KEY2
                ACALL  L_WRITE
                LCALL   L_TESTKEY
                 JNB   ACC.7,L_KEY0

L_KEY2:          AJMP   L_KEY
L_KEY0 :         RET
;***********WATCH DOG  WRITE PROGRAM***************************
L_WRITE:        CLR  CS
                MOV A,#06H
                ACALL L_W_BETY
                SETB CS
                CLR CS
                MOV A,#02H
                ACALL L_W_BETY
                MOV A,#L_W_AD
                ACALL L_W_BETY
                MOV A,#L_R_AD
                ACALL L_W_BETY
                SETB CS
                RET
;****************END*******************************************
;************ WATCH DOG READ PROGRAM***************************
L_READ:         CLR CS
                MOV A, #3H
                ACALL L_W_BETY
                MOV A,#L_W_AD
                ACALL L_W_BETY
                ACALL L_R_BETY
                SETB CS
                RET
 ;******************END***************************************
 ;*****************ZI-PROGRAM*****************************
 L_W_BETY:
                MOV R7,#8H
L_W_BETY1:      RLC A
                MOV SI,C
                CLR SCK
                SETB SCK
                DJNZ R7,L_W_BETY1
                RET
          ;*****************************
L_R_BETY:       MOV R7,#8H
L_R_BETY1:      SETB SCK
                CLR  SCK
                MOV C,SO
                RLC  A
                DJNZ R7,L_R_BETY1
                RET
;*******************END********************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;***************DELAY PROGRAM***************************
L_DELAY2MS:
                 MOV R7,#08H
L_DELAY2MS1:     MOV R6,#0FFH
L_DELAY2MS2:     DJNZ R6,L_DELAY2MS2
                 DJNZ R7,L_DELAY2MS1
                 RET
 ;******************END************************************
  ;****************PLAY PROGRAM******************************
L_W_PLAY:
                 MOV R5,A
                 ANL A,#0FH
                 MOV DPTR,#L_TAB
                 MOVC A,@A+DPTR
                 MOV LED5,A
                 MOV A,R5
                 ANL A,#0F0H
                 SWAP A
                 MOVC A,@A+DPTR
                 MOV LED4,A
                 ;==============
L_W_PLAY1:
                 ACALL L_PLAY4
                 ACALL L_DELAY2MS
                 ACALL L_PLAY5
                 ACALL L_DELAY2MS
                 ACALL SEL8
                 MOV  A,P1                 ; IF K4 PRESS THEN RETURN
                 JB ACC.3,L_W_PLAY1  ;  =======================
                 RET

 ;*******************END*****************************************
 ;****************** PLAY ZI PROGRAM***************************
L_PLAY1:          MOV   P0,LED1
                  CALL SEL1
                  RET
L_PLAY2:          MOV   P0,LED2
                  ACALL SEL2
                  RET
L_PLAY3:          MOV   P0,LED3
                  ACALL SEL3
                  RET
L_PLAY4:          MOV   P0,LED4
                  ACALL SEL4
                  RET
L_PLAY5:          MOV   P0,LED5
                  ACALL SEL5
                  RET
 ;******************END********************************
 ;*************SEL PROGRAM***********************
sel1:              clr   p2.5
                   clr   p2.6
                   clr   p2.7
                   ret
sel2:              clr   p2.5
                   clr   p2.6
                   setb  p2.7
                   ret
sel3:              clr   p2.5
                   setb  p2.6
                   clr   p2.7
                   ret
sel4:              clr   p2.5
                   setb  p2.6
                   setb  p2.7
                   ret
sel5:              setb  p2.5
                   clr   p2.6
                   clr   p2.7
                   ret

⌨️ 快捷键说明

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