📄 usbproto.ls1
字号:
615 ; 0x04, //4 bytes
616 ; 0x03, //bDescriptorType = String Desc
617 ; 0x09, //Lang ID for English = 0x0409
618 ; 0x04
619 ; };
620 ;
621 ; code csSTRING1[] = { //STRING1 Manumfacturer
622 ; 'M',0,'y',0,'U',0,'S',0,'B',0};
623 ; code csSTRING2[] = { //STRING2 Product Name
624 ; 'D',0,'e',0,'c',0,'o',0,'d',0,'e',0,'r',0};
A51 MACRO ASSEMBLER USBPROTO 03/23/2005 21:15:54 PAGE 11
625 ; code csSTRING3[] = { //STRING3 Configuration Name
626 ; 'S',0,'i',0,'m',0,'p',0,'l',0,'e',0,'D',0,'e',0,'v',0,'c',0,'e',0};
627 ; code csSTRING4[] = { //STRING4 Interface Name
628 ; 'H',0,'I',0,'D',0,'e',0,'x',0,'a',0,'m',0,'p',0,'l',0,'e',0};
629 ;
630 ;
631 ; struct STRING1 {
632 ; UCHAR bLength;
633 ; UCHAR bDescriptorType;
634 ; char string1[sizeof(csSTRING1)];
635 ; };
636 ; struct STRING1 code sSTRING1 = {
637 ; sizeof(csSTRING1)+2, //Size of String
638 ; 0x03, //STRING Descriptor Type
639 ; csSTRING1};
640 ; struct STRING2 {
641 ; UCHAR bLength;
642 ; UCHAR bDescriptorType;
643 ; char string1[sizeof(csSTRING2)];
644 ; };
645 ; struct STRING2 code sSTRING2 = {
646 ; sizeof(csSTRING2)+2, //Size of String
647 ; 0x03, //STRING Descriptor Type
648 ; csSTRING2};
649 ; struct STRING3 {
650 ; UCHAR bLength;
651 ; UCHAR bDescriptorType;
652 ; char string1[sizeof(csSTRING3)];
653 ; };
654 ; struct STRING3 code sSTRING3 = {
655 ; sizeof(csSTRING3)+2, //Size of String
656 ; 0x03, //STRING Descriptor Type
657 ; csSTRING3};
658 ; struct STRING4 {
659 ; UCHAR bLength;
660 ; UCHAR bDescriptorType;
661 ; char string1[sizeof(csSTRING4)];
662 ; };
663 ; struct STRING4 code sSTRING4 = {
664 ; sizeof(csSTRING4)+2, //Size of String
665 ; 0x03, //STRING Descriptor Type
666 ; csSTRING4};
667 ;
668 ;
669 ; //*************************************************************************
670 ; // USB Protocol Layer
671 ; //*************************************************************************
672 ;
673 ; void reserved(void)
674
---- 675 RSEG ?PR?reserved?USBPROTO
0000 676 reserved:
677 USING 0
678 ; SOURCE LINE # 264
679 ; {
680 ; SOURCE LINE # 265
681 ; stall_ep0();
682 ; SOURCE LINE # 266
0000 020000 F 683 LJMP stall_ep0
684 ; END OF reserved
685
686 ; }
687 ;
688 ; //*************************************************************************
689 ; // USB standard device requests
690 ; //*************************************************************************
A51 MACRO ASSEMBLER USBPROTO 03/23/2005 21:15:54 PAGE 12
691 ; void get_status(void)
692
---- 693 RSEG ?PR?get_status?USBPROTO
0000 694 get_status:
695 USING 0
696 ; SOURCE LINE # 272
697 ; {
698 ; SOURCE LINE # 273
699 ; unsigned char endp, txdat[2];
700 ; unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
701 ; SOURCE LINE # 275
0000 E500 F 702 MOV A,ControlData
0002 541F 703 ANL A,#01FH
0004 F500 F 704 MOV bRecipient?142,A
705 ; unsigned char c;
706 ;
707 ; if (bRecipient == USB_RECIPIENT_DEVICE) {
708 ; SOURCE LINE # 278
0006 7013 709 JNZ ?C0002
710 ; if(bEPPflags.bits.remote_wakeup == 1)
711 ; SOURCE LINE # 279
0008 AF00 F 712 MOV R7,bEPPflags
000A EF 713 MOV A,R7
000B C4 714 SWAP A
000C 540F 715 ANL A,#0FH
000E 30E005 716 JNB ACC.0,?C0003
717 ; txdat[0] = 3;
718 ; SOURCE LINE # 280
0011 750003 F 719 MOV txdat?141,#03H
0014 803E 720 SJMP ?C0073
0016 721 ?C0003:
722 ; else
723 ; txdat[0] = 1;
724 ; SOURCE LINE # 282
0016 750001 F 725 MOV txdat?141,#01H
0019 726 ?C0004:
727 ; txdat[1]=0;
728 ; SOURCE LINE # 283
729 ; single_transmit(txdat, 2);
730 ; SOURCE LINE # 284
731 ; } else if (bRecipient == USB_RECIPIENT_INTERFACE) {
732 ; SOURCE LINE # 285
0019 8039 733 SJMP ?C0073
001B 734 ?C0002:
001B E500 F 735 MOV A,bRecipient?142
001D B40105 736 CJNE A,#01H,?C0006
737 ; txdat[0]=0;
738 ; SOURCE LINE # 286
0020 E4 739 CLR A
0021 F500 F 740 MOV txdat?141,A
741 ; txdat[1]=0;
742 ; SOURCE LINE # 287
743 ; single_transmit(txdat, 2);
744 ; SOURCE LINE # 288
745 ; } else if (bRecipient == USB_RECIPIENT_ENDPOINT) {
746 ; SOURCE LINE # 289
0023 8030 747 SJMP ?C0074
0025 748 ?C0006:
0025 E500 F 749 MOV A,bRecipient?142
0027 6402 750 XRL A,#02H
0029 7036 751 JNZ ?C0008
752 ; endp = (unsigned char)(ControlData.DeviceRequest.wIndex & MAX_ENDPOINTS);
753 ; SOURCE LINE # 290
002B E500 F 754 MOV A,ControlData+05H
002D 5403 755 ANL A,#03H
002F F500 F 756 MOV endp?140,A
A51 MACRO ASSEMBLER USBPROTO 03/23/2005 21:15:54 PAGE 13
757 ; if (ControlData.DeviceRequest.wIndex & (unsigned char)USB_ENDPOINT_DIRECTIO
N_MASK)
758 ; SOURCE LINE # 291
0031 E500 F 759 MOV A,ControlData+05H
0033 30E707 760 JNB ACC.7,?C0009
761 ; c = D12_SelectEndpoint(endp*2 + 1); /* Control-in */
762 ; SOURCE LINE # 292
0036 E500 F 763 MOV A,endp?140
0038 25E0 764 ADD A,ACC
003A 04 765 INC A
003B 8004 766 SJMP ?C0072
003D 767 ?C0009:
768 ; else
769 ; c = D12_SelectEndpoint(endp*2); /* Control-out */
770 ; SOURCE LINE # 294
003D E500 F 771 MOV A,endp?140
003F 25E0 772 ADD A,ACC
0041 773 ?C0072:
0041 FF 774 MOV R7,A
0042 120000 F 775 LCALL _D12_SelectEndpoint
0045 8F00 F 776 MOV c?143,R7
0047 777 ?C0010:
778 ; if(c & D12_STALL)
779 ; SOURCE LINE # 295
0047 E500 F 780 MOV A,c?143
0049 30E105 781 JNB ACC.1,?C0011
782 ; txdat[0] = 1;
783 ; SOURCE LINE # 296
004C 750001 F 784 MOV txdat?141,#01H
004F 8003 785 SJMP ?C0012
0051 786 ?C0011:
787 ; else
788 ; txdat[0] = 0;
789 ; SOURCE LINE # 298
0051 E4 790 CLR A
0052 F500 F 791 MOV txdat?141,A
0054 792 ?C0012:
793 ; txdat[1] = 0;
794 ; SOURCE LINE # 299
0054 795 ?C0073:
0054 E4 796 CLR A
0055 797 ?C0074:
0055 F500 F 798 MOV txdat?141+01H,A
799 ; single_transmit(txdat, 2);
800 ; SOURCE LINE # 300
0057 FB 801 MOV R3,A
0058 7A00 F 802 MOV R2,#HIGH (txdat?141)
005A 7900 F 803 MOV R1,#LOW (txdat?141)
005C 7D02 804 MOV R5,#02H
005E 020000 F 805 LJMP _single_transmit
806 ; } else
807 ; SOURCE LINE # 301
0061 808 ?C0008:
809 ; stall_ep0();
810 ; SOURCE LINE # 302
0061 120000 F 811 LCALL stall_ep0
812 ; }
813 ; SOURCE LINE # 303
0064 814 ?C0014:
0064 22 815 RET
816 ; END OF get_status
817
818 ;
819 ; void clear_feature(void)
820
---- 821 RSEG ?PR?clear_feature?USBPROTO
A51 MACRO ASSEMBLER USBPROTO 03/23/2005 21:15:54 PAGE 14
0000 822 clear_feature:
823 USING 0
824 ; SOURCE LINE # 305
825 ; {
826 ; SOURCE LINE # 306
827 ; unsigned char endp;
828 ; unsigned char bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -