📄 hong.asm
字号:
;**************************************************************
;*------------------ 红外遥控电子密码锁程序-------------------*
;*------------------------------------------------------------*
;*-----------------------MCS-51汇编语言----------------------*
;*------------------------------------------------------------*
;*-----------------------CPU: AT89C51-------------------------*
;*------------------------------------------------------------*
;*-----------------------程序名:MMS.asm-----------------------*
;*------------------------------------------------------------*
;*-----------------------设计人: 雷道仲----------------------*
;**************************************************************
ORG 0000H ;主程序
CLR P1.7 ;清零
MOV R0, #00H
CLR P1.3 ;关报警
CLR P1.7 ;P1.7清零(关锁)
CLR P1.4 ;关报警
MOV R0,#00H ;串行口初始化
MOV 52H,#02H ;将立即数02h送52h
MOV TMOD,#20H ;设置T1工作为方式2
MOV TL1,#0F4H ;定时初始值送TL1
MOV TH1,#0F4H ;定时初始值送TH1
SETB TR1 ;启动定时器T1
MOV SCON,#0D0H ;定义串行口工作在方式3
MOV PCON,#00
KEY: JNB P1.5,KEP1 ;选择密码57618
LJMP KEP2
***********************************密码57618程序
KEP1: MOV P2,#0FFH ;关显示
MOV A,P0 ;判断是否有键按下
CPL A ;对p0口的数据取反
ANL A,#0FFH ;立即数ff与p0的数据相与
JNZ JP ;有键按下转至jp
MOV A, P1 ;判断是否有键按下
CPL A ;将p1口的数据取反
ANL A,#07H ;累加器数据为零转遥控接收程序
JZ WAIT
ACALL D10MS ;调用10秒延时
MOV A ,P1
CPL A
ANL A,#07H
JZ WAIT
PP: CJNE A, #01H,JP1
MOV P2, #89H ;显示字符”H”
LJMP K0P1
PP: CJNE A, #02H,JP2
MOV P2, #89H ;显示字符”H”
LJMP K0P1
JP2: CJNE A, #04H,KY
MOV P2, #89H ;显示字符”H”
JP3: MOV A, P1
ANL A, #07H
CJNE A, #07H,JP3
LJMP LP1
K0P1: MOV A, P1
ANL A, #07H
CJNE A, #07H,K0P1
LJMP KEP1
JP: LCALL D10MS
MOV A ,P0
CPL A
ANL A, #0FFH
JZ C6
CJNE A, #01H,KEY02
MOV P2, #89H
LJMP KEY1
KEY02: CJNE A, #02H,KEY03
MOV P2, #89
LJMP KEY1
KEY02: CJNE A, #02H,KEY03
MOV P2, #89H
LJMP KJP1
KEY03: CJNE A, #04H,KEY04
MOV P2, #89
LJMP KJP1
KEY04: CJNE A, #08H,KEY05
MOV P2, #89H
LJMP KJP1
KEY05: CJNE A, #10H,KEY06
MOV P2, #89H
LJMP KJP1
KEY06: CJNE A, #08H,KEY07
MOV P2, #89H
LJMP KJP1
KEY07: CJNE A, #10H,KEY08
MOV P2, #89H
LJMP KJP1
KEY08: CJNE A, #10H,C6
MOV P2, #89H
LJMP KJP1
KJP1: MOV A, P0
CJNE A, #0FFH,KJP1
C6: LJMP WAIT
;******************************************************************
KEY1: LCALL MP
CJNE A, #02H,KEY03
MOV P2, #89H
KEY2: LCALL MP
CJNE A, #04H,KEY02
MOV P2, #89H
KEY3: LCALL MP
CJNE A, #08H,KEY02
MOV P2, #89H
KEY4: LCALL MP
CJNE A, #10H,KEY02
MOV P2, #89H
KEY5: MOV A, P0
CJNE A, #0FFH,KEY5
MOV P2 #0FFH
MOV R5, #30H
KEY6: MOV A, P0
CPL A
ANL A, #0FFH
JNZ BB2
MOV A, P1
CPL A
ANL A, #07H
JZ BB1
LCALL D10MS
MOV A, P1
CPL A
ANL A, #07H
JZ
CJNE A, #04H,B1
MOV P2, #89H
LJMP LP2
B1: CJNE A, #01H,BL1
MOV P2, #89H
LJMP K0P1
BL1: CJNE A, #02H,BB1
MOV P2, #89H
LJMP K0P1
BB2: LCALL D10MS
MOV A, P0
CPL A
ANL A, #0FFH
JZ BB1
LJMP KEY02
BB1: MOV R7, #0C8H
BB4: MOV R6, #0F9H
NOP
NOP
BB5: JNZ R6, BB5
DJNZ R7, BB4
DJNZ R5, KEY6
LJMP WAIT
*****************************************************密码81675程序
KEP2: MOV P2, #0FFH ;关显示
MOV A, P0
CPL A
ANL A, #0FFH
JNZ HP
MOV A, P1
CPL A
ANL A, #07H
JZ C9
LCALL D10MS
MOV A, P1
CPL A
ANL A, #07H
JZ C9
BB: CJNE A, #01H,HP1
MOV P2, #89H
LJMP K1P1
HP1: CJNE A, #02H,HP2
MOV P2, #89H
LJMP K1P1
HP2: CJNE A, #04H,C9
MOV P2, #89H
HP3: MOV A, P1
ANL A, #07H
CJNE A, #07H,HP3
MOV P2, #0FFH
LJMP LP1
K1P1: MOV A, P1
ANL A, #07H
CJNE A, #07H,K1P1
C9: LJMP WAIT
HP: LCALL D10MS
MOV A, P0
CPL A
ANL A, #0FFH
JZ C9
CJNE A, #10H,K0Y02
MOV P2, #89H
LJMP K0Y1
K0Y02: CJNE A, #01H,K0Y03
MOV P2, #89H
LJMP K0UP1
K0Y03: CJNE A, #02H, K0Y04
MOV P2, #89H
LJMP KUP1
K0Y04: CJNE A, #04H,K0Y05
MOV P2, #89H
LJMP KUP1
K0Y05: CJNE A, #08H,K0Y06
MOV P2, #89H
LJMP KUP1
K0Y06: CJNE A, #20H,K0Y07
MOV P2, #89H
LJMP KUP1
K0Y07: CJNE A, #40H,K0Y08
MOV P2, #89H
LJMP KUP1
K0Y08: CJNE A, #80H,U2
MOV P2, #89H
LJMP KUP1
KUP1: MOV A, P0
CJNE A, #0FFH,KUP1
U2: LJMP WAIT
K0Y1: LCALL MP
CJNE A, #08H,K0Y02
MOV P2, #89H
K0Y1: LCALL MP
CJNE A, #08H, K0Y02
MOV P2, #89H
K0Y2: LCALL MP
CJNE A, #04H,K0Y02
MOV P2, #89H
K0Y3: LCALL MP
CJNE A, #02H,K0Y02
MOV P2, #89H
K0Y4: LCALL MP
CJNE A, #01H,K0Y03
MOV P2, #89H
K0Y6: MOV A, P0
CPL A
ANL A, #0FFH
JNZ PP2
MOV A, P1
CPL A
ANL A, #07H
JZ PPL
LCALL D10MS
MOV A, P1
CPL A
ANL A, #07H
JZ PP1
CJNE A, #04H,Y1
MOV P2, #89H
LJMP LP2
Y1: CJNE A, #01H,Y11
MOV P2, #89H
LJMP K1P1
Y11: CJNE A, #02H,PP1
MOV P2, #89H
LJMP K1P1
PP2: LCALL D10MS
MOV A, P0
CPL A
ANL A, #0FFH
JZ PP1
LJMP K0Y02
PP1: MOV R7, #0C8H
PP4: MOV R6, #OF9H
NOP
NOP
PP5: DJNZ R6, PP5
DJNZ R7, PP4
DJNZ R5, K0Y6
LJMP WAIT
;*******************************************************报警程序
LP1: SETB P1.4
INC R0
P019: MOV R3, #05H
P020: MOV R7, #0A0H
P018: SETB P1.3
LCALL P01A
CLR P1.3
LCALL P01A
DJNZ R7, P018
DJNZ R3, P020
CLR P1.3
CJNE R0, #03H,P017
LJMP P019
P017: CLR P1.4
LJMP WAIT
;**********************************************开锁程序
LP2: SETB P1.7
LCALL T5S
CLR P1.7
MOV R0, #00H
LJMP WAIT
;************************************************判断键是否释放
MP: MOV A, P0
CJNE A, #0FFH, MP
MOV P2, #0FFH
PM: MOV R5, #30H
LCALL TP
RET
;*********************************************判断是否有键按下
TP: MOV A, P0
CPL A
ANL A, #0FFH
JNZ AP
MOV A, P1
CPL A
ANL A, #07H
JZ TP3
LCALL D10MS
MOV A, P1
CPL A
ANL A, #07H
JZ TP3
LCALL D10MS
MOV A, P1
CPL A
ANL A, #07H
JZ TP3K
CJNE A, #04H,C1
MOV P2, #89H
C3: MOV A, P1
ANL A, #07H
CJNE A, #07H,C3
MOV P2, #0FFH
LJMP LP1
C1: CJNE A, #01H,C2
MOV P2, #0C0H
LJMP KCP1
C2: CJNE A, #02H,U11
MOV P2, #90HP
LJMP KCP1
KCP1: MOV A, P1
ANL A, #07H
CJNE A, #07H,KCP1
U11: LJMP WAIT
AP: LCALL D10MS
MOV A, P0
CPL A
ANL A, #0FFH
JZ TP3
RET
;******************************************************400MS延时程序
TP3: MOV R7, #0C8H
TP1: MOV R6, #0F9H
NOP
NOP
TP2: DJNZ R6, TP2
DJNZ R7, TP1
DJNZ R5, TP ;10S
LJMP WAIT
;**********************************************10MS延时程序
D10MS: MOV R7, #05H
LOOP1: MOV R6, #0F9H
NOP
NOP
LOOP2: DJNZ R6, LOOP2
DJNZ R7, LOOP1
RET
;*************************************************** 延时程序
P01A: MOV R2, #06H
LCALL DELY
RET
DELY: PUSH 02H
DEL2: PUSH 02H
DEL3: PUSH 02H
DEL4: DJNZ R2, DEL4
POP 02H
DJNZ R2, DEL3
POP 02H
DJNZ R2, DEL2
POP 02H
DJNZ R2, DELY
RET
;***************************************************5S延时程序
T5S: MOV R4, #15H
TS1: MOV R3, #64H
TS2: MOV R2, #05H
TS3: MOV R1, #0F9H
NOP
NOP
TS4: DJNZ R1, TS4
DJNZ R2, TS3
DJNZ R3, TS2
DJNZ R4, TS1
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -