📄 usb_int2.lst
字号:
238 004D 3400 E clr bhas_data_out_previous2
239 004E 2C0C jmp ExitExt0
240 004F
241 004F ;-------------------------------------------------------------------------------
242 004F AccessFIFO0_cont11:
243 004F
244 004F
245 004F 3000 E set bFLAG_Setup
246 0050 CheckSetup:
247 0050 0F46 MOV A,USB_MISC ;MP1 point to Misc. register
248 0051 0083 MOV MP1,A ;
249 0052 0000 nop
250 0053 0000 nop
251 0054 3A82 snz r1.@USB_Setup
252 0055 3400 E clr bFlag_setup
253 0056
254 0056 3800 E snz bFLAG_Setup
255 0057 2BAD JMP AccessFIFO0_cont2 ;No (data stage(Host to device)
256 0058 Setup_stage:
257 0058 3682 clr r1.@USB_Setup ;clear USB setup bit
258 0059 3782 clr r1.@USB_Len0
259 005A 3400 E clr bwait_setup
260 005B 3000 E set bsetup_flag
261 005C 2C0C jmp Exitext0
262 005D ;-------------------------------------------------------------------------------
263 005D AccessFIFO0_cont2:
264 005D 2000 E CALL FIFO0_Rd_Check ;Any data in FIFO 0 ?
265 005E 3402 CLR R1.@USB_Req ;No: Clear request for FIFO0_Rd_Check
266 005F 390A SNZ Z ;
267 0060 2BB2 JMP HaveDataInFIFO0 ;Yes
268 0061
269 0061 ;Host read out data from FIFO 0
270 0061 ;Send next transaction data
271 0061 2BCE JMP SendFIFO0
272 0062 ;----------------------------------------------------------------------------
273 0062
274 0062
275 0062 HaveDataInFIFO0:
276 0062 2BDA JMP DataStage ;No (data stage(Host to device)
277 0063 ;-----------------------------------------------------------------------------------------
278 0063 get_cmd_data:
279 0063 3400 E clr bsetup_flag
280 0064 2000 E CALL FIFO0_Rd_Check ;Any data in FIFO 0 ?
281 0065 2000 E CALL ReadFIFO0 ;Read FIFO 0
282 0066
283 0066 1F05 clr acc
284 0067 2000 E call GetPipeBit
285 0068 2000 E call clearstall ;clear pipe0 stall status
286 0069
287 0069 3400 E CLR bFLAG_SndFC ;No Continue Send(ReadNextCnf)
288 006A ; clr bFLAG_FIFO_REDY ;ignore address write
289 006A ; clr bFLAG_AdrF
290 006A 3400 E CLR bFLAG_RsqF ;Clear re_send Flag
291 006B 3400 E CLR bCMD_INDEX ;set Return address to 0
292 006C 3400 E clr bhas_data_out_previous
293 006D 3400 E clr bhas_data_out_previous1
294 006E 3400 E clr bhas_data_out_previous2
295 006F
"File: USB_INT2.ASM Holtek Cross-Assembler Version 2.86 Page 6
296 006F
297 006F 0F00 E MOV A,LOW GetEnd ;Set Defaut Return Address
298 0070 0080 E MOV ReturnAddr,A ;to ReturnAddr
299 0071 ;parsing request command & set command index
300 0071 0F08 MOV A,08H ;Request structure == 8 bytes ?
301 0072 0400 E XOR A,FIFO_SendLen ;
302 0073 390A SNZ Z ;
303 0074 2C09 JMP ToStallPipe0 ;No: data length is invalid
304 0075 ;Parsing command ;Yes: Parsing command
305 0075 0F60 MOV A,Setup_Type ;Type
306 0076 0600 E AND A,FIFO_Type ;Request Type
307 0077 ;!!!!! Need in same page
308 0077 1185 SWAP ACC ;Need be change when Setup_Type
309 0078 1985 RR ACC ;changed
310 0079 usb_request_pcl_5:
311 0079 0386 ADDM A,PCL
312 007A 2800 E JMP StandardRequest ;Standard Request
313 007B 2800 E JMP ClassRequest ;Class Specific Request
314 007C 2C09 JMP ToStallPipe0 ;No support Vendor Request
315 007D 2C09 JMP ToStallPipe0 ;Illegal
316 007E ;----------------------------------------------------------------------------
317 007E
318 007E ;Host has read data out from FIFO 0
319 007E SendFIFO0:
320 007E 3C00 E sz bsetup_flag
321 007F 2C0C JMP ExitExt0
322 0080
323 0080 2000 E CALL FIFO0_Wr_Check ;examine whether FIFO0 has data?
324 0081 3402 clr r1.@USB_Req
325 0082 3D0A SZ Z ;
326 0083 2C0C JMP ExitExt0
327 0084
328 0084 ;examine whehter has data output
329 0084 ;Write address to USB_ADDR_WAKE
330 0084
331 0084 NoneTag:
332 0084 3800 E SnZ bFLAG_SndFC ;Continue Send (ReadNextCnf)
333 0085 2C0C JMP ExitExt0
334 0086 3800 E snz bhas_data_out_previous
335 0087 2800 E JMP ReadNextCnf ;
336 0088 3400 E clr bhas_data_out_previous
337 0089 2C0C jmp ExitExt0
338 008A ;----------------------------------------------------------------------------
339 008A DataStage:
340 008A 3C00 E sz bsetup_flag
341 008B 2BB3 JMP get_cmd_data
342 008C 2000 E CALL FIFO0_Rd_Check ;Any data in FIFO 0 ?
343 008D 2000 E CALL ReadFIFO0 ;Read FIFO 0
344 008E 3C00 E sz bCMD_INDEX ;
345 008F 2BE2 jmp Set_SetOutput
346 0090 2BE1 jmp RedundantData
347 0091
348 0091 RedundantData:
349 0091 2C0C JMP ExitExt0
350 0092 Set_SetOutput:
351 0092 0700 E MOV A,FIFO_SendLen ;Is length == 1 ?
352 0093 0C01 XOR A,01H ;
353 0094 390A SNZ Z ;
354 0095 2C09 JMP ToStallPipe0 ;No
355 0096 0700 E MOV A,FIFO_TYPE ;Output report (LED)
"File: USB_INT2.ASM Holtek Cross-Assembler Version 2.86 Page 7
356 0097 0080 E MOV KB_LED,A ;
357 0098 2000 E CALL SetLED ;Set all keyboard LED
358 0099 3400 E clr bCMD_INDEX ;Reset to 0
359 009A 2BFA JMP SendHandShake
360 009B ;----------------------------------------------------------------------------
361 009B RequestResponse:
362 009B 3400 E CLR bFLAG_RsqF
363 009C 2000 E CALL FIFO0_Wr_Check ;Ready to response ?
364 009D 390A SNZ Z ;
365 009E 2BF5 JMP CanResponse
366 009F 3402 clr r1.@USB_Req
367 00A0
368 00A0 3F82 sz r1.@usb_len0
369 00A1 2C0C JMP ExitExt0 ;continue to scan keyboard
370 00A2 3E82 sz r1.@USB_Setup
371 00A3 2C0C jmp ExitExt0 ;continue to scan keyboard
372 00A4 2BEB jmp RequestResponse
373 00A5 CanResponse:
374 00A5 2000 E CALL WriteFIFO0
375 00A6 3000 E set bhas_data_out_previous
376 00A7 3000 E set bhas_data_out_previous1
377 00A8 3000 E set bhas_data_out_previous2
378 00A9 2C0C jmp ExitExt0
379 00AA
380 00AA ;----------------------------------------------------------------------------
381 00AA SendHandShake:
382 00AA 2000 E CALL LEN0_Wr_Check ;FIFO0 ready ?
383 00AB 390A SnZ Z ;
384 00AC 2C03 jmp sendHandShake_continue
385 00AD 3402 clr r1.@USB_Req
386 00AE
387 00AE 3F82 sz r1.@usb_len0
388 00AF 2C0C JMP ExitExt0 ;continue to scan keyboard
389 00B0 3E82 sz r1.@USB_Setup
390 00B1 2C0C jmp ExitExt0 ;continue to scan keyboard
391 00B2 2BFA jmp sendHandshake
392 00B3 sendHandshake_continue:
393 00B3 2000 E CALL WriteLen0 ;ACK (Write 0 length)
394 00B4 ; SZ bFLAG_FIFO_REDY
395 00B4 ; SET bFLAG_AdrF ;the address response is written to FIFO
396 00B4 ; CLR bFLAG_FIFO_REDY
397 00B4 3000 E set bwait_setup
398 00B5 2C0C JMP ExitExt0 ;continue to scan keyboard
399 00B6
400 00B6 ;----------------------------------------------------------------------------
401 00B6 SendFIFOOut:
402 00B6 0080 E MOV FIFO_SendLen ,A ;data length to send
403 00B7 3000 E set bwait_setup
404 00B8 2BEB jmp RequestResponse
405 00B9 ;----------------------------------------------------------------------------
406 00B9 ToStallPipe0:
407 00B9 1F05 clr acc
408 00BA 2000 E call GetPipeBit
409 00BB 2000 E call setstall
410 00BC ExitExt:
411 00BC ExitExt0:
412 00BC 341B clr Int_reg.@int0 ;clr pipe0 int flag
413 00BD 2B69 jmp Exit_of_Ext_start
414 00BE ;----------------------------------------------------------------------------
415 00BE Check_Pipe1:
"File: USB_INT2.ASM Holtek Cross-Assembler Version 2.86 Page 8
416 00BE AccessFIFO1:
417 00BE
418 00BE 3C00 E sz bCMD_INDEX ;Reset to 0
419 00BF 2C20 jmp ExitExt1
420 00C0
421 00C0 2000 E CALL FIFO1_Wr_Check ;FIFO0 ready ?
422 00C1 3402 clr r1.@USB_Req
423 00C2 3D0A SZ Z ;
424 00C3 2C20 JMP ExitExt1
425 00C4
426 00C4 3C00 E sz bKB_KeyUpt
427 00C5 2C17 jmp report_pipe1_data
428 00C6 2C20 jmp ExitExt1
429 00C7
430 00C7
431 00C7 report_pipe1_data:
432 00C7 3400 E clr bKB_KeyUpt
433 00C8 2000 E CALL MoveKeyboardData ;Update it
434 00C9
435 00C9 out_fifo1_data:
436 00C9 2000 E CALL FIFO1_Wr_Check ;FIFO0 ready ?
437 00CA 0F08 mov a,8
438 00CB 0080 E mov FIFO_SendLen,a
439 00CC 2000 E CALL WriteFIFO1
440 00CD
441 00CD 3400 E clr btime_out_KB
442 00CE 1F00 E clr TempKBTime
443 00CF 1F00 E clr tempkbtime_L
444 00D0
445 00D0
446 00D0 ExitExt1:
447 00D0 349B clr int_reg.@int1
448 00D1 3400 R clr int_reg_temp.@int1
449 00D2 2B69 JMP Exit_of_Ext_start
450 00D3
451 00D3 ;----------------------------------------------------------------------------
452 00D3 Check_Pipe2:
453 00D3 AccessFIFO2:
454 00D3 3C00 E sz bCMD_INDEX ;Reset to 0
455 00D4 2C25 jmp ExitExt2
456 00D5
457 00D5 ExitExt2:
458 00D5 351B clr int_reg.@int2
459 00D6 3400 R clr int_reg_temp.@int2
460 00D7 2B69 JMP Exit_of_Ext_start
461 00D8
462 00D8 ;----------------------------------------------------------------------------
463 00D8 Check_Pipe3:
464 00D8 AccessFIFO3:
465 00D8 359B clr int_reg.@int3
466 00D9 3400 R clr int_reg_temp.@int3
467 00DA 2B69 JMP Exit_of_Ext_start
468 00DB ;----------------------------------------------------------------------------
469 00DB
470 00DB
471 00DB public ToStallPipe0
472 00DB public SendFIFOOut
473 00DB public SendHandShake
474 00DB public RequestResponse
475 00DB public usb_request_pcl_5
"File: USB_INT2.ASM Holtek Cross-Assembler Version 2.86 Page 9
476 00DB public ext_start
477 00DB public ExitExt
478 00DB END
0 Errors
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -