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

📄 main23.asm

📁 (1)完成键盘
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                   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
                   DJNZ R4,WRITESN
                   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
                   LCALL  L_FEEDDOG
                   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
                   LCALL  L_FEEDDOG
                    RET
 ;-------------------------------------------------------------
L_W_SR :           CLR  CS
                    CLR SCK
                   MOV A,#06H
                   ACALL L_W_BETY
                   SETB CS
                   CLR CS
                   CLR SCK
                   MOV A,#0H       ;1.4s
                   ACALL L_W_BETY
                   MOV A,#10H
                   SETB CS
                   RET
 ;------------------------------------------------------------
 L_FEEDDOG:        CLR  CS
                   SETB CS
                   CLR 3CH
                   MOV  12H,A
                   MOV  13H,PSW
                   MOV  14H,B
                   MOV  15H, R0
                   MOV  16H, R1
                   MOV  17H, R2
                   MOV  18H, R3
                   MOV  19H, R4
                   MOV  1AH, R5
                   MOV  1BH, R6
                   MOV  1CH, R7
                   MOV  1DH,DPH
                   MOV  1EH,DPL
                   MOV  70H,60H
                   MOV  71H,61H
                   MOV  72H,62H
                   MOV  73H,63H
                   MOV  74H,64H
                   MOV  75H,65H
                   MOV  76H,66H
                   MOV  77H,67H
                   MOV  78H,68H
                   MOV  79H,69H
                   MOV  7AH,6AH
                   MOV  7BH,6BH
                   MOV  7CH,6CH
                   MOV  7DH,6DH
                   MOV  7EH,6EH
                   MOV  7FH,6FH
                   RET
  ;---------------------------------------------------------
  L_DATA_HF:        MOV A,3AH
                    CJNE A,#12H,L_DATA_HFEND
                    MOV A,3BH
                    CJNE A,#34H,L_DATA_HFEND
                    MOV DPL,1EH
                    MOV DPH,1DH
                    MOV R7,1CH
                    MOV R6,1BH
                    MOV R5,1AH
                    MOV R4,19H
                    MOV R3,18H
                    MOV R2,17H
                    MOV R1,16H
                    MOV R0,15H
                    MOV B,14H
                    MOV PSW,13H
                   MOV  60H,70H
                   MOV  61H,71H
                   MOV  62H,72H
                   MOV  63H,73H
                   MOV  64H,74H
                   MOV  65H,75H
                   MOV  66H,76H
                   MOV  67H,77H
                   MOV  68H,78H
                   MOV  69H,79H
                   MOV  6AH,7AH
                   MOV  6BH,7BH
                   MOV  6CH,7CH
                   MOV  6DH,7DH
                   MOV  6EH,7EH
                   MOV  6FH,7FH
  L_DATA_HFEND:     RET
  ;---------------------------------------------------------
  L_TOZD:          INC 3CH
                   MOV A,3CH
                   ADD A,#0FDH
                   JC  L_EEROR
                   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

⌨️ 快捷键说明

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