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