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

📄 usb_lib.tmp

📁 HT46RB50温度计,了解其usb通信
💻 TMP
字号:

caackF:\project\HT46RB50 温度计\ASM\USB_LIB.ASM   1  0000              ;;Established date:                  2006/03/01
   2  0000              
   3  0000              ;;********************************************************************
   4  0000              SBR_FIFO0_RD_Check:
   5  0000  0FF8        	MOV	A,0F8H
babaaabaaabaaagb 	ANDM	A,UCC			;select endpoint0 FIFO
	ANDM	A,UCC			;select endpoint0 FIFO
   7  0002  0F00        	MOV	A,00000000B
babaaabaaadaaaib 	JMP	L_FIFO_Check
	JMP	L_FIFO_Check
   9  0004              ;;********************************************************************
  10  0004              SBR_FIFO0_WR_Check:
  11  0004  0FF8        	MOV	A,0F8H
babaaabaaafaaamb 	ANDM	A,UCC			;select endpoint0 FIFO
	ANDM	A,UCC			;select endpoint0 FIFO
  13  0006  0F02        	MOV	A,00000010B
babaaabaaahaaaob 	JMP	L_FIFO_Check
	JMP	L_FIFO_Check
  15  0008              ;;********************************************************************
  16  0008              SBR_FIFO1_WR_Check:
  17  0008  0FF8        	MOV	A,0F8H
babaaabaaajaabcb 	ANDM	A,UCC
	ANDM	A,UCC
babaaabaaakaabdb 	SET	UCC.0			;select endpoint1 FIFO
	SET	UCC.0			;select endpoint1 FIFO
  20  000B  0F02        	MOV 	A,00000010B		;0000 1010B
  21  000C              ;       JMP	L_FIFO_Check
  22  000C              ;;--------------------------------------------------------------------
  23  000C              L_FIFO_Check:
babaaabaaamaabib 	MOV	M_temp1,A
	MOV	M_temp1,A
babaaabaaanaabjb 	MOV	A,C_MISC
	MOV	A,C_MISC
babaaabaaaoaabkb 	MOV	MP1,A
	MOV	MP1,A
babaaabaaapaablb 	MOV	A,R1
	MOV	A,R1
  28  0010  0EF8        	AND	A,11111000B		;1110 0000B
babaaabaabbaabnb 	OR	A,M_Temp1
	OR	A,M_Temp1
babaaabaabcaabob 	MOV	R1,A
	MOV	R1,A
  31  0013              
babaaabaabdaacab 	SET	R1.@USB_REQ
	SET	R1.@USB_REQ
babaaabaabeaacbb 	CALL	SBR_Delay2us
	CALL	SBR_Delay2us
babaaabaabfaaccb 	SET 	Z
	SET 	Z
babaaabaabgaacdb 	SNZ	R1.@Ready
	SNZ	R1.@Ready
babaaabaabhaaceb 	CLR	Z			;Z=Ready
	CLR	Z			;Z=Ready
  37  0018  0003        	RET
  38  0019              ;;********************************************************************
  39  0019              ;;Read data from fifo to data buffer.
  40  0019              SBR_ReadFIFO0:
babaaabaabjaacjb 	MOV	A,C_FIFO0Address
	MOV	A,C_FIFO0Address
babaaabaabkaackb 	JMP	L_ReadFIFO
	JMP	L_ReadFIFO
  43  001B              ;;********************************************************************
  44  001B              ;SBR_ReadFIFO1:				;;The endpoint 1 is interrupt in input, so no read operation.
  45  001B              ;	MOV	A,C_FIFO1Address
  46  001B              ;	JMP	L_ReadFIFO
  47  001B              ;;--------------------------------------------------------------------
  48  001B              L_ReadFIFO:
babaaabaablaadbb 	MOV	M_FIFOAddress,A		;save FIFO's address
	MOV	M_FIFOAddress,A		;save FIFO's address
babaaabaabmaadcb 	CLR	M_DataPacketLength	;clear Packet Length
	CLR	M_DataPacketLength	;clear Packet Length
babaaabaabnaaddb 	MOV	A,OFFSET M_FIFOBAK0	;get address of FIFO memory
	MOV	A,OFFSET M_FIFOBAK0	;get address of FIFO memory
babaaabaaboaadeb 	MOV	MP0,A
	MOV	MP0,A
  53  001F              L_ReadFIFOLoop:
babaaabaabpaadgb 	MOV	A,M_FIFOAddress		;load FIFO address
	MOV	A,M_FIFOAddress		;load FIFO address
babaaabaacaaadhb 	MOV	MP1,A
	MOV	MP1,A
babaaabaacbaadib 	MOV	A,R1			;load FIFO data
	MOV	A,R1			;load FIFO data
babaaabaaccaadjb 	MOV	R0,A			;save FIFO data
	MOV	R0,A			;save FIFO data
babaaabaacdaadkb 	INC	M_DataPacketLength	;count Packet length(<= 8 byte)
	INC	M_DataPacketLength	;count Packet length(<= 8 byte)
babaaabaaceaadlb 	INC	MP0			;next save address
	INC	MP0			;next save address
babaaabaacfaadmb 	MOV	A,C_FIFOSize		;load max length of one packet
	MOV	A,C_FIFOSize		;load max length of one packet
