📄 main.asm
字号:
;@@@@@@@@@@@@@@@@@@@@@___MAIN____@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
MAIN: ORG 0
LJMP MAIN_ST
ORG 03H
LJMP PINT0
ORG 30H
;*************************************************************
NUM1 EQU 20H
NUM2 EQU 21H
NUM3 EQU 22H
NUM4 EQU 23H
NUM5 EQU 24H
NUM6 EQU 25H
LINSHI1 EQU 26H
LINSHI2 EQU 27H
LINSHI3 EQU 28H
LINSHI4 EQU 29H
LINSHI5 EQU 2AH
LINSHI6 EQU 2BH
LED1 EQU 30H
LED2 EQU 31H
LED3 EQU 32H
LED4 EQU 33H
LED5 EQU 34H
KEYTEST EQU 35H
GROUPLINSHI EQU 36H
BAOYUANZHI EQU 37H
ADH EQU 38H
ADL EQU 39H
TESTSD1 EQU 3AH
TESTSD2 EQU 3BH
;HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
MAIN_ST:
;------------------------------------------
MOV SP,#65H
LCALL READDATA
LCALL TESTCSN
LCALL L_W_SR
SETB EA
;----------------------MAIN-----------------------------------
START:
LCALL L_TESTKEY
MOV R4,A
ANL A,#0FH
CJNE A,#0FH,USER
LCALL ZJTEST
AJMP START
;*******************ZJ CALL PROGRAM**************************
ZJTEST: MOV A,R4
CPL A
ANL A,#0F0H
SWAP A
JNB ACC.3,ZJ0
RET
ZJ0: CJNE A,#01H,ZJ1
LCALL L_LEDTEST
RET
ZJ1: CJNE A,#02H,ZJ2
LCALL L_BEEPTEST
RET
ZJ2: CJNE A,#03H,ZJ3
LCALL L_KEYTEST
RET
ZJ3: CJNE A,#04H,ZJ4
LCALL L_ADTEST
RET
ZJ4: CJNE A,#05H,ZJ5
LCALL L_WDOGTEST
RET
ZJ5: CJNE A,#06H,ZJ6
LCALL L_EXP1
RET
ZJ6: CJNE A,#07H,ZJ7
LCALL L_EXP2
RET
ZJ7: MOV R5,#030H
ZJ8: LCALL L_PLAYERRO
DJNZ R5,ZJ8
RET
NOP
NOP
LJMP L_EEROR
;*******************ZJ CALL PROGRAM END********************
;*******************USER PROGRAM*****************************
USER:
;********************INPUT PASSWORD**************************
USER1:
LCALL KEY_TEST1
CJNE A,NUM1,INPUTERROR
LCALL L_KEYBEEP
LCALL KEY_TEST1
CJNE A,NUM2,INPUTERROR
LCALL L_KEYBEEP
LCALL KEY_TEST1
CJNE A,NUM3,INPUTERROR
LCALL L_KEYBEEP
LCALL KEY_TEST1
CJNE A,NUM4,INPUTERROR
LCALL L_KEYBEEP
LCALL KEY_TEST1
CJNE A,NUM5,INPUTERROR
LCALL L_KEYBEEP
LCALL KEY_TEST1
CJNE A,NUM6,INPUTERROR
LCALL L_KEYBEEP
AJMP USER2
INPUTERROR: MOV R4,#030H
INPUTERRORC: LCALL L_PLAYERRO
DJNZ R4, INPUTERRORC
AJMP START
NOP
NOP
LJMP L_EEROR
;********************INPUT SET KEK MODE***********************
USER2F: CJNE A,#4H,USER2
AJMP START
USER2: LCALL KEY_TEST2
CJNE A,#1H,USER2F ;SET MODE
;************************STORE DATA****************************
STORE: LCALL KEY_TEST3
CJNE A,#4H,ZZOTHER
AJMP START
ZZOTHER: CJNE A,#2H,ZZOTHER1
AJMP TAKE
ZZOTHER1: CJNE A,#1H,STORE
UPKEY:
MOV LED1,#080H
MOV LED2,#080H
MOV LED3,#080H
MOV LED4,#080H
MOV LED5,#07EH
MOV R0,#LED5
UPKEY3: MOV R4,#0H
;MOV R3,#0AH
UPKEY1: LCALL KEY_TEST0
CJNE A,#4H,ZUMINF
AJMP START
ZUMINF: CJNE A,#3H,UPKEY4
AJMP STORE
UPKEY4: CJNE A,#2H,UPKEY2
INC R4
MOV A,R4
MOV DPTR,#L_TAB
MOVC A,@A+DPTR
MOV @R0,A
CJNE R4,#05H,UPKEY1
MOV R4,#0FFH
AJMP UPKEY1
NOP
NOP
LJMP L_EEROR
UPKEY2: CJNE A,#1,UPKEY1 ;CAN INSTAND OF LEFT KEY
;------------------STORE GROUP AND DATA-----------------------
GROUP: CJNE R4,#0FFH,GROUP1
MOV R4,#5H
GROUP1: MOV 36H,R4
UPKEYA: LCALL KEY_TEST1
CJNE A,#4H,UKTS1
AJMP START
UKTS1: CJNE A,#3H,UKTS2
AJMP STORE
UKTS2: CJNE A,#1H,UPKEYA
MOV LED1,#0
MOV LED2,#07EH
MOV LED3,#07EH
MOV LED4,#07EH
MOV LED5,#07EH
MOV R0,#LED5
UPKEYA3:
MOV R4,#0
UPKEYA1: LCALL KEY_TEST0
CJNE A,#4H,UPKEYA4
MOV R1,#30H
MOV R3,#5H
YOUDIAN1: MOV A,@R1
JB ACC.0,YOUDIAN
INC R1
DJNZ R3,YOUDIAN1
INC @R0
AJMP UPKEYA1
YOUDIAN: LCALL L_KEYBEEP
AJMP UPKEYA1
UPKEYA4: CJNE A,#2H,UPKEYA2
MOV R2,#1H
AJMP BAOZHI
GUOSHU: MOV R4,#0H
DJNZ R2,POLIKOU
BAOZHI: MOV A,R4
CLR C ;
SUBB A,#09H ;
JNC GUOSHU ; YIWAI HOU CAI JUMP
MOV A,R4 ;
MOV DPTR ,#L_TAB ;
MOVC A,@A+DPTR ;
MOV 37H,@R0 ;
INC R4 ;
CJNE A,37H,BAOZHI
POLIKOU: MOV A,R4 ;
MOV DPTR,#L_TAB ;hai ke yi baoliu yuan zhi
MOVC A,@A+DPTR ;danxuyao zenjian chengxu
MOV @R0,A ;
;CJNE R4,#09H,UPKEYA1
AJMP UPKEYA1
;POLI: ;INC R4
;AJMP PILIKOU
UPKEYA2: CJNE A,#1,LEFTKEY ;
MOV A,36H ;
MOV B,#5H ;
MUL AB ;
ADD A,#40H ;STORE DATA
MOV R1,#30H ;
MOV R0,A
MOV R3,A ;
MOV R2,#5H ;
STOREDATA: MOV A,@R1 ;
MOV @R0,A ;
INC R1 ;STORE TO RAM
INC R0 ;
DJNZ R2,STOREDATA ;
STORE_DOG: MOV A,R3 ;ADDRESS OF WATHCHDOG
MOV R1,A
MOV R2,#5H ;EQU ADDRESS OF RAM
WRITEDATA: 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
WRITEDATA1: MOV A,@R1
ACALL L_W_BETY
INC R1
SETB CS
LCALL L_TESTWIP
;LCALL L_DELAY2MS
;LCALL L_DELAY2MS
;LCALL L_DELAY2MS
DJNZ R2,WRITEDATA
AJMP STORE
NOP
NOP
LJMP L_EEROR
;---------------------LEFTKEY---------------------------------
ZZUPKEYA1A: AJMP UPKEYA1
LEFTKEY: CJNE A,#3H,ZZUPKEYA1A
DEC R0
MOV A,R0
SUBB A,#31H
JC LEFTROL
AJMP UPKEYA1
LEFTROL: MOV A,R0
SUBB A,#2FH
JNC CHULILED1
MOV R0, #34H
AJMP UPKEYA1
CHULILED1:
CHULI1: LCALL KEY_TEST0 ;
CJNE A,#4H,CHULI4
MOV R1,#30H
MOV R3,#5H
LYOUDIAN1: MOV A,@R1
JB ACC.0,LYOUDIAN
INC R1
DJNZ R3,LYOUDIAN1
CJNE @R0,#0H,LYOUDIAN2
AJMP LYOUDIAN
LYOUDIAN2: CJNE @R0,#80H,LYOUDIAN3
AJMP LYOUDIAN
LYOUDIAN3: INC @R0 ;
AJMP CHULI1
LYOUDIAN: LCALL L_KEYBEEP
AJMP CHULI1
ZZCLUPKEYA2: AJMP UPKEYA2 ;
CHULI4: CJNE A,#2H,ZZCLUPKEYA2 ;
MOV A,R4
CLR C ; LED1 PLAY CHULI
SUBB A,#3H ;
JNC CLRR4 ;
INC R4 ;
CLRR4F: MOV A,R4 ;
MOV DPTR,#L_LED1B ;
MOVC A,@A+DPTR ;
MOV @R0,A ;
AJMP CHULI1 ;
CLRR4: MOV R4,#0H ;
AJMP CLRR4F ;
;------------------------------------------------------------
L_LED1B: DB 0H,0CH,8CH,80H
;*************************STORE DATA END********************
;*************************TAKEMOVE DATA**********************
TAKE: LCALL KEY_TEST4
TAKEA: CJNE A,#4H,TAKETEST1
AJMP START
TAKETEST1: CJNE A,#2H,TAKETEST2
AJMP SETKEY
TAKETEST2: CJNE A,#1H,TAKE
MOV LED1,#080H
MOV LED2,#080H
MOV LED3,#080H
MOV LED4,#080H
MOV LED5,#07EH
MOV R0,#LED5
TAKE3: MOV R4,#0
MOV R3,#09H
TAKE1: LCALL KEY_TEST0
CJNE A,#4H,TKSTF1
AJMP START
TKSTF1: CJNE A,#3H,TKSTF2
AJMP TAKE
TKSTF2: CJNE A,#2H,TAKE2
INC R4
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,#5H
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
LCALL NOKEY5A ;
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
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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -