⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 no1.asm

📁 适用与MCS-51系列单片机的维根26转RS232驱动程序(汇编语言).
💻 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 + -