📄 isr.ls1
字号:
007B E500 F 606 MOV A,ControlData+07H
007D 9408 607 SUBB A,#08H
007F E500 F 608 MOV A,ControlData+06H
0081 9400 609 SUBB A,#00H
0083 AF00 F 610 MOV R7,bEPPflags
0085 EF 611 MOV A,R7
0086 543F 612 ANL A,#03FH
0088 4003 613 JC ?C0021
614 ; /* data length not acceptable */
615 ; bEPPflags.bits.control_state = USB_IDLE;
616 ; SOURCE LINE # 174
008A F500 F 617 MOV bEPPflags,A
618 ; stall_ep0; /* stall control endpoints */
619 ; SOURCE LINE # 175
620 ; }
621 ; SOURCE LINE # 176
008C 22 622 RET
008D 623 ?C0021:
624 ; else {
625 ; SOURCE LINE # 177
626 ; /* Device need to be received number of wLength byt
es of data from host */
627 ; bEPPflags.bits.control_state = USB_RECEIVE; /*
set command with OUT token */
628 ; SOURCE LINE # 179
008D 4480 629 ORL A,#080H
008F F500 F 630 MOV bEPPflags,A
631 ; }
632 ; SOURCE LINE # 180
633 ; } // set command with data
634 ; SOURCE LINE # 181
635 ; } // else set command
636 ; SOURCE LINE # 182
637 ; } // if setup packet
638 ; SOURCE LINE # 183
0091 22 639 RET
0092 640 ?C0014:
641 ;
642 ; else if (bEPPflags.bits.control_state == USB_RECEIVE) {
643 ; SOURCE LINE # 185
A51 MACRO ASSEMBLER ISR 03/23/2005 21:15:58 PAGE 11
0092 AF00 F 644 MOV R7,bEPPflags
0094 EF 645 MOV A,R7
0095 C4 646 SWAP A
0096 13 647 RRC A
0097 13 648 RRC A
0098 5403 649 ANL A,#03H
009A 6402 650 XRL A,#02H
009C 7030 651 JNZ ?C0024
652 ; i = D12_ReadEndpoint(0, ControlData.dataBuffer + ControlData.wCount,
653 ; SOURCE LINE # 186
009E 7400 F 654 MOV A,#LOW (ControlData+0FH)
00A0 2500 F 655 ADD A,ControlData+0BH
00A2 F9 656 MOV R1,A
00A3 E4 657 CLR A
00A4 FA 658 MOV R2,A
00A5 FB 659 MOV R3,A
00A6 750010 F 660 MOV ?_D12_ReadEndpoint?BYTE+04H,#010H
00A9 FF 661 MOV R7,A
00AA 120000 F 662 LCALL _D12_ReadEndpoint
663 ;---- Variable 'i?443' assigned to Register 'R7' ----
664 ; EP0_PACKET_SIZE);
665 ;
666 ; ControlData.wCount += i;
667 ; SOURCE LINE # 189
00AD EF 668 MOV A,R7
00AE 2500 F 669 ADD A,ControlData+0BH
00B0 F500 F 670 MOV ControlData+0BH,A
00B2 E4 671 CLR A
00B3 3500 F 672 ADDC A,ControlData+0AH
00B5 F500 F 673 MOV ControlData+0AH,A
674 ; if( i != EP0_PACKET_SIZE || ControlData.wCount >= ControlData.wLength) {
675 ; SOURCE LINE # 190
00B7 BF100B 676 CJNE R7,#010H,?C0026
00BA C3 677 CLR C
00BB E500 F 678 MOV A,ControlData+0BH
00BD 9500 F 679 SUBB A,ControlData+09H
00BF E500 F 680 MOV A,ControlData+0AH
00C1 9500 F 681 SUBB A,ControlData+08H
00C3 4010 682 JC ?C0016
00C5 683 ?C0026:
684 ; bEPPflags.bits.setup_packet = 1;
685 ; SOURCE LINE # 191
00C5 686 ?C0036:
00C5 AF00 F 687 MOV R7,bEPPflags
00C7 EF 688 MOV A,R7
00C8 4408 689 ORL A,#08H
00CA F500 F 690 MOV bEPPflags,A
691 ; bEPPflags.bits.control_state = USB_IDLE;
692 ; SOURCE LINE # 192
693 ; }
694 ; SOURCE LINE # 193
695 ; }
696 ; SOURCE LINE # 194
00CC 8000 697 SJMP ?C0037
00CE 698 ?C0024:
699 ;
700 ; else {
701 ; SOURCE LINE # 196
702 ; bEPPflags.bits.control_state = USB_IDLE;
703 ; SOURCE LINE # 197
00CE 704 ?C0035:
00CE 705 ?C0037:
00CE AF00 F 706 MOV R7,bEPPflags
00D0 EF 707 MOV A,R7
00D1 543F 708 ANL A,#03FH
00D3 F500 F 709 MOV bEPPflags,A
A51 MACRO ASSEMBLER ISR 03/23/2005 21:15:58 PAGE 12
710 ; }
711 ; SOURCE LINE # 198
712 ; }
713 ; SOURCE LINE # 199
00D5 714 ?C0016:
00D5 22 715 RET
716 ; END OF ProcessCtrlOutEP
717
718 ;
719 ; // Control IN handler
720 ; void ProcessCtrlInEP(void)
721
---- 722 RSEG ?PR?ProcessCtrlInEP?ISR
0000 723 ProcessCtrlInEP:
724 USING 0
725 ; SOURCE LINE # 202
726 ; {
727 ; SOURCE LINE # 203
728 ; short i = ControlData.wLength - ControlData.wCount;
729 ; SOURCE LINE # 204
0000 C3 730 CLR C
0001 E500 F 731 MOV A,ControlData+09H
0003 9500 F 732 SUBB A,ControlData+0BH
0005 F500 F 733 MOV i?544+01H,A
0007 E500 F 734 MOV A,ControlData+08H
0009 9500 F 735 SUBB A,ControlData+0AH
000B F500 F 736 MOV i?544,A
737 ;
738 ; D12_ReadLastTransactionStatus(1); /* Clear interrupt flag */
739 ; SOURCE LINE # 206
000D 7F01 740 MOV R7,#01H
000F 120000 F 741 LCALL _D12_ReadLastTransactionStatus
742 ;
743 ; /* if not in transmit status, return */
744 ; if (bEPPflags.bits.control_state != USB_TRANSMIT)
745 ; SOURCE LINE # 209
0012 AF00 F 746 MOV R7,bEPPflags
0014 EF 747 MOV A,R7
0015 C4 748 SWAP A
0016 13 749 RRC A
0017 13 750 RRC A
0018 5403 751 ANL A,#03H
001A 6401 752 XRL A,#01H
001C 7075 753 JNZ ?C0029
001E 754 ?C0028:
755 ; return;
756 ;
757 ; /* number of rest bytes to be sent is more then EP0_PACKET_SIZE bytes, send EP0_PAC
KET_SIZE bytes */
758 ; if( i >= EP0_PACKET_SIZE) {
759 ; SOURCE LINE # 213
001E C3 760 CLR C
001F E500 F 761 MOV A,i?544+01H
0021 9410 762 SUBB A,#010H
0023 E500 F 763 MOV A,i?544
0025 6480 764 XRL A,#080H
0027 9480 765 SUBB A,#080H
0029 4029 766 JC ?C0030
767 ; D12_WriteEndpoint(1, ControlData.pData + ControlData.wCount, EP0_PACKET_SIZ
E);
768 ; SOURCE LINE # 214
002B AB00 F 769 MOV R3,ControlData+0CH
002D E500 F 770 MOV A,ControlData+0EH
002F 2500 F 771 ADD A,ControlData+0BH
0031 F9 772 MOV R1,A
0032 E500 F 773 MOV A,ControlData+0DH
A51 MACRO ASSEMBLER ISR 03/23/2005 21:15:58 PAGE 13
0034 3500 F 774 ADDC A,ControlData+0AH
0036 FA 775 MOV R2,A
0037 750010 F 776 MOV ?_D12_WriteEndpoint?BYTE+04H,#010H
003A 7F01 777 MOV R7,#01H
003C 120000 F 778 LCALL _D12_WriteEndpoint
779 ; ControlData.wCount += EP0_PACKET_SIZE;
780 ; SOURCE LINE # 215
003F 7410 781 MOV A,#010H
0041 2500 F 782 ADD A,ControlData+0BH
0043 F500 F 783 MOV ControlData+0BH,A
0045 E4 784 CLR A
0046 3500 F 785 ADDC A,ControlData+0AH
0048 F500 F 786 MOV ControlData+0AH,A
787 ;
788 ; bEPPflags.bits.control_state = USB_TRANSMIT;
789 ; SOURCE LINE # 217
004A AF00 F 790 MOV R7,bEPPflags
004C EF 791 MOV A,R7
004D 543F 792 ANL A,#03FH
004F 4440 793 ORL A,#040H
0051 F500 F 794 MOV bEPPflags,A
795 ; }
796 ; SOURCE LINE # 218
0053 22 797 RET
0054 798 ?C0030:
799 ; /* send rest of bytes (number of bytes is less than EP0_PACKET_SIZE bytes) */
800 ; else if( i != 0) {
801 ; SOURCE LINE # 220
0054 E500 F 802 MOV A,i?544+01H
0056 4500 F 803 ORL A,i?544
0058 6022 804 JZ ?C0032
805 ; D12_WriteEndpoint(1, ControlData.pData + ControlData.wCount, i);
806 ; SOURCE LINE # 221
005A AB00 F 807 MOV R3,ControlData+0CH
005C E500 F 808 MOV A,ControlData+0EH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -