📄 isr.ls1
字号:
006C 6007 406 JZ ?C0003
407 ; bEPPflags.bits.ep1_rxdone = 1;
408 ; SOURCE LINE # 103
006E AF00 F 409 MOV R7,bEPPflags+01H
0070 EF 410 MOV A,R7
0071 4404 411 ORL A,#04H
0073 F500 F 412 MOV bEPPflags+01H,A
413 ; }
414 ; SOURCE LINE # 104
415 ; //if(i_st & D12_INT_ENDP2IN)
416 ; // main_txdone();
417 ; //if(i_st & D12_INT_ENDP2OUT)
418 ; // main_rxdone();
419 ; }
420 ; SOURCE LINE # 109
0075 421 ?C0003:
422 ;
423 ; bEPPflags.bits.in_isr = 0;
424 ; SOURCE LINE # 111
0075 AF00 F 425 MOV R7,bEPPflags
0077 EF 426 MOV A,R7
0078 54DF 427 ANL A,#0DFH
007A F500 F 428 MOV bEPPflags,A
429 ; }
430 ; SOURCE LINE # 112
007C 22 431 RET
432 ; END OF fn_usb_isr
433
434 ;
435 ; void bus_reset(void)
436
---- 437 RSEG ?PR?bus_reset?ISR
0000 438 bus_reset:
439 ; SOURCE LINE # 114
440 ; {
441 ; SOURCE LINE # 115
442 ; }
443 ; SOURCE LINE # 116
0000 22 444 RET
445 ; END OF bus_reset
446
447 ;
448 ; // Control OUT handler
449 ; void ProcessCtrlOutEP(void)
450
---- 451 RSEG ?PR?ProcessCtrlOutEP?ISR
0000 452 ProcessCtrlOutEP:
453 USING 0
454 ; SOURCE LINE # 119
A51 MACRO ASSEMBLER ISR 03/23/2005 21:15:58 PAGE 8
455 ; {
456 ; SOURCE LINE # 120
457 ; unsigned char ep_last, i;
458 ;
459 ; /* Clear corresponding endpoint interrupt flag */
460 ; ep_last = D12_ReadLastTransactionStatus(0);
461 ; SOURCE LINE # 124
0000 E4 462 CLR A
0001 FF 463 MOV R7,A
0002 120000 F 464 LCALL _D12_ReadLastTransactionStatus
465 ;---- Variable 'ep_last?442' assigned to Register 'R7' ----
466 ;
467 ; /* check to see if the current received status is a SETUP package,
468 ; if so, SETUP endpoints have to be 'ACK'ed. */
469 ; if (ep_last & D12_SETUPPACKET) { /* SETUP package ? */
470 ; SOURCE LINE # 128
0005 EF 471 MOV A,R7
0006 20E503 472 JB ACC.5,$ + 6H
0009 020000 F 473 LJMP ?C0014
474 ; ControlData.wLength = 0;
475 ; SOURCE LINE # 129
000C E4 476 CLR A
000D F500 F 477 MOV ControlData+08H,A
000F F500 F 478 MOV ControlData+09H,A
479 ; ControlData.wCount = 0;
480 ; SOURCE LINE # 130
0011 F500 F 481 MOV ControlData+0AH,A
0013 F500 F 482 MOV ControlData+0BH,A
483 ;
484 ; /* Select control OUT endpoint, readbuffer, if validate device request,
485 ; save to deviceRequest clear buffer */
486 ; if( D12_ReadEndpoint(0, (unsigned char *)(&(ControlData.DeviceRequest)),
487 ; SOURCE LINE # 134
0015 FB 488 MOV R3,A
0016 7A00 F 489 MOV R2,#HIGH (ControlData)
0018 7900 F 490 MOV R1,#LOW (ControlData)
001A 750008 F 491 MOV ?_D12_ReadEndpoint?BYTE+04H,#08H
001D FF 492 MOV R7,A
001E 120000 F 493 LCALL _D12_ReadEndpoint
0021 EF 494 MOV A,R7
0022 6408 495 XRL A,#08H
0024 6003 496 JZ ?C0015
497 ; sizeof(ControlData.DeviceRequest)) != sizeof(DEVICE_REQUEST) ) {
498 ; SOURCE LINE # 135
499 ;
500 ; stall_ep0; /* stall control endpoints */
501 ; SOURCE LINE # 137
502 ; bEPPflags.bits.control_state = USB_IDLE;
503 ; SOURCE LINE # 138
0026 020000 F 504 LJMP ?C0035
505 ;
506 ; return;
507 ; }
508 ; SOURCE LINE # 141
0029 509 ?C0015:
510 ;
511 ; /* swap data low byte and high byte, for USB data structure is different
512 ; from C51 data structure */
513 ; ControlData.DeviceRequest.wValue = SWAP(ControlData.DeviceRequest.wValue);
514 ; SOURCE LINE # 145
0029 E500 F 515 MOV A,ControlData+02H
002B FD 516 MOV R5,A
002C E500 F 517 MOV A,ControlData+03H
002E F500 F 518 MOV ControlData+02H,A
0030 ED 519 MOV A,R5
0031 F500 F 520 MOV ControlData+03H,A
A51 MACRO ASSEMBLER ISR 03/23/2005 21:15:58 PAGE 9
521 ; ControlData.DeviceRequest.wIndex = SWAP(ControlData.DeviceRequest.wIndex);
522 ; SOURCE LINE # 146
0033 E500 F 523 MOV A,ControlData+04H
0035 FD 524 MOV R5,A
0036 E500 F 525 MOV A,ControlData+05H
0038 F500 F 526 MOV ControlData+04H,A
003A ED 527 MOV A,R5
003B F500 F 528 MOV ControlData+05H,A
529 ; ControlData.DeviceRequest.wLength = SWAP(ControlData.DeviceRequest.wLength)
;
530 ; SOURCE LINE # 147
003D E500 F 531 MOV A,ControlData+06H
003F FD 532 MOV R5,A
0040 E500 F 533 MOV A,ControlData+07H
0042 F500 F 534 MOV ControlData+06H,A
0044 ED 535 MOV A,R5
0045 F500 F 536 MOV ControlData+07H,A
537 ;
538 ; /* Acknowledge SETUP command to both IN and OUT endpoints, to reanable vali
date
539 ; and ClearBuffer commands. */
540 ; D12_AcknowledgeEndpoint(0);
541 ; SOURCE LINE # 151
0047 E4 542 CLR A
0048 FF 543 MOV R7,A
0049 120000 F 544 LCALL _D12_AcknowledgeEndpoint
545 ; D12_AcknowledgeEndpoint(1);
546 ; SOURCE LINE # 152
004C 7F01 547 MOV R7,#01H
004E 120000 F 548 LCALL _D12_AcknowledgeEndpoint
549 ;
550 ; /* If ControlRead, wLength means the number of bytes to be sent to host;
551 ; if ControlWrite,wLength means the number of bytes to be got from host. *
/
552 ; ControlData.wLength = ControlData.DeviceRequest.wLength;
553 ; SOURCE LINE # 156
0051 850000 F 554 MOV ControlData+08H,ControlData+06H
0054 850000 F 555 MOV ControlData+09H,ControlData+07H
556 ; ControlData.wCount = 0;
557 ; SOURCE LINE # 157
0057 E4 558 CLR A
0058 F500 F 559 MOV ControlData+0AH,A
005A F500 F 560 MOV ControlData+0BH,A
561 ;
562 ; /* Verify whether the contro transfer is Control READ/WRITE ? */
563 ; if (ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_D
IRECTION_MASK) {
564 ; SOURCE LINE # 160
005C E500 F 565 MOV A,ControlData
005E 30E711 566 JNB ACC.7,?C0017
567 ; /* Control Read (get command, device will need to send data packet
back to host) */
568 ; bEPPflags.bits.setup_packet = 1; // set event SETUP packet
569 ; SOURCE LINE # 162
0061 AF00 F 570 MOV R7,bEPPflags
0063 EF 571 MOV A,R7
0064 4408 572 ORL A,#08H
0066 F500 F 573 MOV bEPPflags,A
574 ; bEPPflags.bits.control_state = USB_TRANSMIT;
575 ; SOURCE LINE # 163
0068 AF00 F 576 MOV R7,bEPPflags
006A EF 577 MOV A,R7
006B 543F 578 ANL A,#03FH
006D 4440 579 ORL A,#040H
006F F500 F 580 MOV bEPPflags,A
581 ; }
A51 MACRO ASSEMBLER ISR 03/23/2005 21:15:58 PAGE 10
582 ; SOURCE LINE # 164
0071 22 583 RET
0072 584 ?C0017:
585 ; else { /* Control Write (set command) */
586 ; SOURCE LINE # 165
587 ; if (ControlData.DeviceRequest.wLength == 0) {
588 ; SOURCE LINE # 166
0072 E500 F 589 MOV A,ControlData+07H
0074 4500 F 590 ORL A,ControlData+06H
0076 7002 591 JNZ ?C0019
592 ; /* Control Write without data */
593 ; bEPPflags.bits.setup_packet = 1; // set event SETUP
packet
594 ; SOURCE LINE # 168
595 ; bEPPflags.bits.control_state = USB_IDLE;
596 ; SOURCE LINE # 169
597 ; }
598 ; SOURCE LINE # 170
0078 804B 599 SJMP ?C0036
007A 600 ?C0019:
601 ; else { /*Control Write with data */
602 ; SOURCE LINE # 171
603 ; if(ControlData.DeviceRequest.wLength > MAX_CONTROLDATA_SIZE
) {
604 ; SOURCE LINE # 172
007A D3 605 SETB C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -