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