⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbproto.ls1

📁 Comlete files for fullfile the slave USB function!
💻 LS1
📖 第 1 页 / 共 5 页
字号:
                     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 + -