📄 function.lst
字号:
285 0077 0F2D MOV A,USB_FIFO5
286 0078 2800 R JMP Read_FIFO
287 0079
288 0079 Read_FIFO:
289 0079 3026 SET MISC.@MISC_REQ
290 007A
291 007A 0080 E MOV FIFO_TEMP,A ;FIFO_TEMP SAVE FIFOX ADDRESS
292 007B 1F00 E CLR FIFO_SendLen
293 007C 0F00 E MOV A,OFFSET FIFO_Type
294 007D 0081 MOV MP0,A
295 007E Read_FIFO_Loop:
"File: FUNCTION.ASM Holtek Cross-Assembler Version 2.86 Page 6
296 007E 0700 E MOV A,FIFO_TEMP
297 007F 0083 MOV MP1,A
298 0080 0702 MOV A,R1
299 0081 0080 MOV R0,A
300 0082 1480 E INC FIFO_SendLen
301 0083 1481 INC MP0
302 0084 0700 E MOV A,FIFO_SIZE
303 0085 0400 E XOR A,FIFO_SendLen
304 0086 3D0A SZ Z ;1=FIFO_SIZE=FIFO_SendLen
305 0087 2800 R JMP Read_FIFO_End
306 0088 0F26 MOV A,USB_MISC
307 0089 0083 MOV MP1,A
308 008A 2000 R CALL Delay_28us
309 008B 3F02 SZ R1.@MISC_Ready
310 008C 2800 R JMP Read_FIFO_LOOP
311 008D 2800 R JMP Read_FIFO_End
312 008E
313 008E Send_Hand_Shake:
314 008E Send_Hand_Shake_wait:
315 008E ; protect die loop
316 008E 2000 R call Check_Real_Cmd
317 008F 3C00 E sz bFlag_Real_Cmd
318 0090 ;jmp USB_EP0_ISR_END
319 0090 0003 ret ;modify by 2006-02-16
320 0091
321 0091 2000 R CALL FIFO0_WR_CHECK
322 0092 3800 E SNZ bFlag_FIFO_Ready
323 0093 2800 R JMP Send_Hand_Shake_wait
324 0094
325 0094 3026 set MISC.@MISC_REQ
326 0095 WriteLen0:
327 0095 Write_FIFO_OK:
328 0095 Read_FIFO_End:
329 0095 0F26 MOV A,USB_MISC
330 0096 0083 MOV MP1,A
331 0097 0F02 MOV A,(01H SHL @MISC_TX) ;Change TX State
332 0098 ;CLR INTC0.0
333 0098 0482 XORM A,R1
334 0099 2000 R CALL Delay_3us
335 009A 3402 CLR R1.@MISC_REQ
336 009B ;SET INTC0.0
337 009B 0003 RET
338 009C ;============================================================
339 009C ;Function:Write FIFOx from FIFO_OUTx
340 009C ;============================================================
341 009C Write_FIFO0:
342 009C 0F28 MOV A,USB_FIFO0
343 009D 2800 R JMP Write_FIFO
344 009E Write_FIFO1:
345 009E 0F29 MOV A,USB_FIFO1
346 009F 2800 R JMP Write_FIFO
347 00A0 Write_FIFO2:
348 00A0 0F2A MOV A,USB_FIFO2
349 00A1 2800 R JMP Write_FIFO
350 00A2 Write_FIFO3:
351 00A2 0F2B MOV A,USB_FIFO3
352 00A3 2800 R JMP Write_FIFO
353 00A4 Write_FIFO4:
354 00A4 0F2C MOV A,USB_FIFO4
355 00A5 2800 R JMP Write_FIFO
"File: FUNCTION.ASM Holtek Cross-Assembler Version 2.86 Page 7
356 00A6 Write_FIFO5:
357 00A6 0F2D MOV A,USB_FIFO5
358 00A7 2800 R JMP Write_FIFO
359 00A8
360 00A8 Write_FIFO:
361 00A8 0001 clr wdt
362 00A9 3026 SET MISC.@MISC_REQ
363 00AA 0080 E MOV FIFO_TEMP,A ;FIFO NO Address
364 00AB 0F00 E MOV A,OFFSET FIFO_OUT1
365 00AC 0081 MOV MP0,A
366 00AD Write_FIFO_Loop:
367 00AD 0001 clr wdt
368 00AE 0700 E MOV A,FIFO_SendLen
369 00AF 0C00 XOR A,00H
370 00B0 3D0A SZ Z
371 00B1 2800 R JMP Write_FIFO_End
372 00B2
373 00B2 0700 E MOV A,FIFO_TEMP
374 00B3 0083 MOV MP1,A
375 00B4 0700 MOV A,R0
376 00B5 0082 MOV R1,A
377 00B6 1580 E DEC FIFO_SendLen
378 00B7 0700 E MOV A,FIFO_SendLen
379 00B8 0C00 XOR A,00H
380 00B9 3D0A SZ Z
381 00BA 2800 R JMP Write_FIFO_End ;;FIFO_SendLen=0 means send complete
382 00BB 1481 INC MP0
383 00BC 0F26 MOV A,USB_MISC
384 00BD 0083 MOV MP1,A
385 00BE 2000 R call Delay_28us
386 00BF 3F02 SZ R1.@MISC_Ready
387 00C0 2800 R JMP Write_FIFO_Loop
388 00C1 Write_FIFO_End:
389 00C1 0001 clr wdt
390 00C2 2800 R JMP Write_FIFO_OK
391 00C3
392 00C3
393 00C3 get_descriptor_length:
394 00C3 0001 clr wdt
395 00C4 0700 E MOV A,FIFO_WLENGTHH
396 00C5 0C00 XOR A,0
397 00C6 390A SNZ Z
398 00C7 2800 R JMP use_actual_length
399 00C8 0700 E MOV A,FIFO_WLENGTHL
400 00C9 0C00 XOR A,0
401 00CA 3D0A SZ Z
402 00CB 2800 R JMP use_actual_length
403 00CC 0700 E MOV A,FIFO_WLENGTHL
404 00CD 0200 E SUB A,data_count
405 00CE 3C0A SZ C ;if(FIFO_LENGTHL>data_count) c=1
406 00CF 2800 R JMP use_actual_length
407 00D0 0700 E MOV A,FIFO_WLENGTHL
408 00D1 0080 E MOV data_count,A
409 00D2 use_actual_length:
410 00D2 0003 RET
411 00D3 control_read:
412 00D3 0001 clr wdt
413 00D4 0700 E MOV A,data_start
414 00D5 0087 MOV TBLP,A
415 00D6 control_read_data_stage:
"File: FUNCTION.ASM Holtek Cross-Assembler Version 2.86 Page 8
416 00D6 0001 clr wdt
417 00D7 0F00 MOV A,00H
418 00D8 0080 E MOV Loop_Counter,A
419 00D9 0080 E MOV FIFO_SendLen,A
420 00DA
421 00DA
422 00DA 3EA6 SZ MISC.@MISC_SCMD
423 00DB 2800 R JMP control_read_status_stage_end
424 00DC 0001 clr wdt
425 00DD
426 00DD 0F00 E MOV A,OFFSET FIFO_TYPE
427 00DE 0081 MOV MP0,A
428 00DF
429 00DF 0700 E MOV A,data_count
430 00E0 0C00 XOR A,00H
431 00E1 3D0A SZ Z
432 00E2 2800 R JMP dma_load_done ;A=00H
433 00E3
434 00E3 dma_load_loop:
435 00E3 0001 clr wdt
436 00E4 3800 E SNZ bFlag_RD_HTable
437 00E5 2800 R JMP Read_Low_Bytes
438 00E6 Read_High_Bytes:
439 00E6 0001 clr wdt
440 00E7 3400 E CLR bFlag_RD_HTable
441 00E8 1D80 TABRDL R0
442 00E9 1487 INC TBLP
443 00EA 1480 E INC data_start
444 00EB 0708 MOV A,TBLH
445 00EC 0E3F AND A,00111111b
446 00ED 0080 MOV R0,A
447 00EE 0C3F XOR A,3FH
448 00EF 3D0A SZ Z
449 00F0 2800 R JMP dma_load_loop
450 00F1
451 00F1 2800 R JMP Check_Read_Length
452 00F2
453 00F2 Read_Low_Bytes:
454 00F2 0001 clr wdt
455 00F3 3000 E SET bFlag_RD_HTable
456 00F4 1D80 TABRDL R0
457 00F5 0700 MOV A,R0
458 00F6 Check_Read_Length:
459 00F6 0001 clr wdt
460 00F7 1481 INC MP0
461 00F8 1480 E INC loop_counter
462 00F9 1480 E INC FIFO_SendLen
463 00FA 1580 E DEC data_count
464 00FB 3D0A SZ Z
465 00FC 2800 R JMP wait_control_read
466 00FD 0700 E MOV A,loop_counter
467 00FE 0C08 XOR A,EP0_FIFO_SIZE
468 00FF 390A SNZ Z
469 0100 2800 R JMP dma_load_loop
470 0101 2800 R jmp wait_control_read
471 0102 dma_load_done:
472 0102 0001 clr wdt
473 0103 ;SZ MISC.@MISC_SCMD
474 0103 ;JMP control_read_status_stage_end
475 0103 2000 R CALL Send_Hand_Shake
"File: FUNCTION.ASM Holtek Cross-Assembler Version 2.86 Page 9
476 0104 2800 R jmp control_read_status_stage_end
477 0105
478 0105 wait_control_read:
479 0105 0001 clr wdt
480 0106 2000 R call Check_Real_Cmd
481 0107 3C00 E sz bFlag_Real_Cmd
482 0108 2800 R jmp control_read_status_stage_end
483 0109
484 0109 0001 clr wdt
485 010A 2000 R CALL FIFO0_WR_CHECK
486 010B 3800 E SNZ bFlag_FIFO_Ready
487 010C 2800 R JMP wait_control_read ;wait FIFO0 Ready
488 010D 2000 R CALL Write_FIFO0
489 010E control_read_status_stage_end:
490 010E 0001 clr wdt
491 010F 0000 NOP
492 0110 0003 RET
493 0111
494 0111
495 0111
496 0111 ;-----------------------------------------------------------
497 0111 ; Check_Real_Cmd : if have new cmd , set bFlag_Real_Cmd else clr bFlag_Real_Cmd
498 0111 ;-----------------------------------------------------------
499 0111 Check_Real_Cmd:
500 0111 0001 clr wdt
501 0112 3400 E clr bFlag_Real_Cmd
502 0113 3EA6 SZ MISC.@MISC_SCMD
503 0114 3000 E set bFlag_Real_Cmd
504 0115 3FA6 SZ MISC.@MISC_LEN0
505 0116 3000 E set bFlag_Real_Cmd
506 0117 0003 RET
507 0118
508 0118 ;***************************************************************
509 0118 ; USB Stage3
510 0118 ; Process the request
511 0118 ;***************************************************************
512 0118 ;Set the device address to the wValue in the SETUP packet at the completion
513 0118 ;of the current transaction
514 0118 ;-----------------------------------------------------------
515 0118 ; Set Address
516 0118 ;-----------------------------------------------------------
517 0118 SetAddress:
518 0118 0001 clr wdt
519 0119 0700 E MOV A,FIFO_WVALUEL ;save address to FIFO_ADDR
520 011A 0080 E MOV FIFO_ADDR,A
521 011B 0080 E MOV FIFO_TEMP,A
522 011C
523 011C 0F25 MOV A,USB_SIES
524 011D 0083 MOV MP1,A
525 011E 0F01 MOV A,00000001b
526 011F 0582 ORM A,R1
527 0120 1800 E RLA FIFO_TEMP
528 0121 0EFE AND A,0FEH
529 0122 0080 E MOV FIFO_TEMP,A
530 0123
531 0123 0F23 MOV A,USB_AWR
532 0124 0083 MOV MP1,A
533 0125 0700 E MOV A,FIFO_TEMP
534 0126 0082 MOV R1,A
535 0127 0000 NOP
"File: FUNCTION.ASM Holtek Cross-Assembler Version 2.86 Page 10
536 0128
537 0128 2000 R CALL Send_Hand_Shake ;send a handshake with host
538 0129
539 0129 3000 E SET bFlag_Set_Address
540 012A ;;RET ;for test
541 012A 2800 E JMP USB_EP0_ISR_END
542 012B
543 012B ;-----------------------------------------------------------
544 012B ; Set Configuration
545 012B ;-----------------------------------------------------------
546 012B SetConfiguration:
547 012B ;//modify windows 2000 bug
548 012B 0001 clr wdt
549 012C 339C set USVC.7 ;unmute SPK
550 012D 33B0 set PGA_CTRL.7 ;unmute MIC
551 012E
552 012E 0700 E MOV A,FIFO_WVALUEL
553 012F 0080 E MOV USB_Configuration,A
554 0130 1F24 CLR STALL
555 0131 ;MOV A,USB_STALL
556 0131 ;MOV MP1,A
557 0131 ;CLR R1 ;not stall
558 0131 3000 E set bFlag_SetConfiguration_Ready
559 0132 SetConfiguration_wait:
560 0132 2000 R CALL Send_Hand_Shake
561 0133 2800 E JMP USB_EP0_ISR_END
562 0134
563 0134 ;-----------------------------------------------------------
564 0134 ; Set Interface
565 0134 ;-----------------------------------------------------------
566 0134 SetInterface:
567 0134 0001 clr wdt
568 0135 0700 E MOV A,FIFO_WVALUEL
569 0136 0080 E MOV USB_Interface_Alt,A
570 0137 0700 E MOV A,FIFO_WINDEXL
571 0138 0080 E MOV USB_Interface,A
572 0139 3000 E set bFlag_SetInterface_Ready
573 013A 3012 set pa.0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -