??? 11/25/04 09:00 Read: times |
#81892 - about wiegand26 receive |
i used the ID-12 modual of the Innovations Crop as the reader,and the DATA0 and DATA1 of ID-12 is direct connected to the P14 and P15 of the 51,now i used the followed program to receive the card data from ID-12,but the program seems to work unproperly.
DATA0 EQU P1.4 DATA1 EQU P1.5 public WIEGAND_RXSTART ;global variable public BYTE_ADDR ; public RX_EVEN_CHECK public RX_ODD_CHECK BIT_VAR segment bit BYTE_VAR segment data proc segment code rseg BIT_VAR RX_EVEN_CHECK: DBIT 1 RX_ODD_CHECK: DBIT 1 EVEN_FLAG: DBIT 1 TIME_OUT_FLAG: DBIT 1 rseg BYTE_VAR BYTE_ADDR: DS 6 cseg at 000BH LJMP TIMER0_INT rseg proc WIEGAND_RXSTART: MOV A,TMOD ORL A,#01H MOV TMOD,A ;SETB EA SETB EVEN_FLAG CLR TIME_OUT_FLAG MOV R2,#6 MOV R3,#4 MOV R0,#BYTE_ADDR MOV TH0,#00H ;65.536ms time-out MOV TL0,#00H SETB TR0 WIEGAND_BEGIN: JB TIME_OUT_FLAG,ERR ; WIEGAND_1: JNB DATA0,WIEGAND_2 JB DATA1,WIEGAND_BEGIN JB TIME_OUT_FLAG,ERR MOV TH0,#0F8H MOV TL0,#30H CLR TIME_OUT_FLAG SETB TR0 LCALL DELAY25US MOV C,DATA0 LCALL DELAY175US JNB DATA1,ERR LJMP WIEGAND_3 WIEGAND_2: NOP JB TIME_OUT_FLAG,ERR MOV TH0,#0F8H MOV TL0,#30H CLR TIME_OUT_FLAG SETB TR0 LCALL DELAY25US MOV C,DATA0 LCALL DELAY175US JNB DATA0,ERR WIEGAND_3: JNB EVEN_FLAG,WIEGAND_DATA MOV RX_EVEN_CHECK,C CLR EVEN_FLAG LJMP WIEGAND_1 WIEGAND_DATA: RLC A DJNZ R3,WIEGAND_1 ANL A,#00001111B MOV @R0,A INC R0 MOV R3,#4 DJNZ R2,WIEGAND_1 ODD: JNB DATA0,ODD_BIT JB DATA1,ODD ODD_BIT: NOP LCALL DELAY25US MOV C,DATA0 MOV RX_ODD_CHECK,C RET DELAY25US: MOV R4,#11 DELAY25US_A: DJNZ R4,DELAY25US_A NOP RET DELAY175US: MOV R4,#86 DELAY175US_A: DJNZ R4,DELAY175US_A NOP RET TIMER0_INT: SETB TIME_OUT_FLAG CLR TR0 RETI ERR: NOP ;LJMP WIEGAND_START RET END |
Topic | Author | Date |
about wiegand26 receive | 01/01/70 00:00 | |
no need to use timer here | 01/01/70 00:00 | |
the program i listed is a subroutine. | 01/01/70 00:00 | |
Feng Shui | 01/01/70 00:00 | |
no time to look at | 01/01/70 00:00 | |
now i past the progarm with comment. | 01/01/70 00:00 | |
minor suggestion | 01/01/70 00:00 | |
CLR TR0 is in t0 interrupt subroutine | 01/01/70 00:00 | |
The Odd Bit | 01/01/70 00:00 | |
wait for the odd bit! | 01/01/70 00:00 | |
Sorry, my fault![]() | 01/01/70 00:00 |