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

📄 usb_lib.asm

📁 以&#1049307 &#1049319 &#1049287 &#1049289 &#1049317 &#1049301 &#1049288 &#1049283 为核心设计的&#1049320 &#1
💻 ASM
字号:
;;Established date:                  2006/03/01

;;********************************************************************
SBR_FIFO0_RD_Check:
	MOV	A,0F8H
	ANDM	A,UCC			;select endpoint0 FIFO
	MOV	A,00000000B
	JMP	L_FIFO_Check
;;********************************************************************
SBR_FIFO0_WR_Check:
	MOV	A,0F8H
	ANDM	A,UCC			;select endpoint0 FIFO
	MOV	A,00000010B
	JMP	L_FIFO_Check
;;********************************************************************
SBR_FIFO1_WR_Check:
	MOV	A,0F8H
	ANDM	A,UCC
	SET	UCC.0			;select endpoint1 FIFO
	MOV 	A,00000010B		;0000 1010B
;       JMP	L_FIFO_Check
;;--------------------------------------------------------------------
L_FIFO_Check:
	MOV	M_temp1,A
	MOV	A,C_MISC
	MOV	MP1,A
	MOV	A,R1
	AND	A,11111000B		;1110 0000B
	OR	A,M_Temp1
	MOV	R1,A

	SET	R1.@USB_REQ
	CALL	SBR_Delay2us
	SET 	Z
	SNZ	R1.@Ready
	CLR	Z			;Z=1  Ready
	RET
;;********************************************************************
;;Read data from fifo to data buffer.
SBR_ReadFIFO0:
	MOV	A,C_FIFO0Address
	JMP	L_ReadFIFO
;;********************************************************************
;SBR_ReadFIFO1:				;;The endpoint 1 is interrupt in input, so no read operation.
;	MOV	A,C_FIFO1Address
;	JMP	L_ReadFIFO
;;--------------------------------------------------------------------
L_ReadFIFO:
	MOV	M_FIFOAddress,A		;save FIFO's address
	CLR	M_DataPacketLength	;clear Packet Length
	MOV	A,OFFSET M_FIFOBAK0	;get address of FIFO memory
	MOV	MP0,A
L_ReadFIFOLoop:
	MOV	A,M_FIFOAddress		;load FIFO address
	MOV	MP1,A
	MOV	A,R1			;load FIFO data
	MOV	R0,A			;save FIFO data
	INC	M_DataPacketLength	;count Packet length(<= 8 byte)
	INC	MP0			;next save address
	MOV	A,C_FIFOSize		;load max length of one packet
	XOR	A,M_DataPacketLength	;data packet's length = max length?
	SZ	Z
	JMP	L_ExitprocessFIFO	;yes,exit read FIFO
	MOV	A,C_MISC
	MOV	MP1,A
	CALL	SBR_Delay2us
	SZ	R1.@Ready		;ready for next data?(if EOF then ready=0)
	JMP	L_ReadFIFOLoop
	JMP	L_ExitProcessFIFO
;;********************************************************************
;;Write data from data buffer to fifo.
SBR_WriteFIFO0:
	MOV	A,C_FIFO0Address
	JMP	L_WriteFIFO
;;********************************************************************
SBR_WriteFIFO1:
	MOV	A,C_FIFO1Address
;	JMP	L_WriteFIFO
;;--------------------------------------------------------------------
L_WriteFIFO:
	MOV	M_FIFOAddress,A
	MOV	A,OFFSET M_FIFOBAK0
	MOV	MP0,A
L_WriteFIFOLoop:
	SZ	M_DataPacketLength		;the data in buffer is Zero?
	JMP	L_WriteFIFOTag			;no,have data,next
	JMP	L_ExitProcessFIFO		;yes,no data,exit
L_WriteFIFOTag:
	MOV	A,M_FIFOAddress			;load FIFO address
	MOV	MP1,A
	MOV	A,R0				;load buffer's data
	MOV	R1,A				;write FIFO
	DEC	M_DataPacketLength		;packet's length dec 1
	INC	MP0				;next buffer data
	MOV	A,C_MISC
	MOV	MP1,A
	CALL	SBR_Delay2us
	SZ	R1.@Ready			;ready to write next data
	JMP	L_WriteFIFOLoop			;yes,continue write data to FIFO
	JMP	L_ExitProcessFIFO      
;;--------------------------------------------------------------------
SBR_Write_0_Packet:
L_ExitProcessFIFO:
	MOV	A,C_MISC
	MOV	MP1,A
	MOV	A,00000010B
	XORM	A,R1			;TX CPL
;	CALL    SBR_Delay2us
	NOP
	NOP
	NOP
	NOP
	CLR	R1.@USB_Req		;CLR REQ(MISC.0)	
	RET
;;********************************************************************

⌨️ 快捷键说明

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