📄 id-15.asm
字号:
GP8_DATA0 EQU P1.7
GP8_DATA1 EQU P1.6
ADDR_1 EQU 30H
EVEN_CHECK EQU 00H
ODD_CHECK EQU 01H
EVEN_FLAG EQU 02H
TIME_OUT_FLAG EQU 03H
ORG 800BH
LJMP TIMER0_IN
ORG 80F0H
WIEGAND_START:
SETB P1.3
MOV TMOD,#01H
SETB EA
SETB EVEN_FLAG
CLR TIME_OUT_FLAG
MOV R2,#6
MOV R3,#4
MOV R0,#ADDR_1
WIEGAND1:
JNB GP8_DATA0,WIEGAND2
JB GP8_DATA1,WIEGAND1
JB TIME_OUT_FLAG,ERR
MOV TH0,#0F8H
MOV TL0,#30H
CLR TIME_OUT_FLAG
SETB TR0
LCALL DELAY25US
MOV C,GP8_DATA0
LCALL DELAY175US
JNB GP8_DATA1,ERR
LJMP WIEGAND3
WIEGAND2:
NOP
JB TIME_OUT_FLAG,ERR
MOV TH0,#0F8H
MOV TL0,#30H
CLR TIME_OUT_FLAG
SETB TR0
LCALL DELAY25US
MOV C,GP8_DATA0
LCALL DELAY175US
JNB GP8_DATA1,ERR
WIEGAND3:
JNB EVEN_FLAG,WIEGAND_DATA
MOV EVEN_CHECK,C
CLR EVEN_FLAG
LJMP WIEGAND1
WIEGAND_DATA:
RLC A
DJNZ R3,WIEGAND1
ANL A,#00001111B
MOV @R0,A
INC R0
MOV R3,#4
DJNZ R2,WIEGAND1
ODD:
JNB GP8_DATA0,ODD_BIT
JB GP8_DATA1,ODD
ODD_BIT:
NOP
LCALL DELAY25US
MOV C,GP8_DATA0
MOV ODD_CHECK,B
NOP
CPL P1.3
LJMP WIEGAND_START; 读完
DELAY25US:
MOV R4,#11
D1:DJNZ R4,D1
NOP
RET
DELAY175US:
MOV R4,#86
D2:DJNZ R4,D2
NOP
RET
TIMER0_IN:
SETB TIME_OUT_FLAG
CLR TR0
RETI
ERR:
NOP
LJMP WIEGAND_START
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -