📄 程序调试成功.txt
字号:
;======EQU=======================================
RDD EQU P1.2
RCP EQU P1.3
RDD1 EQU P2.1
RCP1 EQU P2.2
RDD2 EQU P2.3
RCP2 EQU P2.4
KEY2 EQU P3.2
GREEN EQU P1.1
RED EQU P1.0
EMMF EQU P2.0 ;1=MF 0=EM
;=================equ===manchester====================
MBLK EQU 30H
TLL EQU 31H
TLH EQU 32H
THL EQU 33H
THH EQU 34H
TDL EQU 35H
TDL1 EQU 36H
TD_LS EQU 37H
WIE_LS EQU 38H
BLK1 EQU 50H
WIE_ADR EQU 50H
OK BIT 7FH
FEED BIT 7DH
REED BIT 7CH
RD_ERA BIT 7BH
WIE_ST BIT 7AH
WIE_END BIT 79H
OUT EQU P3.7
;=======ORG========================================
ORG 0000H
LJMP STAR
ORG 0030H
;=============STAR=================================
STAR:JB EMMF,abc
CLR GREEN
SETB RED ;初始时绿灯亮,红灯灭
WIE:JNB KEY2,JMF
GJK:JB RDD,WIE_1 ;进门状态
CLR RDD1
LCALL TWIE
SETB RDD1
WIE_1:JB RCP,WIE
CLR RCP1
LCALL TWIE
SETB RCP1
JMP WIE
JMF: JB KEY2,GJK
LCALL DL10MS
JB KEY2,GJK
JR: CLR RED ;出门状态
SETB GREEN
LCALL DL10MS
JNB KEY2,JR
WIE11:JNB KEY2,STAR2
GJK2:JB RDD,WIE_22
CLR RDD2
LCALL TWIE
SETB RDD2
WIE_22:JB RCP,WIE11
CLR RCP2
LCALL TWIE
SETB RCP2
JMP WIE11
STAR2:JB KEY2, GJK2
LCALL DL10MS
JB KEY2, GJK2
JG: CLR GREEN ;出门状态
SETB RED
LCALL DL10MS
JNB KEY2,JG
JMP STAR
;=======MAIN==================================
abc:clr green
setb red
jmp main
;================manchester change wiegand=============================
main:jnb key2,zzza
zzzb:MOV R7,#0FDH
MOV R0,#02H
CLR A
STR1: MOV @R0,A
INC R0
DJNZ R7,STR1
MOV TLL,#28
MOV TLH,#56
MOV THL,#64
MOV THH,#112
MOV TDL,#180
MOV TDL1,#50
MOV MBLK,#04
LCALL RD_M
JNB OK,MAIN
CLR OK
MOV R0,#BLK1
MOV R1,#BLK1+8
MOV R7,#08H
MAINA1:MOV A,@R0
INC R0
MOV R2,A
MOV A,@R1
INC R1
CJNE A,02H,MAIN
DJNZ R7,MAINA1
LCALL RD_AA
jb rd_era,main
lcall output_32
MAINA3A:MOV TD_LS,#10H
MAINA3: CLR OK
MOV MBLK,#04
cpl dog_rst
LCALL RD_M
cpl dog_rst
JB OK,MAINA3b
DJNZ TD_LS,MAINA3
mainc4: JMP MAIN
maina3b:MOV R0,#BLK1
MOV R1,#BLK1+8
MOV R7,#08H
MAINAg: MOV A,@R0
INC R0
MOV R2,A
MOV A,@R1
INC R1
CJNE A,02H,mainc4
DJNZ R7,MAINAg
CPL DOG_RST
sjmp MAINA3A
sjmp main
zzza:jb key2,zzzb
lcall dl10ms
jb key2,zzzb
zzzc: clr red
setb green
lcall dl10ms
jnb key2,zzzc
jmp zzzP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ZZZW:JNB KEY2,ZZZM
ZZZP: MOV R7,#0FDH
MOV R0,#02H
CLR A
STR1QQ: MOV @R0,A
INC R0
DJNZ R7,STR1QQ
MOV TLL,#28
MOV TLH,#56
MOV THL,#64
MOV THH,#112
MOV TDL,#180
MOV TDL1,#50
MOV MBLK,#04
LCALL RD_M
JNB OK,ZZZW
CLR OK
MOV R0,#BLK1
MOV R1,#BLK1+8
MOV R7,#08H
MAINA1QQ:MOV A,@R0
INC R0
MOV R2,A
MOV A,@R1
INC R1
CJNE A,02H,ZZZW
DJNZ R7,MAINA1QQ
LCALL RD_AA
jb rd_era,ZZZW
lcall output_32QQ
MAINA3Aqq:MOV TD_LS,#10H
MAINA3qq: CLR OK
MOV MBLK,#04
cpl dog_rst
LCALL RD_M
cpl dog_rst
JB OK,MAINA3bqq
DJNZ TD_LS,MAINA3qq
mainc4qq:JMP zzzw
maina3bqq:MOV R0,#BLK1
MOV R1,#BLK1+8
MOV R7,#08H
MAINAgqq: MOV A,@R0
INC R0
MOV R2,A
MOV A,@R1
INC R1
CJNE A,02H,mainc4qq
DJNZ R7,MAINAgqq
CPL DOG_RST
sjmp MAINA3Aqq
sjmp ZZZW
zzzM:jb key2,zzzW
lcall dl10ms
jb key2,zzzW
zzzcC: clr GREEN
setb RED
lcall dl10ms
jnb key2,zzzcC
jmp MAIN
output_32QQ:push 07h
push 06h
mov r7,#4
mov r6,#8
mov r0,#50h
lcall dog_rst
out_put1QQ:mov a,@r0
inc r0
out_put2QQ:rlc a
jc out_put3QQ
clr rdd2
lcall twie1
setb rdD2
lcall twie2
jmp out_put4QQ
out_put3QQ:clr rcp2
lcall twie1
setb rcp2
lcall twie2
out_put4QQ:lcall dog_rst
djnz r6,out_put2QQ
mov r6,#8
mov a,@r0
inc r0
djnz r7,out_put2QQ
lcall twie2
pop 06h
pop 07h
ret
twie1:push 05h
mov r5,#26h
djnz r5,$
pop 05h
ret
twie2:push 04h
push 05h
mov r5,#0
mov r4,#04h
twie2a:djnz r5,$
lcall dog_rst
djnz r4,twie2a
pop 05h
pop 04h
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
output_32:push 07h
push 06h
mov r7,#4
mov r6,#8
mov r0,#50h
lcall dog_rst
out_put1:mov a,@r0
inc r0
out_put2:rlc a
jc out_put3
clr rdd1
lcall twie1
setb rdd1
lcall twie2
jmp out_put4
out_put3:clr rcp1
lcall twie1
setb rcp1
lcall twie2
out_put4:lcall dog_rst
djnz r6,out_put2
mov r6,#8
mov a,@r0
inc r0
djnz r7,out_put2
lcall twie2
pop 06h
pop 07h
ret
;==READ MANCHESTER CODE===========================
;INPUT:MBLK OUT:OK
RD_M: LCALL EDGEM
JB OK,RD_OK
RET
RD_M0: CLR OK
RET
RD_OK: NOP
RD_M1: MOV R7,MBLK;MAX BLOCK
MOV R0,#BLK1;READ TO BLK1_BLK7
MOV R6,#40H
RD_MA2: JB OUT,RD_MA5
MOV A,#00H
RD_MA3: CJNE A,TDL1,RD_MA4
JMP RD_M0
RD_MA4: JB OUT,RD_MAK
INC A
JMP RD_MA3
RD_MA5: MOV A,#00H
RDMA5: CJNE A,TDL1,RD_MA6
JMP RD_M0
RD_MA6: JNB OUT,RD_MAK
INC A
JMP RDMA5
RD_MAK: MOV C,OUT
CPL C
MOV A,@R0
RLC A
MOV @R0,A
CJNE A,#7FH,RD_MB0
MOV R1,TDL
DJNZ R1,$
call DOG_RST
INC R0
JMP RD_ML0
RD_MB0: MOV R1,TDL
DJNZ R1,$
call DOG_RST
DJNZ R6,RD_MA2
JMP RD_M0
RD_ML0: MOV R6,#0FH
RD_ML1: MOV R5,#08H
RD_ML2: JB OUT,RD_ML5
MOV A,#00H
RD_ML3: CJNE A,TDL1,RD_ML4
JMP RD_M0
RD_ML4: JB OUT,RD_MLK
INC A
JMP RD_ML3
RD_ML5: MOV A,#00H
RDML5: CJNE A,TDL1,RD_ML6
JMP RD_M0
RD_ML6: JNB OUT,RD_MLK
INC A
JMP RDML5
RD_MLK: MOV C,OUT
CPL C
MOV A,@R0
RLC A
MOV @R0,A
MOV R1,TDL
DJNZ R1,$
call DOG_RST
DJNZ R5,RD_ML2
INC R0
DJNZ R6,RD_ML1
SETB OK
RET
;=====CHECK EDGE_M=====
EDGEM: MOV R7,#00H
EDGEO: SETB FEED
CLR REED
DJNZ R7,EDGE1
EDGER: CLR OK
RET
EDGE1: mov r5,#00h
edge1b: call DOG_RST
nop
nop
JB OUT,EDGE1a
djnz r5,edge1b
jmp edger
edge1a: mov r6,#00h
call DOG_RST
call DOG_RST
EDGE2: djnz r6,edge2a
jmp edger
edge2a: JB OUT,EDGE2
MOV A,#0ffh
clr c
subb a,r6
inc a
mov dpl,a
call DOG_RST
EDGE3: CLR C
SUBB A,TLL
JC EDGER
MOV A,DPL
CLR C
SUBB A,TLH
JC EDGEO
MOV A,DPL
CLR C
SUBB A,THL
JC EDGER
MOV A,DPL
CLR C
SUBB A,THH
JNC EDGEO
call DOG_RST
mov r6,#00h
EDGE4: djnz r6,edge4a
jmp edger
edge4a: JNB OUT,EDGE4
MOV A,#0ffh
clr c
subb a,r6
mov dpl,a
CLR C
SUBB A,TLL
JC EDGEQ
MOV A,DPL
CLR C
SUBB A,TLH
JNC EDGEQ
MOV R1,TDL
DJNZ R1,$
SETB OK
RET
EDGEQ: CLR OK
RET
RD_AA: MOV R0,#BLK1+2
MOV R1,#BLK1+10H
MOV R7,#08H
MOV R6,#08H
MOV R5,#01H
MOV R2,#00H
MOV A,@R0
INC R0
ANL A,#0FH
MOV R2,A
MOV A,@R0
INC R0
MOV R3,A
RD_AA2: MOV A,R3
RLC A
MOV R3,A
MOV A,R2
RLC A
MOV R2,A
DJNZ R5,RD_AA1
MOV @R1,A
INC R1
MOV R5,#05H
MOV R2,#00H
DJNZ R7,RD_AA1
JMP RD_BB1
RD_AA1: DJNZ R6,RD_AA2
MOV R6,#08H
MOV A,@R0
INC R0
MOV R3,A
JMP RD_AA2
RD_BB1: MOV R0,#BLK1+10H
MOV R7,#08H
RD_BB2: MOV A,@R0
JB P,RD_ERR
CLR C
RRC A
MOV @R0,A
INC R0
DJNZ R7,RD_BB2
MOV R0,#BLK1+10H
MOV R1,#BLK1
MOV R7,#04H
RD_BB3: MOV A,@R0
ANL A,#0FH
SWAP A
MOV R2,A
INC R0
MOV A,@R0
ANL A,#0FH
ORL A,R2
INC R0
MOV @R1,A
INC R1
DJNZ R7,RD_BB3
CLR RD_ERA
RET
RD_ERR: SETB RD_ERA
ret
DOG_RST:mov 0a6h,#01eh
mov 0a6h,#0e1h
ret
;=============================================
;==================WIEMANGNAD TIME===========
TWIE:PUSH 05H
MOV R5,#26H
DJNZ R5,$
POP 05H
RET
;=========================================
;=============DL10MS======================
DL10MS:MOV R7,#2BH
LOOP1:MOV R6,#0B2H
LOOP2:DJNZ R6,LOOP2
DJNZ R7,LOOP1
RET
;=========================================
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -