📄 fifo_rd_gen.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 + -