運用單片機之間的串口通信實現(xiàn)電子密碼鎖的功能。使用單片機自身有的串口可以很方便的實現(xiàn)單片機之間的通信,使輸入的密碼值傳送到主機,檢驗是否是正確的密碼。該電子密碼鎖分兩部分,一部分在外部,有鍵盤部分和密碼顯示;另一部分在內(nèi)部,有密碼設(shè)置和顯示。
ORG 0000H
ajmp main
org 0030h
main: MOV SP,#70
MOV SCON,#50H
MOV TMOD,#20H
MOV TH1,#0F3H
SETB TR1
MOV R7,#00H ;延時
DJNZ R7,$
MOV R7,#10H ;內(nèi)定密碼在TABLE的起始地址
MOV R6,#06 ;內(nèi)定6個密碼
MOV R1,#35H ;6個密碼分別存入35H~30H地址
L1: MOV A,R7 ;內(nèi)定密碼取碼指針
MOV DPTR,#TABLE ;數(shù)據(jù)指針指到TABLE
MOVC A,@A+DPTR ;至TABLE取碼
MOV @R1,A ;存入35H~30H地址
DEC R1 ;存下一個地址
INC R7 ;取碼指針加1
DJNZ R6,L1
START:ORL P3,#0FFH ;清除P2
SETB P3.2
MOV R4,#06 ;清除顯示器存放地址40H~45H的地址
MOV R0,#40H
CLEAR:MOV @R0,#00H
INC R0
DJNZ R4,CLEAR
L2: MOV R3,#0F7H ;掃描指針初值
MOV R1,#00H ;鍵盤取碼指針
L3: MOV A,R3
MOV P1,A
MOV A,P1
MOV R4,A
SETB C
MOV R5,#04H
L4: RLC A
JNC KEYIN
INC R1
DJNZ R5,L4
CALL DISP
MOV A,R3
SETB C
RRC A
MOV R3,A
JC L3
lcall LLL
JMP L2
KEYIN:MOV A,R1
XRL A,#0EH
JZ X3
MOV A,R1
XRL A,#0FH
JZ X4
MOV R7,#10
D1: MOV R6,#248
DJNZ R6,$
DJNZ R7,D1
D2: MOV A,P1
XRL A,R4
JZ D2
MOV A,R1
MOV DPTR,#TABLE
MOV R7,A
XRL A,#0AH
JZ SET0
MOV A,R7
XRL A,#0BH
JZ START
MOV A,R7
XRL A,#0CH
JZ L2
MOV A,R7
XRL A,#0DH
JZ L2
MOV A,R7
XCH A,40H
XCH A,41H
XCH A,42H
XCH A,43H
XCH A,44H
XCH A,45H
CALL DISP
JMP L2
X3: JMP DISP2
X4: JMP COMP
DISP: MOV R0,#45H
DISP1:MOV A,@R0
ADD A,#50H ;顯示D6
MOV P0,A
CALL DELAY
DEC R0
MOV A,@R0 ;D5數(shù)據(jù)值加上74138掃描值
ADD A,#40H ;顯示D5
MOV P0,A
CALL DELAY
DEC R0
MOV A,@R0 ;D4數(shù)據(jù)值加上74138掃描值
ADD A,#30H ;顯示D4
MOV P0,A ;掃描延時
CALL DELAY
DEC R0
MOV A,@R0 ;D3數(shù)據(jù)值加上74138掃描值
ADD A,#20H ;顯示D3
MOV P0,A ;掃描延時
CALL DELAY
DEC R0
MOV A,@R0 ;D2數(shù)據(jù)值加上74138掃描值
ADD A,#10H ;顯示D2
MOV P0,A ;掃描延時
CALL DELAY
DEC R0
MOV A,@R0 ;D1數(shù)據(jù)值加上74138掃描值
ADD A,#00H ;顯示D1
MOV P0,A ;掃描延時
CALL DELAY
RET
SET0: MOV R2,#06H
MOV R0,#40H
MOV R1,#30H
E1: MOV A,@R0
XCH A,@R1
INC R0
INC R1
DJNZ R2,E1
CALL DELAY
E2: JMP START
COMP: MOV R1,#45H
MOV R0,#35H
MOV R2,#06H
C1: MOV A,@R1
XRL A,@R0
JNZ C3
DEC R1
DEC R0
DJNZ R2,C1
CLR P3.2
MOV R2,#0FFH
C2: MOV R6,#0FFH
DJNZ R6,$
DJNZ R2,C2
C3: JMP START
DISP2:
MOV R0,#35H
CALL DISP1
MOV A,P1
XRL A,R4
JZ DISP2
CALL DELAY
JMP START
DELAY:MOV R7,#03
D3: MOV R6,#248
DJNZ R6,$
DJNZ R7,D3
RET
Lll: JBC RI,UART
call disp
ret
UART: MOV A,SBUF
MOV R7,A
XRL A,#0AH
JZ COMPQ
AJMP COMPA
COMPQ: LJMP COMP
COMPA: MOV A,R7
|