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

📄 usbproto.ls1

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