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