📄 no1.asm
字号:
;------------------------------------------------------------
;------------------------------------------------------------
; Wiegand to Rs232
; V0.1c
; zhongwh
; Copyright 2003-2005
; Email: hfkj01@163.com
; mtel : 13708004895
; 2005-9-22 15:38:52
; Compiled with Keil uVision2 for the 8051 series
;-------------------------------------------------------------
;-------------------------------------------------------------
; Target : at89c2051
; Crystal: 11.0592Mhz
;-------------------------------------------------------------
;-------------------------------------------------------------
WD0 BIT P1.0
WD1 BIT P1.1
ERR EQU 50H
TEMP0 EQU 51H
TEMP1 EQU 52H
OK_DATA1 EQU 53H
OK_DATA2 EQU 54H
OK_DATA3 EQU 55H
OK_DATA4 EQU 56H
OK_DATA5 EQU 57H
OK_DATA6 EQU 58H
DSD EQU 60H
;-------------------------------------------------------------
ORG 0000H
AJMP MAIN
;
ORG 0003H
RETI ;int0
;
ORG 000BH ;timer 0
RETI
;
ORG 0013H ;int1
RETI
;
ORG 001BH ;timer 1
RETI
;
ORG 0023H ;com
RETI
;-----------------------------------
;-----------------------------------
ORG 0030H
MAIN:
MOV SP,#30H
CALL INIT_RS232COM
SETB TI
CALL DELAY
LOOP:
MOV ERR,#00H
CALL READ_DATA
CALL JS_CRC
MOV A,ERR
CJNE A,#01H,LOOP
CALL JS_DATA_H_L ;H-->L
CALL SENDBYTE
JMP LOOP
;------------------------------------------
READ_DATA:
NOP
NOP
MOV R0,#DSD
LOP5: CALL R_MC1
MOV A,R0
CJNE A,#7AH,LOP5
RET
;------------------------------------------
;------------------------------------------
R_MC1: JNB WD0,LOP1
MOV A,TEMP0
CJNE A,#5AH,LOP4
MOV @R0,#00H
INC R0
MOV TEMP0,#00H
LOP4: JNB WD1,LOP2
MOV A,TEMP1
CJNE A,#5AH,LOP3
MOV @R0,#01H
INC R0
MOV TEMP1,#00H
LOP3: RET
LOP1: MOV TEMP0,#5AH
JMP R_MC1
LOP2: MOV TEMP1,#5AH
JMP R_MC1
;------------------------------------------
;------------------------------------------
JS_DATA_H_L:
MOV R0,#DSD
INC R0
MOV A,@R0
MOV B,#80H
MUL AB
MOV OK_DATA1,A ;7
;
INC R0
MOV A,@R0
MOV B,#40H
MUL AB
MOV B,A
MOV A,OK_DATA1
ADD A,B
MOV OK_DATA1,A ;6
;
INC R0
MOV A,@R0
MOV B,#20H
MUL AB
MOV B,A
MOV A,OK_DATA1
ADD A,B
MOV OK_DATA1,A ;5
;
INC R0
MOV A,@R0
MOV B,#10H
MUL AB
MOV B,A
MOV A,OK_DATA1
ADD A,B
MOV OK_DATA1,A ;4
;
INC R0
MOV A,@R0
MOV B,#8H
MUL AB
MOV B,A
MOV A,OK_DATA1
ADD A,B
MOV OK_DATA1,A ;3
;
INC R0
MOV A,@R0
MOV B,#4H
MUL AB
MOV B,A
MOV A,OK_DATA1
ADD A,B
MOV OK_DATA1,A ;2
;
INC R0
MOV A,@R0
MOV B,#2H
MUL AB
MOV B,A
MOV A,OK_DATA1
ADD A,B
MOV OK_DATA1,A ;1
;
INC R0
MOV A,@R0
MOV B,A
MOV A,OK_DATA1
ADD A,B
DA A
MOV OK_DATA1,A ;0
;
RET
;------------------------------------------
;------------------------------------------
JS_CRC: ;偶
MOV R0,#DSD
MOV A,@R0
INC R0
LOP7: XRL A,@R0
INC R0
CJNE R0,#6DH,LOP7
JNZ LOP8
MOV ERR,#01H ;OK
;;
MOV A,@R0 ;奇
INC R0
LOP9: XRL A,@R0
INC R0
CJNE R0,#7AH,LOP9
JZ LOP8
MOV ERR,#01H ;OK
;-----------------------------------------
RET
LOP8: MOV ERR,#00H ;err
RET
;------------------------------------------
;------------------------------------------
INIT_RS232COM:
ORL PCON,#10000000B ;SMOD=1 T1
MOV TMOD,#00100000B
MOV TH1,#0fah ;FA=9600BPS;FD=19200
MOV TL1,#0fah
SETB TR1 ;TR1=1
ORL SCON,#01000000B ;MODE=1
RET
;------------------------------------------
SENDBYTE:
CALL TXW
MOV SBUF,OK_DATA1
RET
SENDBYTE1:
MOV R0,#DSD
looop: MOV A,@R0
CALL TXW
MOV SBUF,a
INC R0
CJNE R0,#7AH,LOOOP
ret
;-----------------------------------------------
DELAY: MOV R7,#30H ;12ms
LD1: MOV R6,#0F8H
DJNZ R6,$
DJNZ R7,LD1
RET
;-----------------------------------------------
TXW: JBC TI, JEXT
JMP TXW
JEXT: RET
;-----------------------------------------------
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -