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

📄 chiplib.asm

📁 51下的AMBE2000驱动程序
💻 ASM
字号:
NAME CHIP_LIB

	TLV320_DCSI		EQU		96H		;P1.6
	TLV320_SCLK		EQU		97H		;P1.7
	
	AMBE_CHAN_TX_STRB		EQU		85H		;P0.5
	AMBE_CHAN_RX_STRB		EQU		84H		;P0.4
	AMBE_CLK				EQU		80H		;P0.0
	AMBE_CHAN_TX_DATA		EQU		82H		;P0.2
	AMBE_CHAN_RX_DATA		EQU		81H		;P0.1
	
	EXTRN			DATA	(AMBE2000BUF)

	DELAY_NUM		EQU		8
	
CLK_DELAY  MACRO	NUM
	REPT	NUM
		NOP
	ENDM
ENDM

?PR?CHIP_LIB SEGMENT CODE
	PUBLIC	_TLV320CONFIG
	PUBLIC	DELAY_FUN
	PUBLIC	AMBE2000_READ_DATA
	PUBLIC	AMBE2000_READ_WORD
	PUBLIC	AMBE2000_WRITE_DATA
	PUBLIC	_AMBE2000_WRITE_WORD
	PUBLIC	DELAY_100NM
	RSEG ?PR?CHIP_LIB
    USING 0

DELAY_FUN:				CLK_DELAY	DELAY_NUM
						RET

DELAY_100NM:			NOP
						NOP
						RET
												
; void tlv320config(unsigned short ConfigData)
_TLV320CONFIG:			MOV		A,R6
						MOV		R5,#8
						MOV		R4,#8
_TLV320CONFIG_WRITE_H:	RLC		A
						JNB		TLV320_SCLK,$
						MOV		TLV320_DCSI,C
						JB		TLV320_SCLK,$
						DJNZ	R5,_TLV320CONFIG_WRITE_H
						MOV		A,R7
_TLV320CONFIG_WRITE_L:	RLC		A
						JNB		TLV320_SCLK,$
						MOV		TLV320_DCSI,C
						JB		TLV320_SCLK,$
						DJNZ	R4,_TLV320CONFIG_WRITE_L
						JNB		TLV320_SCLK,$
						SETB	TLV320_DCSI
						JB		TLV320_SCLK,$
						JNB		TLV320_SCLK,$
						JB		TLV320_SCLK,$
						JNB		TLV320_SCLK,$
						JB		TLV320_SCLK,$
						JNB		TLV320_SCLK,$
						JB		TLV320_SCLK,$

						JNB		TLV320_SCLK,$
						JB		TLV320_SCLK,$
						JNB		TLV320_SCLK,$
						JB		TLV320_SCLK,$
						RET

AMBE2000_READ_DATA:		MOV		R0,#AMBE2000BUF
						MOV		R2,#23
AMBE2000_READ_DATA1:	LCALL	AMBE2000_READ_WORD
						CJNE	R6,#13H,AMBE2000_READ_DATA1
						CJNE	R7,#0ECH,AMBE2000_READ_DATA1
						MOV		@R0,06H
						INC		R0
						MOV		@R0,07H
						INC		R0
AMBE2000_READ_DATA2:	LCALL	AMBE2000_READ_WORD
						MOV		@R0,06H
						INC		R0
						MOV		@R0,07H
						INC		R0
						DJNZ	R2,AMBE2000_READ_DATA2
						RET
						
AMBE2000_READ_WORD:		MOV		R4,#08H
						MOV		R3,#07H
						MOV		R5,#0FFH
						CLR		AMBE_CLK
						LCALL 	DELAY_FUN
						SETB	AMBE_CLK
						LCALL 	DELAY_FUN 	
						CLR		AMBE_CLK
						NOP
						CLR		AMBE_CHAN_TX_STRB	
						LCALL 	DELAY_FUN 
AMBE2000_READ_WORD1:	SETB	AMBE_CLK
						LCALL 	DELAY_FUN 
						CLR		AMBE_CLK
						LCALL 	DELAY_FUN 
						MOV		C,AMBE_CHAN_TX_DATA
						RLC		A
						DJNZ	R4,AMBE2000_READ_WORD1
						MOV		R6,A
AMBE2000_READ_WORD2:	SETB	AMBE_CLK
						LCALL 	DELAY_FUN 
						CLR		AMBE_CLK
						LCALL 	DELAY_FUN 
						MOV		C,AMBE_CHAN_TX_DATA
						RLC		A
						DJNZ	R3,AMBE2000_READ_WORD2
						SETB	AMBE_CLK
						NOP
						SETB	AMBE_CHAN_TX_STRB
						LCALL 	DELAY_FUN 
						CLR		AMBE_CLK
						LCALL 	DELAY_FUN 
						MOV		C,AMBE_CHAN_TX_DATA
						RLC		A
						MOV		R7,A
						SETB	AMBE_CLK
						LCALL 	DELAY_FUN 
AMBE2000_READ_WORD5:	RET

AMBE2000_WRITE_DATA:	MOV		R0,#AMBE2000BUF
						MOV		R2,#24
AMBE2000_WRITE_DATA1:	MOV		06H,@R0
						INC		R0
						MOV		07H,@R0
						INC		R0
						LCALL	_AMBE2000_WRITE_WORD
						DJNZ	R2,AMBE2000_WRITE_DATA1
						RET
						
_AMBE2000_WRITE_WORD:	MOV		R4,#08H
						MOV		R5,#07H
						CLR		AMBE_CLK
						LCALL 	DELAY_FUN 
						SETB	AMBE_CHAN_RX_STRB
						NOP
						SETB	AMBE_CLK
						LCALL 	DELAY_FUN 
						CLR		AMBE_CLK
						LCALL 	DELAY_FUN 
						SETB	AMBE_CLK
						LCALL 	DELAY_FUN 
						CLR		AMBE_CLK
						NOP
						CLR		AMBE_CHAN_RX_STRB
						LCALL 	DELAY_FUN 
						MOV		A,R6
_AMBE2000_WRITE_WORD1:	SETB	AMBE_CLK
						RLC		A
						MOV		AMBE_CHAN_RX_DATA,C
						LCALL 	DELAY_FUN 
						CLR		AMBE_CLK
						LCALL 	DELAY_FUN 
						DJNZ	R4,_AMBE2000_WRITE_WORD1
						MOV		A,R7
_AMBE2000_WRITE_WORD2:	SETB	AMBE_CLK
						RLC		A
						MOV		AMBE_CHAN_RX_DATA,C
						LCALL 	DELAY_FUN 
						CLR		AMBE_CLK
						LCALL 	DELAY_FUN 
						DJNZ	R5,_AMBE2000_WRITE_WORD2
						SETB	AMBE_CLK
						NOP
						SETB	AMBE_CHAN_RX_STRB
						RLC		A
						MOV		AMBE_CHAN_RX_DATA,C
						LCALL 	DELAY_FUN 
						CLR		AMBE_CLK
						LCALL 	DELAY_FUN 
						RET
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -