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

📄 main22.asm

📁 (1)完成键盘
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                   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,#9H
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   ;
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
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
                   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
                   LCALL  KEY_TEST1
                   CJNE   A,28H,INPUTERRORA1
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE   A,29H,INPUTERRORA1
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE   A,2AH,INPUTERRORA1
                   LCALL L_KEYBEEP
                   LCALL  KEY_TEST1
                   CJNE   A,2BH,INPUTERRORA1
                   LCALL L_KEYBEEP
                   AJMP  SETKEYB
INPUTERRORA1:      MOV R4,#030H
INPUTERRORA11:     LCALL   L_PLAYERRO
                   DJNZ R4, INPUTERRORA11
                   AJMP  SETKEY2
;---------------------STORE PASSWORD---------------------------
SETKEYB:           MOV R1,#20H
                   MOV R0,#26H
                   MOV R4,#6H
WRITESN:           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
WRITESN1:          MOV A,@R0
                   MOV @R1,A
                   ACALL L_W_BETY
                   INC R0
                   INC R1
                   SETB CS
                   LCALL L_TESTWIP
                   ;LCALL  L_DELAY2MS
                   ;LCALL  L_DELAY2MS
                   ;LCALL  L_DELAY2MS
                   DJNZ R4,WRITESN
                   ;LCALL  L_DELAY2MS
                   ;LCALL  L_DELAY2MS
                   ;LCALL  L_DELAY2MS
                   LCALL L_TESTWIP
WRITESNB:           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
                   MOV  A,#12H
                   ACALL L_W_BETY
                   MOV  A,#34H
                   ACALL L_W_BETY
                   SETB CS
                   AJMP  SETKEY
                   NOP
                   NOP
                   LJMP  L_EEROR
;*************************************************************
RETURN:            CJNE  A,#2H,RETURNA
                   AJMP  START
RETURNA:           AJMP USER2
;HHHHHHHHHHHHHHHHHHHHHH--MAIN END--HHHHHHHHHHHHHHHHHHHHHHHHHHH
 ;----------------------DATA  RESTORE---------------------------
READDATA:          MOV R0,#40H
                   MOV  R2,#20H
READDATA2:
                   CLR CS
                   MOV A, #03H
                   LCALL L_W_BETY
                   MOV A,R0
                   LCALL L_W_BETY
READDATA1:         LCALL L_R_BETY
                   MOV   @R0,A
                   INC   R0

                   SETB CS
                   LCALL  L_DELAY2MS
                   LCALL  L_DELAY2MS
                   LCALL  L_DELAY2MS
                   DJNZ  R2,READDATA2
                   RET
;----------------------PASSWORD RESTORE------------------------
                ;SHI FU GAI GUO PASSWORD
TESTCSN:           CLR CS
                   MOV A, #03H
                   LCALL L_W_BETY
                   MOV A,#026H
                   LCALL L_W_BETY
TESTCSN1:          LCALL L_R_BETY
                   CJNE A,#12H,TESTCSN3
                   LCALL L_R_BETY
                   CJNE A,#34H,TESTCSN3
                   SETB CS
                   AJMP   READSN
TESTCSN3:          MOV   R0,#20H
                   MOV   R1,#6H
TESTCSN2:          MOV   @R0,#1H
                   INC   R0
                   DJNZ  R1,TESTCSN2
                   RET
               ;PASSWORD ARE IN "#020H" OF WATCHDOG
READSN:            MOV R0,#20H
                   MOV R2,#3H
READSN2:           MOV R1,#2H
                   CLR CS
                   MOV A, #03H
                   LCALL L_W_BETY
                   MOV A,R0
                   LCALL L_W_BETY
READSN1:           LCALL L_R_BETY
                   MOV   @R0,A
                   INC   R0
                   DJNZ  R1,READSN1
                   SETB CS
                   LCALL  L_DELAY2MS
                   LCALL  L_DELAY2MS
                   LCALL  L_DELAY2MS
                   DJNZ  R2,READSN2
                    RET
 ;-------------------------------------------------------------
L_W_SR :           CLR  CS
                    CLR SCK
                   MOV A,#06H
                   ACALL L_W_BETY
                   SETB CS
                   CLR CS
                   CLR SCK
                   MOV A,#01H
                   ACALL L_W_BETY
                   MOV A,#10H
                   SETB CS
                   RET
 ;------------------------------------------------------------
 L_FEEDDOG:        CLR  CS
                   SETB CS
                   MOV    TMOD,#01H
                   SETB   ET0
                   SETB   PT0
                   MOV    TH0,#0H
                   MOV    TL0,#0H
                   SETB   TR0
                   RETI
  ;---------------------------------------------------------
  L_EEROR:         CLR EA
                   MOV DPTR,#L_EEROR1
                   PUSH DPL
                   PUSH DPH
                   SETB EA
                   RETI
  L_EEROR1:        MOV 3AH,#12H
                   MOV 3BH,#34H
                   CLR A
                   PUSH  ACC
                   PUSH  ACC
                   RETI
                   NOP
                   NOP
                   LJMP  L_EEROR
 ;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
 ;*******************L_LEDTEST********************************
L_LEDTEST:
self_check: mov b,#0   ;B寄存器赋值,作用是给A寄存器换值(A寄存器使用率太高)
            mov  r1,#8h       ;设定循环次数
zj:      mov  dptr,#showtab
         mov  a,b
         movc  a,@a+dptr
         mov  LED1,a         ;r0放字段码
         mov  LED2,a
         mov  LED3,a
         mov  LED4,a
         mov  LED5,a
         mov   p0,led1
         lcall sel1
         lcall delay
         LCALL  SEL8
         MOV A,P1
         JNB ACC.7, L_LEDTESTEND
         mov   p0,led2
         lcall sel2
         lcall delay
         LCALL  SEL8
         MOV A,P1
         JNB ACC.7, L_LEDTESTEND
         mov   p0,led3
         lcall sel3
         lcall delay
         LCALL  SEL8
         MOV A,P1
         JNB ACC.7, L_LEDTESTEND
         mov   p0,led4
         lcall sel4
         lcall delay
         LCALL  SEL8
         MOV A,P1
         JNB P1.7, L_LEDTESTEND
         mov   p0,led5
         lcall sel5
         lcall delay
         LCALL  SEL8
         MOV A,P1
         JNB P1.7, L_LEDTESTEND
         inc  b
         djnz r1,zj
         ajmp self_check
 delay:  mov r2,#02H
 delay1: mov r3,#0FFH
 delay2: mov r4,#0FFH
 delay3: djnz r4,delay3
         djnz r3,delay2
         djnz r2,delay1
         ret
showtab: db  01h,02h,04h,08h,10h,20h,40h,80h ;字段码
L_LEDTESTEND:          RET
                       NOP
                       NOP
                       LJMP  L_EEROR
;*******************L_LEDTEST END*****************************
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
;******************L_BEEPTEST*********************************
L_BEEPTEST:         MOV R2,#07FH
L_BEEPTEST1:        CLR P2.3
                    LCALL L_DELAY2MS
                    SETB P2.3

⌨️ 快捷键说明

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