当前位置:文档之家› 基于51单片机密码锁的汇编程序

基于51单片机密码锁的汇编程序

ORG 0000H
ENTER1 EQU 05H
CHECK1 EQU 06H
CHECK2 EQU 07H


SJMP START
ORG 0080H
START:ACALL INITIAL
BEGIN:MOV 20H,#04H
MOV 21H,#50H
LOOP: ACALL KEY
MOV R0,21H
MOV @R0,A
INC 21H
DEC 20H
ACALL DISPLAY
MOV A,20H
JNZ LOOP

ACALL KEY
ACALL ENTER
JB ENTER1,WAY1
ACALL ZERO
ACALL WRONG
AJMP BEGIN
WAY1: ACALL CHECK

JB CHECK1,WAY2
AJMP WAY11

WAY2: ACALL ZERO
CLR P3.3
ACALL KEY
ACALL RESET
SETB P3.3
ACALL ZERO
AJMP BEGIN








WAY11: ACALL CHECK11
ACALL ZERO
JB CHECK2,WAY22
ACALL WRONG
AJMP BEGIN

WAY22: CLR P3.3
ACALL KEY
ACALL RESET22
SETB P3.3
ACALL ZERO
AJMP BEGIN









ENTER:SUBB A,#0AH
JNZ E1
SETB ENTER1
RET
E1: CLR ENTER1
RET


INITIAL:MOV R3,#00H
MOV 40H,#00H
MOV 41H,#01H
MOV 42H,#02H
MOV 43H,#03H

MOV 50H,#00H
MOV 51H,#00H
MOV 52H,#00H
MOV 53H,#00H


MOV 60H,#03H
MOV 61H,#03H
MOV 62H,#03H
MOV 63H,#03H
RET

CHECK:MOV R5,#04H
MOV R0,#50H
MOV R1,#40H
M2: MOV 2EH,@R0
MOV A,@R1
CJNE A,2EH,M1
INC R0
INC R1
DEC R5
DJNZ R5,M2
SETB CHECK1
RET
M1: CLR CHECK1
RET











RESET:SUBB A,#0BH
JZ MOD1
RET
MOD1: MOV 24H,#04H
MOV 25H,#70H
MOV 26H,#50H
LOOP3:ACALL KEY
MOV R0,25H
MOV @R0,A

MOV R1,26H
MOV A,#0FH
MOV @R1,A
INC 26H

INC 25H
DEC 24H
MOV A,24H
JNZ LOOP3
ACALL KEY
ACALL ENTER
ACALL ZERO
JB ENTER1,RESETAGAIN
ACALL WRONG1
AJMP MOD1
L3: RET


RESETAGAIN:MOV 24H,#04H
MOV 25H,#75H
MOV 26H,#50H
LOOP4: ACALL KEY
MOV R0,25H
MOV @R0,A

MOV R1,26H
MOV A,#0FH
MOV @R1,A
INC 26H

INC 25H
DEC 24H
MOV A,24H
JNZ LOOP4
ACALL KEY
ACALL ENTER
ACALL ZERO
JB ENTER1,RESETCHECK
ACALL WRONG1
AJMP RESETAGAIN

RESETCHECK:MOV R5,#04H
MOV R0,#70H
MOV R1,#75H
W2: MOV 2EH,@R0
MOV A,@R1
CJNE A,2EH,W1
INC R0
INC R1
DEC R5
DJNZ R5,W2
AJMP FINAL
W1: ACALL WRONG1
AJMP MOD1



FINAL: MOV 40H,70H
MOV 41H,71H
MOV 42H,72H
MOV 43H,73H
AJMP L3














CHECK11:MOV R5,#04H
MOV R0,#50H
MOV R1,#60H
M22: MOV 2EH,@R0
MOV A,@R1
CJNE A,2EH,M11
INC R0
INC R1
DEC R5
DJNZ R5,M22
SETB CHECK2

RET
M11: CLR CHECK2
RET

RESET22:SUBB A,#0BH
JZ MOD2
RET
MOD2: MOV 24H,#04H
MOV 25H,#70H
MOV 26H,#50H
LOOP33:ACALL KEY
MOV R0,25H
MOV @R0,A

