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

📄 usbcore.lst

📁 LPC214X例程全包括,代码大全
💻 LST
📖 第 1 页 / 共 5 页
字号:
 000000D2  E005      B           L_18  ; T=0x000000E0
 000000D4          L_31:
  210:           return (FALSE);
 000000D4  2000      MOV         R0,#0x0
 000000D6  E004      B           L_27  ; T=0x000000E2
  212:       } else {
 000000D8          L_30:
  213:         return (FALSE);
 000000D8  2000      MOV         R0,#0x0
 000000DA  E002      B           L_27  ; T=0x000000E2
  216:     default:
 000000DC          L_20:
  217:       return (FALSE);
 000000DC  2000      MOV         R0,#0x0
 000000DE  E000      B           L_27  ; T=0x000000E2
  218:   }
 000000E0          L_18:
  219:   return (TRUE);
 000000E0  2001      MOV         R0,#0x1
 000000E2            ; SCOPE-END
  220: }
 000000E2          L_27:
 000000E2  BC70      POP         {R4-R6}
 000000E4  BC08      POP         {R3}
 000000E6  4718      BX          R3
 000000E8          ENDP ; 'USB_SetClrFeature?T'


*** CODE SEGMENT '?PR?USB_GetDescriptor?T?usbcore':
  229: __inline BOOL USB_GetDescriptor (void) {
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  ---- Variable 'pD' assigned to Register 'R5' ----
 00000002  ---- Variable 'len' assigned to Register 'R4' ----
 00000002            ; SCOPE-START
  233:   switch (SetupPacket.bmRequestType.BM.Recipient) {
 00000002  4800      LDR         R0,=SetupPacket ; SetupPacket
 00000004  7800      LDRB        R0,[R0,#0x0] ; SetupPacket
 00000006  211F      MOV         R1,#0x1F
 00000008  4008      AND         R0,R1
 0000000A  2801      CMP         R0,#0x1
 0000000C  D040      BEQ         L_39  ; T=0x00000090
 0000000E  2800      CMP         R0,#0x0
 00000010  D140      BNE         L_38  ; T=0x00000094
  234:     case REQUEST_TO_DEVICE:
 00000012          L_37:
  235:       switch (SetupPacket.wValue.WB.H) {
ARM COMPILER V2.50a,  usbcore                                                              14/02/06  09:59:07  PAGE 19  

 00000012  4800      LDR         R0,=SetupPacket + 0x3 ; SetupPacket+3
 00000014  7800      LDRB        R0,[R0,#0x0] ; SetupPacket+3
 00000016  2802      CMP         R0,#0x2
 00000018  D008      BEQ         L_43  ; T=0x0000002C
 0000001A  2803      CMP         R0,#0x3
 0000001C  D02C      BEQ         L_44  ; T=0x00000078
 0000001E  2801      CMP         R0,#0x1
 00000020  D134      BNE         L_42  ; T=0x0000008C
  236:         case USB_DEVICE_DESCRIPTOR_TYPE:
 00000022          L_41:
  237:           EP0Data.pData = (BYTE *)USB_DeviceDescriptor;
 00000022  4800      LDR         R1,=USB_DeviceDescriptor ; USB_DeviceDescriptor
 00000024  4800      LDR         R0,=EP0Data ; EP0Data
 00000026  6001      STR         R1,[R0,#0x0] ; EP0Data
  238:           len = USB_DEVICE_DESC_SIZE;
 00000028  2412      MOV         R4,#0x12
  239:           break;
 0000002A  E035      B           L_36  ; T=0x00000098
  240:         case USB_CONFIGURATION_DESCRIPTOR_TYPE:
 0000002C          L_43:
  241:           pD = (BYTE *)USB_ConfigDescriptor;
 0000002C  4800      LDR         R5,=USB_ConfigDescriptor ; USB_ConfigDescriptor
  242:           for (n = 0; n != SetupPacket.wValue.WB.L; n++) {
 0000002E  2000      MOV         R0,#0x0
 00000030  ---- Variable 'n' assigned to Register 'R0' ----
 00000030  E00B      B           L_47  ; T=0x0000004A
 00000032          L_48:
  243:             if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bLength != 0) {
 00000032  1C29      MOV         R1,R5 ; pD
 00000034  7809      LDRB        R1,[R1,#0x0] ; pD
 00000036  2900      CMP         R1,#0x0
 00000038  D006      BEQ         L_45  ; T=0x00000048
  244:               pD += ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
 0000003A  1C2A      MOV         R2,R5 ; pD
 0000003C  3202      ADD         R2,#0x2
 0000003E  7811      LDRB        R1,[R2,#0x0]
 00000040  7853      LDRB        R3,[R2,#0x1]
 00000042  021B      LSL         R3,R3,#0x8
 00000044  4319      ORR         R1,R3
 00000046  186D      ADD         R5,R1 ; pD
  246:           }
 00000048          L_45:
 00000048  3001      ADD         R0,#0x1
 0000004A          L_47:
 0000004A  4800      LDR         R1,=SetupPacket + 0x2 ; SetupPacket+2
 0000004C  7809      LDRB        R1,[R1,#0x0] ; SetupPacket+2
 0000004E  1C0A      MOV         R2,R1
 00000050  1C01      MOV         R1,R0 ; n
 00000052  4291      CMP         R1,R2 ; n
 00000054  D1ED      BNE         L_48  ; T=0x00000032
  247:           if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bLength == 0) {
 00000056  1C28      MOV         R0,R5 ; pD
 00000058  7800      LDRB        R0,[R0,#0x0] ; pD
 0000005A  2800      CMP         R0,#0x0
 0000005C  D101      BNE         L_51  ; T=0x00000062
  248:             return (FALSE);
 0000005E  2000      MOV         R0,#0x0
 00000060  E027      B           L_52  ; T=0x000000B2
  249:           }
 00000062          L_51:
  250:           EP0Data.pData = pD;
 00000062  1C29      MOV         R1,R5 ; pD
 00000064  4800      LDR         R0,=EP0Data ; EP0Data
 00000066  6001      STR         R1,[R0,#0x0] ; EP0Data
  251:           len = ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
 00000068  1C29      MOV         R1,R5 ; pD
ARM COMPILER V2.50a,  usbcore                                                              14/02/06  09:59:07  PAGE 20  

 0000006A  3102      ADD         R1,#0x2
 0000006C  7808      LDRB        R0,[R1,#0x0]
 0000006E  784A      LDRB        R2,[R1,#0x1]
 00000070  0212      LSL         R2,R2,#0x8
 00000072  4310      ORR         R0,R2
 00000074  1C04      MOV         R4,R0
  252:           break;
 00000076  E00F      B           L_36  ; T=0x00000098
  253:         case USB_STRING_DESCRIPTOR_TYPE:
 00000078          L_44:
  254:           EP0Data.pData = (BYTE *)USB_StringDescriptor + SetupPacket.wValue.WB.L;
 00000078  4800      LDR         R0,=SetupPacket + 0x2 ; SetupPacket+2
 0000007A  7800      LDRB        R0,[R0,#0x0] ; SetupPacket+2
 0000007C  4800      LDR         R1,=USB_StringDescriptor ; USB_StringDescriptor
 0000007E  1809      ADD         R1,R0 ; USB_StringDescriptor
 00000080  4800      LDR         R0,=EP0Data ; EP0Data
 00000082  6001      STR         R1,[R0,#0x0] ; EP0Data
  255:           len = ((USB_STRING_DESCRIPTOR *)EP0Data.pData)->bLength;
 00000084  4800      LDR         R0,=EP0Data ; EP0Data
 00000086  6800      LDR         R0,[R0,#0x0] ; EP0Data
 00000088  7804      LDRB        R4,[R0,#0x0]
  256:           break;
 0000008A  E005      B           L_36  ; T=0x00000098
  257:         default:
 0000008C          L_42:
  258:           return (FALSE);
 0000008C  2000      MOV         R0,#0x0
 0000008E  E010      B           L_52  ; T=0x000000B2
  261:     case REQUEST_TO_INTERFACE:
 00000090          L_39:
  264:           return (FALSE);
 00000090  2000      MOV         R0,#0x0
 00000092  E00E      B           L_52  ; T=0x000000B2
  267:     default:
 00000094          L_38:
  268:       return (FALSE);
 00000094  2000      MOV         R0,#0x0
 00000096  E00C      B           L_52  ; T=0x000000B2
  269:   }
 00000098          L_36:
  271:   if (EP0Data.Count > len) {
 00000098  4800      LDR         R0,=EP0Data + 0x4 ; EP0Data+4
 0000009A  8800      LDRH        R0,[R0,#0x0] ; EP0Data+4
 0000009C  1C21      MOV         R1,R4 ; len
 0000009E  4288      CMP         R0,R1 ; len
 000000A0  D904      BLS         L_56  ; T=0x000000AC
  272:     EP0Data.Count = len;
 000000A2  1C21      MOV         R1,R4 ; len
 000000A4  0409      LSL         R1,R1,#0x10 ; len
 000000A6  0C09      LSR         R1,R1,#0x10
 000000A8  4800      LDR         R0,=EP0Data + 0x4 ; EP0Data+4
 000000AA  8001      STRH        R1,[R0,#0x0] ; EP0Data+4
  273:   }
 000000AC          L_56:
  274:   USB_DataInStage();
 000000AC  F7FF      BL          USB_DataInStage?T  ; T=0x0001  (1)
 000000AE  FFA8      BL          USB_DataInStage?T  ; T=0x0001  (2)
  276:   return (TRUE);
 000000B0  2001      MOV         R0,#0x1
 000000B2            ; SCOPE-END
  277: }
 000000B2          L_52:
 000000B2  BC30      POP         {R4-R5}
 000000B4  BC08      POP         {R3}
 000000B6  4718      BX          R3
 000000B8          ENDP ; 'USB_GetDescriptor?T'

ARM COMPILER V2.50a,  usbcore                                                              14/02/06  09:59:07  PAGE 21  


*** CODE SEGMENT '?PR?USB_SetConfiguration?T?usbcore':
  286: __inline BOOL USB_SetConfiguration (void) {
 00000000  B5F0      PUSH        {R4-R7,LR}
 00000002  ---- Variable 'n' assigned to Register 'R5' ----
 00000002  ---- Variable 'alt' assigned to Register 'R4' ----
 00000002            ; SCOPE-START
  290:   if (SetupPacket.wValue.WB.L) {
 00000002  4800      LDR         R0,=SetupPacket + 0x2 ; SetupPacket+2
 00000004  7800      LDRB        R0,[R0,#0x0] ; SetupPacket+2
 00000006  2800      CMP         R0,#0x0
 00000008  D100      BEQ         $+4
 0000000A  E090      B           L_57  ; T=0x0000012E
  291:     pD = (USB_COMMON_DESCRIPTOR *)USB_ConfigDescriptor;
 0000000E  4800      LDR         R6,=USB_ConfigDescriptor ; USB_ConfigDescriptor
 00000010  ---- Variable 'pD' assigned to Register 'R6' ----
  292:     while (pD->bLength) {
 00000010  E087      B           L_58  ; T=0x00000122
 00000012          L_60:
  293:       switch (pD->bDescriptorType) {
 00000012  1C30      MOV         R0,R6 ; pD
 00000014  7840      LDRB        R0,[R0,#0x1]
 00000016  2804      CMP         R0,#0x4
 00000018  D05A      BEQ         L_64  ; T=0x000000D0
 0000001A  2805      CMP         R0,#0x5
 0000001C  D05C      BEQ         L_65  ; T=0x000000D8
 0000001E  2802      CMP         R0,#0x2
 00000020  D17C      BNE         L_62  ; T=0x0000011C
  294:         case USB_CONFIGURATION_DESCRIPTOR_TYPE:
 00000022          L_63:
  295:           if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bConfigurationValue == SetupPacket.wValue.WB.L) {
 00000022  1C30      MOV         R0,R6 ; pD
 00000024  7940      LDRB        R0,[R0,#0x5]
 00000026  4800      LDR         R1,=SetupPacket + 0x2 ; SetupPacket+2
 00000028  7809      LDRB        R1,[R1,#0x0] ; SetupPacket+2
 0000002A  4288      CMP         R0,R1
 0000002C  D148      BNE         L_66  ; T=0x000000C0
  296:             USB_Configuration = SetupPacket.wValue.WB.L;
 0000002E  4800      LDR         R0,=SetupPacket + 0x2 ; SetupPacket+2
 00000030  7801      LDRB        R1,[R0,#0x0] ; SetupPacket+2
 00000032  4800      LDR         R0,=USB_Configuration ; USB_Configuration
 00000034  7001      STRB        R1,[R0,#0x0] ; USB_Configuration
  297:             USB_NumInterfaces = ((USB_CONFIGURATION_DESCRIPTOR *)pD)->bNumInterfaces;
 00000036  1C30      MOV         R0,R6 ; pD
 00000038  7901      LDRB        R1,[R0,#0x4]
 0000003A  4800      LDR         R0,=USB_NumInterfaces ; USB_NumInterfaces
 0000003C  7001      STRB        R1,[R0,#0x0] ; USB_NumInterfaces
  298:             for (n = 0; n < USB_IF_NUM; n++) {
 0000003E  2500      MOV         R5,#0x0
 00000040          L_70:
  299:               USB_AltSetting[n] = 0;
 00000040  2000      MOV         R0,#0x0
 00000042  1C2A      MOV         R2,R5 ; n
 00000044  4800      LDR         R1,=USB_AltSetting ; USB_AltSetting
 00000046  5488      STRB        R0,[R1,R2]
  300:             }
 00000048  3501      ADD         R5,#0x1
 0000004A  1C28      MOV         R0,R5 ; n
 0000004C  2804      CMP         R0,#0x4 ; n
 0000004E  D3F7      BCC         L_70  ; T=0x00000040
  301:             for (n = 1; n < 16; n++) {
 00000050  2501      MOV         R5,#0x1
 00000052          L_75:
  302:               if (USB_EndPointMask & (1 << n)) {
 00000052  1C28      MOV         R0,R5 ; n
 00000054  2101      MOV         R1,#0x1
 00000056  4081      LSL         R1,R0
ARM COMPILER V2.50a,  usbcore                                                              14/02/06  09:59:07  PAGE 22  

 00000058  4800      LDR         R0,=USB_EndPointMask ; USB_EndPointMask
 0000005A  6800      LDR         R0,[R0,#0x0] ; USB_EndPointMask
 0000005C  4008      AND         R0,R1
 0000005E  2800      CMP         R0,#0x0
 00000060  D001      BEQ         L_77  ; T=0x00000066
  303:                 USB_DisableEP(n);
 00000062  1C28      MOV         R0,R5 ; n
 00000064  F7FF      BL          USB_DisableEP?T  ; T=0x0001  (1)
 00000066  FFCC      BL          USB_DisableEP?T  ; T=0x0001  (2)
  304:               }
 00000068          L_77:
  305:               if (USB_EndPointMask & ((1 << 16) << n)) {
 00000068  1C28      MOV         R0,R5 ; n
 0000006A  4800      LDR         R1,=0x10000
 0000006C  4081      LSL         R1,R0
 0000006E  4800      LDR         R0,=USB_EndPointMask ; USB_EndPointMask
 00000070  6800      LDR         R0,[R0,#0x0] ; USB_EndPointMask
 00000072  4008      AND         R0,R1
 00000074  2800      CMP         R0,#0x0
 00000076  D003      BEQ         L_72  ; T=0x00000080
  306:                 USB_DisableEP(n | 0x80);
 00000078  1C28      MOV         R0,R5 ; n
 0000007A  2180      MOV         R1,#0x80
 0000007C  4308      ORR         R0,R1
 0000007E  F7FF      BL          USB_DisableEP?T  ; T=0x0001  (1)
 00000080  FFBF      BL          USB_DisableEP?T  ; T=0x0001  (2)
  308:             }
 00000082          L_72:
 00000082  3501      ADD         R5,#0x1
 00000084  1C28      MOV         R0,R5 ; n
 00000086  2810      CMP         R0,#0x10 ; n
 00000088  D3E3      BCC         L_75  ; T=0x00000052
  309:             USB_EndPointMask = 0x00010001;
 0000008A  4800      LDR         R1,=0x10001
 0000008C  4800      LDR         R0,=USB_EndPointMask ; USB_EndPointMask
 0000008E  6001      STR         R1,[R0,#0x0] ; USB_EndPointMask
  310:             USB_EndPointHalt = 0x00000000;
 00000090  2100      MOV       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -