📄 std.lst
字号:
184 0059 SetAddrWake:
185 0059 0082 MOV R1,A ;
186 005A 2800 E JMP SendHandshake ;send handshake flag
187 005B
188 005B ;****************************************************************************
189 005B GetStatus:
190 005B 1080 E SZ FIFO_wIndexH ;Is wIndex == 0 ?
191 005C 2800 E JMP ToStallPipe0 ;No
192 005D
193 005D 0700 E MOV A,FIFO_Type ;Type (Device, Interface or
194 005E 0E1F AND A,Setup_Rev ; Endpoint)
195 005F 0080 E MOV TEMP,A
196 0060 ;!!!!! Need in same page
197 0060 0A03 SUB A,03H ;04H ;Over 4 item ?
198 0061 3C0A SZ C ;
199 0062 2800 E JMP ToStallPipe0 ;Yes
200 0063 0700 E MOV A,TEMP
201 0064 get_status_pcl_5:
202 0064 0386 ADDM A,PCL
203 0065 28D5 JMP DeviceStatusS
204 0066 28DC JMP InterfaceStatusS
205 0067 ;JMP EndpointStatusS
206 0067 ;-----------------------------------------------------------------------------
207 0067 EndpointStatusS:
208 0067 0700 E MOV A,FIFO_wIndexL
209 0068 0E7F and a,01111111b
210 0069 0200 E SUB A,fifo_temp
211 006A 3C0A SZ C
212 006B 2800 E JMP ToStallPiPe0
213 006C ;Don't care direction, maybe it's neccesary.
214 006C 0F01 mov a,00000001b ;pipe0
215 006D 3C00 E sz FIFO_wIndexL.0
216 006E 0F02 mov a,00000010b ;pipe1
217 006F 3C00 E sz FIFO_wIndexL.1
218 0070 0F04 mov a,00000100b ;pipe2
219 0071 0600 E and a,STALL
220 0072 390A snz z
221 0073 FoundStall:
222 0073 0F01 mov A,01H ;mask bits except stall bit
223 0074 28D8 JMP SendEndpointStsS ;Send endpoint status
224 0075 ;-------------------------------------------------------------------
225 0075 DeviceStatusS:
226 0075 1F05 clr acc
227 0076 3C00 E sz bRmtwakeup
228 0077 3085 set acc.1
229 0078 SendEndpointStsS:
230 0078 0080 E MOV FIFO_OUT1,A ;low byte
231 0079 1F00 E CLR FIFO_OUT2 ;high byte = 00H
"File: STD.ASM Holtek Cross-Assembler Version 2.86 Page 5
232 007A 0F02 MOV A,02H ;data length = 2
233 007B 2800 E JMP SendFIFOOut ;Send it
234 007C ;----------------------------------------------------------------
235 007C InterfaceStatusS:
236 007C 3C00 E sz baddr_state
237 007D 2800 E jmp TOstallpipe0
238 007E 0700 E MOV A,FIFO_wIndexL
239 007F 0A01 SUB A,INTERFACE_NO ;Over 2 Interface ?
240 0080 3C0A SZ C ;
241 0081 2800 E JMP ToStallPipe0 ;Yes
242 0082 ;No Matter which Interface
243 0082 1F05 CLR acc ;low byte = 00H
244 0083 28D8 JMP SendEndpointStsS ;Send it
245 0084 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
246 0084 ;Get string descriptor
247 0084 std_des_pcl_start:
248 0084 GetStringDes:
249 0084 1080 E SZ FIFO_wIndexH
250 0085 28F6 JMP get_other_string
251 0086 ;FIFO_wIndexL = Language ID
252 0086 1080 E sz fifo_windexl
253 0087 28F6 jmp get_other_string
254 0088 1080 E sz fifo_wvaluel
255 0089 2800 E jmp tostallpipe0
256 008A
257 008A ;--------------------------------------------------------------------------------
258 008A get_string:
259 008A 0700 E mov a,fifo_wvaluel
260 008B 0A03 sub a,3
261 008C 3C0A sz c
262 008D 2800 E jmp Tostallpipe0
263 008E
264 008E 0F00 E mov a,low LangID ;00
265 008F 3C00 E sz fifo_wvaluel.0
266 0090 0F00 E mov a,low ManufactureS ;01
267 0091 3C00 E sz fifo_wvaluel.1
268 0092 0F00 E mov a,low ProductS ;10
269 0093
270 0093 0087 MOV TBLP,A ;
271 0094 1D80 E TABRDL TableLength ;table length from TBLP
272 0095 296A JMP SendCnf ;Read Device table and send it
273 0096
274 0096 ;--------------------------------------------------------------------------------
275 0096 get_other_string:
276 0096 0700 E mov a,fifo_windexH
277 0097 0C04 xor a,LAND_ID_H
278 0098 390A snz z
279 0099 2800 E jmp ToStallPipe0
280 009A
281 009A 0700 E mov a,fifo_windexl
282 009B 0C09 xor a,LAND_ID_L
283 009C 390A snz z
284 009D 2800 E jmp TOStallpipe0
285 009E 28EA jmp get_string
286 009F ;Standard--------------------------------------------------------------------
287 009F ;Get device descriptor
288 009F
289 009F readtable_withcheckindex:
290 009F 1080 E SZ FIFO_wIndexL
291 00A0 2800 E JMP ToStallPipe0
"File: STD.ASM Holtek Cross-Assembler Version 2.86 Page 6
292 00A1 readtable_withcheckHindex:
293 00A1 1080 E SZ FIFO_wIndexH
294 00A2 2800 E JMP ToStallPipe0
295 00A3 out_of_rd_table_sendcnf:
296 00A3 2969 JMP ReadEntityAndSendCnf ;Read configuration table
297 00A4 ;----------------------------------------------------------------------------------------------
298 00A4 GetDeviceDes:
299 00A4 0F00 E MOV A,LOW DeviceD ;Set table pointer to device
300 00A5 0087 MOV TBLP,A ; table
301 00A6 0F12 MOV A,Device_Length ;(Entity length not included
302 00A7 28FF jmp readtable_withcheckindex
303 00A8 ;----------------------------------------------------------------------------------------------
304 00A8 ;(Configuration, interface & endpoint) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
305 00A8 GetConfigurationDes:
306 00A8 0F00 E MOV A,LOW ConfigurationD ;Set table pointer to
307 00A9 0087 MOV TBLP,A ;configuration
308 00AA 0F22 MOV A,config_Length ;(Entity length not included
309 00AB 28FF jmp readtable_withcheckindex
310 00AC ;Class-----------------------------------------------------------------------
311 00AC GetHID:
312 00AC 0F00 E MOV A,LOW HID_0 ;Set table pointer to
313 00AD 0087 MOV TBLP,A ;HID
314 00AE 0F09 MOV A,HID_Length ;(Entity length not included
315 00AF 2903 jmp out_of_rd_table_sendcnf
316 00B0
317 00B0 ;----------------------------------------------------------------------------------------------
318 00B0 FIFO_Full:
319 00B0 3000 E SET bFIFO_Full ;Send Request
320 00B1 FIFO_NoFull:
321 00B1 3400 E CLR bSend_Continue ;clear continue send flag
322 00B2 1080 E SZ TableLength ;Finished read ?
323 00B3 296D JMP ReadAgain ;No, Read Next Byte
324 00B4 ;----------------------------------------------------------------------------------------------
325 00B4 EndSend:
326 00B4 3C00 E sz bFIFO_Full
327 00B5 3000 E set bSend_Continue ;if fifo_full & TableLength=0
328 00B6 ;must send zero length data in next in token
329 00B6 3C00 E sz bSend_Continue
330 00B7 2800 E jmp RequestResponse
331 00B8
332 00B8
333 00B8 3000 E set bwait_setup
334 00B9
335 00B9 1080 E SZ FIFO_SendLen
336 00BA 2800 E jmp RequestResponse
337 00BB 2800 E jmp SendHandshake ;send zero length
338 00BC
339 00BC ;----------------------------------------------------------------------------------------------
340 00BC GetConfiguration:
341 00BC 1F00 E clr FIFO_out1
342 00BD 3C00 E sz bcfgvalue
343 00BE 3000 E set FIFO_OUT1.0 ;to FIFO
344 00BF 0F01 MOV A,01H ;Send length = 1
345 00C0 2800 E jmp SendFIFOOut
346 00C1
347 00C1 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
348 00C1
349 00C1 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
350 00C1 SetConfiguration:
351 00C1 0F01 mov a,1
"File: STD.ASM Holtek Cross-Assembler Version 2.86 Page 7
352 00C2 0200 E sub a,FIFO_wValueL ;1 - FIFO_wValueL
353 00C3 380A snz c
354 00C4 2800 E jmp ToStallPipe0
355 00C5 3400 E clr baddr_state
356 00C6 390A snz z ;fifo_wvaluel=1
357 00C7 3000 E set baddr_state
358 00C8
359 00C8 1F00 E CLR STALL ;Reset all stall to 0
360 00C9 0F43 MOV A,USB_STALL ;
361 00CA 0083 MOV MP1,A ;
362 00CB 1F02 CLR R1 ;
363 00CC 1080 E sz FIFO_wvalueL
364 00CD 2930 jmp set_cfg
365 00CE 3400 E clr bcfgvalue
366 00CF 2800 E JMP SendHandShake
367 00D0
368 00D0 set_cfg:
369 00D0 3000 E set bcfgvalue
370 00D1 3211 set timer1_on
371 00D2 2800 E JMP SendHandShake
372 00D3 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
373 00D3
374 00D3
375 00D3 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
376 00D3 GetDescriptor: ;No check bmRequestType D4..0
377 00D3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -