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