babaaabaacgaadnb 	XOR	A,M_DataPacketLength	;data packet's length = max length?
	XOR	A,M_DataPacketLength	;data packet's length = max length?
babaaabaachaadob 	SZ	Z
	SZ	Z
babaaabaaciaadpb 	JMP	L_ExitprocessFIFO	;yes,exit read FIFO
	JMP	L_ExitprocessFIFO	;yes,exit read FIFO
babaaabaacjaaeab 	MOV	A,C_MISC
	MOV	A,C_MISC
babaaabaackaaebb 	MOV	MP1,A
	MOV	MP1,A
babaaabaaclaaecb 	CALL	SBR_Delay2us
	CALL	SBR_Delay2us
babaaabaacmaaedb 	SZ	R1.@Ready		;ready for next data?(if EOF then ready=0)
	SZ	R1.@Ready		;ready for next data?(if EOF then ready=0)
  68  002D  2800     R  	JMP	L_ReadFIFOLoop
babaaabaacoaaefb 	JMP	L_ExitProcessFIFO
	JMP	L_ExitProcessFIFO
  70  002F              ;;********************************************************************
  71  002F              ;;Write data from data buffer to fifo.
  72  002F              SBR_WriteFIFO0:
babaaabaacpaaejb 	MOV	A,C_FIFO0Address
	MOV	A,C_FIFO0Address
babaaabaadaaaekb 	JMP	L_WriteFIFO
	JMP	L_WriteFIFO
  75  0031              ;;********************************************************************
  76  0031              SBR_WriteFIFO1:
babaaabaadbaaenb 	MOV	A,C_FIFO1Address
	MOV	A,C_FIFO1Address
  78  0032              ;	JMP	L_WriteFIFO
  79  0032              ;;--------------------------------------------------------------------
  80  0032              L_WriteFIFO:
babaaabaadcaafbb 	MOV	M_FIFOAddress,A
	MOV	M_FIFOAddress,A
babaaabaaddaafcb 	MOV	A,OFFSET M_FIFOBAK0
	MOV	A,OFFSET M_FIFOBAK0
babaaabaadeaafdb 	MOV	MP0,A
	MOV	MP0,A
  84  0035              L_WriteFIFOLoop:
babaaabaadfaaffb 	SZ	M_DataPacketLength		;the data in buffer is Zero?
	SZ	M_DataPacketLength		;the data in buffer is Zero?
babaaabaadgaafgb 	JMP	L_WriteFIFOTag			;no,have data,next
	JMP	L_WriteFIFOTag			;no,have data,next
babaaabaadhaafhb 	JMP	L_ExitProcessFIFO		;yes,no data,exit
	JMP	L_ExitProcessFIFO		;yes,no data,exit
  88  0038              L_WriteFIFOTag:
babaaabaadiaafjb 	MOV	A,M_FIFOAddress			;load FIFO address
	MOV	A,M_FIFOAddress			;load FIFO address
babaaabaadjaafkb 	MOV	MP1,A
	MOV	MP1,A
babaaabaadkaaflb 	MOV	A,R0				;load buffer's data
	MOV	A,R0				;load buffer's data
babaaabaadlaafmb 	MOV	R1,A				;write FIFO
	MOV	R1,A				;write FIFO
babaaabaadmaafnb 	DEC	M_DataPacketLength		;packet's length dec 1
	DEC	M_DataPacketLength		;packet's length dec 1
babaaabaadnaafob 	INC	MP0				;next buffer data
	INC	MP0				;next buffer data
babaaabaadoaafpb 	MOV	A,C_MISC
	MOV	A,C_MISC
babaaabaadpaagab 	MOV	MP1,A
	MOV	MP1,A
babaaabaaeaaagbb 	CALL	SBR_Delay2us
	CALL	SBR_Delay2us
babaaabaaebaagcb 	SZ	R1.@Ready			;ready to write next data
	SZ	R1.@Ready			;ready to write next data
  99  0042  2800     R  	JMP	L_WriteFIFOLoop			;yes,continue write data to FIFO
babaaabaaedaageb 	JMP	L_ExitProcessFIFO      
	JMP	L_ExitProcessFIFO      
 101  0044              ;;--------------------------------------------------------------------
 102  0044              SBR_Write_0_Packet:
 103  0044              L_ExitProcessFIFO:
babaaabaaeeaagib 	MOV	A,C_MISC
	MOV	A,C_MISC
babaaabaaefaagjb 	MOV	MP1,A
	MOV	MP1,A
 106  0046  0F02        	MOV	A,00000010B
babaaabaaehaaglb 	XORM	A,R1			;TX CPL
	XORM	A,R1			;TX CPL
 108  0048              ;	CALL     SBR_Delay2us
 109  0048  0000        	NOP
 110  0049  0000        	NOP
 111  004A  0000        	NOP
 112  004B  0000        	NOP
babaaabaaemaahbb 	CLR	R1.@USB_Req		;CLR REQ(MISC.0)	
	CLR	R1.@USB_Req		;CLR REQ(MISC.0)	
 114  004D  0003        	RET
 115  004E              ;;********************************************************************
 116  004E              

⌨️ 快捷键说明

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