MOV R1,26H
MOV A,#0FH
MOV @R1,A
INC 26H
INC 25H
DEC 24H
MOV A,24H
JNZ LOOP33
ACALL KEY
ACALL ENTER
ACALL ZERO
JB ENTER1,RESETAGAIN2
ACALL WRONG1
AJMP MOD2
L33: RET


RESETAGAIN2:MOV 24H,#04H
MOV 25H,#75H
MOV 26H,#50H
LOOP44: ACALL KEY
MOV R0,25H
MOV @R0,A
MOV R1,26H
MOV A,#0FH
MOV @R1,A
INC 26H
INC 25H
DEC 24H
MOV A,24H
JNZ LOOP44
ACALL KEY
ACALL ENTER
ACALL ZERO
JB ENTER1,RESETCHECK2
ACALL WRONG1
AJMP RESETAGAIN2

RESETCHECK2:MOV R5,#04H
MOV R0,#70H
MOV R1,#75H
W22: MOV 2EH,@R0
MOV A,@R1
CJNE A,2EH,W11
INC R0
INC R1
DEC R5
DJNZ R5,W22
AJMP FINAL2
W11: ACALL WRONG1
AJMP MOD2



FINAL2: MOV 60H,70H
MOV 61H,71H
MOV 62H,72H
MOV 63H,73H
AJMP L33





KEY: ACALL KS1
JNZ LK1
ACALL DISPLAY
AJMP KEY
LK1: ACALL T12MS
ACALL KS1
JNZ LK2
AJMP KEY
LK2: MOV A,#0EFH
MOV R2,A
MOV R4,#00H
LK4: MOV A,R2
MOV P1,A
MOV A,P1
JB ACC.0,LONE
MOV A,#00H
AJMP LKP
LONE: JB ACC.1,LTWO
MOV A,#01H
AJMP LKP
LTWO: JB ACC.2,LTHR
MOV A,#02H
AJMP LKP
LTHR: JB ACC.3,NEXT
MOV A,#03H
LKP: ADD A,R4
PUSH ACC
LK3: ACALL KS1
JNZ LK3
POP ACC
RET
NEXT: INC R4
INC R4
INC R4
INC R4
MOV A,R2
JNB ACC.7, KND
RL A
MOV R2,A
AJMP LK4
KND: RET
KS1: MOV A,#0FH
MOV P1,A
MOV A,P1
CPL A
ANL A,#0FH
RET
T12MS:MOV R7,#18H
TM: MOV R6,#0FFH
TM6: DJNZ R6,TM6
DJNZ R7,TM
RET

DISPLAY:MOV R2,#04H
MOV R0,#50H
MOV R1,#01H
START2: MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P0,A
MOV A,R1
MOV P2,A
ACALL DL1
INC R0
MOV A,R1
RL A
MOV R1,A
DJNZ R2,START2
RET
TAB: DB 3FH, 06H,5BH,4FH,66H,6DH,7DH,07H,4FH,6FH,77H,7CH,39H,5EH,79H,71H
DL1: MOV R7,#02H
DL: MOV R6,#0FFH
DL6: DJNZ R6,DL6
DJNZ R7,DL
RET

WRONG1: CLR P3.2
MOV R7,#1EH
DL22: MOV R6,#0F9H
DL33: DJNZ R6,DL33
DJNZ R7,DL22
SETB P3.2
RET






WRONG: CLR P3.2
MOV R7,#1EH
DL2: MOV R6,#0F9H
DL3: DJNZ R6,DL3
DJNZ R7,DL2
SETB P3.2
ALARM: INC R3
CJNE R3,#03H,A1
AJMP WARN
A1: RET



WARN: CLR P3.4
MOV

R5,#06H
DL10: MOV R7,#0FFH
DL8: MOV R6,#0FFH
DL9: DJNZ R6,DL9
DJNZ R7,DL8
DJNZ R5,DL10
SETB P3.4
ACALL ZERO
A2: DEC R3
DEC R3
DEC R3
RET
ZERO: MOV 50H,#00H
MOV 51H,#00H
MOV 52H,#00H
MOV 53H,#00H
RET
END



相关主题
文本预览
相关文档 最新文档