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

📄 fifo_rd_gen.asm

📁 USB CDC using C8051F320/340, virtual COM port thru usb connection
💻 ASM
字号:
;--------------------------------------------------------
; File Created by SDCC : FreeWare ANSI-C Compiler
; Version 2.5.5 #1236 (Apr  6 2006)
; This file generated Tue Jul 18 06:44:16 2006
;--------------------------------------------------------
	.module FIFO_RD_GEN
	.optsdcc -mmcs51 --model-small
;--------------------------------------------------------
; Public variables in this module
;--------------------------------------------------------
	.globl _FIFO_Read_generic_PARM_3
	.globl _FIFO_Read_generic_PARM_2
	.globl _FIFO_Read_generic
;--------------------------------------------------------
; special function registers
;--------------------------------------------------------
	.area RSEG    (DATA)
_USB0ADR	=	0x0096
_USB0DAT	=	0x0097
;--------------------------------------------------------
; overlayable register banks
;--------------------------------------------------------
	.area REG_BANK_0	(REL,OVR,DATA)
	.ds 8
;--------------------------------------------------------
; overlayable items in internal ram 
;--------------------------------------------------------
	.area	OSEG    (OVR,DATA)
_FIFO_Read_generic_PARM_2::
	.ds 1
_FIFO_Read_generic_PARM_3::
	.ds 3
;--------------------------------------------------------
; code
;--------------------------------------------------------
	.area CSEG    (CODE)
;------------------------------------------------------------
; void FIFO_Read_generic( BYTE fifo_adr, BYTE n, BYTE * ptr )
;fifo_adr                  Allocated to registers dpl
;n                         Allocated with name '_FIFO_Read_generic_PARM_2'
;ptr                       Allocated with name '_FIFO_Read_generic_PARM_3'
;------------------------------------------------------------

; memory space code
mem_xdata	=	0x00
mem_idata	=	0x40
mem_pdata	=	0x60
mem_code	=	0x80

_FIFO_Read_generic:
	mov	a,_FIFO_Read_generic_PARM_2
	jz	genret
	mov	r4,a		; loop counter
	anl	dpl, #0x3F	; mask USBADDR
	orl	dpl, #0x80	; set BUSY

	mov	r0,_FIFO_Read_generic_PARM_3
	mov	a,(_FIFO_Write_generic_PARM_3 + 2)	; memory type
	cjne a,#mem_idata,type_pdata
type_idata:
	djnz	r4,idmult
	mov	_USB0ADR,dpl
	sjmp idlp2

idmult:
	orl	dpl,#0x40	; set AUTORD
	mov	_USB0ADR,dpl
idlp1:
	mov	a,_USB0ADR
	jb	acc.7,idlp1
	mov	@r0,_USB0DAT
	inc	r0
	djnz	r4,idlp1
idlp2:
	mov	a,_USB0ADR
	jb	acc.7,idlp2
	mov	_USB0ADR,#0x00	; clear AUTORD
	mov	@r0,_USB0DAT
genret:
	ret

type_pdata:
	cjne a,#mem_pdata,type_xdata
;	mov	r0,_FIFO_Read_generic_PARM_3
	djnz	r4,pdmult
	mov	_USB0ADR,dpl
	sjmp pdlp2

pdmult:
	orl	dpl,#0x40	; set AUTORD
	mov	_USB0ADR,dpl
pdlp1:
	mov	a,_USB0ADR
	jb	acc.7,pdlp1
	mov	a,_USB0DAT
	movx	@r0,a
	inc	r0
	djnz	r4,pdlp1
pdlp2:
	mov	a,_USB0ADR
	jb	acc.7,pdlp2
	mov	_USB0ADR,#0x00	; clear AUTORD
	mov	a,_USB0DAT
	movx	@r0,a
	ret

type_xdata:
	cjne a,#mem_xdata,xdret
	mov	a,dpl
	mov	dpl,_FIFO_Read_generic_PARM_3
	mov	dph,(_FIFO_Read_generic_PARM_3 + 1)
	djnz	r4,xdmult
	mov	_USB0ADR,a
	sjmp xdlp2

xdmult:
	orl	a,#0x40		; set AUTORD
	mov	_USB0ADR,a
xdlp1:
	mov	a,_USB0ADR
	jb	acc.7,xdlp1
	mov	a,_USB0DAT
	movx	@dptr,a
	inc	dptr
	djnz	r4,xdlp1
xdlp2:
	mov	a,_USB0ADR
	jb	acc.7,xdlp2
	mov	_USB0ADR,#0x00	; clear AUTORD
	mov	a,_USB0DAT
	movx	@dptr,a
xdret:
	ret

⌨️ 快捷键说明

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