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

📄 fifo_rd_xd.a51

📁 USB CDC using C8051F320/340, virtual COM port thru usb connection
💻 A51
字号:
; FIFO_Read.a51 generated from FIFO_RW.c
;
; void FIFO_Read_xdata( BYTE fifo_adr, BYTE n, BYTE xdata * ptr );

$NOMOD51

$include (c8051f320.inc)	; Include register definition file.

?PR?_FIFO_Read_xdata?FIFO_RD_XD		SEGMENT CODE
	PUBLIC	_FIFO_Read_xdata
	RSEG	?PR?_FIFO_Read_xdata?FIFO_RD_XD
_FIFO_Read_xdata:

;---- Variable 'fifo_adr' assigned to Register 'R7'
;---- Variable 'n' assigned to Register 'R5'
;---- Variable 'ptr' assigned to Register R2:R3 -> 'DPTR'

	MOV		A,R5				; if (n == 0)
	JZ		rdFx_ret			;    return;

	MOV		DPL,R3				; DPTR = ptr;
	MOV		DPH,R2
	MOV		A,R7				; fifo_adr
	DJNZ	R5,rdFx_multi		; if ( --n == 0 )
	ORL		A,#080H				; USB0ADR = fifo_adr | 0x80;
	MOV		USB0ADR,A			; Set FIFO address and initiate first read
	SJMP	rdFx_last

rdFx_multi:						; USB0ADR = fifo_adr | 0xC0;
	ORL		A,#0C0H				; Set auto-read and initiate first read
	MOV		USB0ADR,A			; set FIFO address
rdFx_loop:
	MOV		A,USB0ADR			; Wait for BUSY->'0' (data ready)
	JB		ACC.7,rdFx_loop
	MOV		A,USB0DAT			; *ptr++ = USB0DAT;
	MOVX	@DPTR,A
	INC		DPTR
	DJNZ	R5,rdFx_loop		; loop n-1 times

rdFx_last:
	MOV		A,USB0ADR			; Wait for data ready
	JB		ACC.7,rdFx_last
	CLR		A					; clear auto-read flag
	MOV		USB0ADR,A
	MOV		A,USB0DAT			; *ptr = USB0DAT;
	MOVX	@DPTR,A
rdFx_ret:
	RET

; END OF _FIFO_Read_xdata

END

⌨️ 快捷键说明

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