📄 main23.asm
字号:
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 + -