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

📄 chap_9.lst

📁 周立功的LPC214x固件程序
💻 LST
📖 第 1 页 / 共 5 页
字号:

*** CODE SEGMENT '?PR?stall_ep0?T?Chap_9':
   76: void stall_ep0(void)
 00000000  B500      PUSH        {LR}
ARM COMPILER V2.53,  Chap_9                                                                28/06/07  09:54:11  PAGE 11  

   78:     USB_SetEndpointStatus(0, 1);
 00000002  2000      MOV         R0,#0x0
 00000004  2101      MOV         R1,#0x1
 00000006  F7FF      BL          USB_SetEndpointStatus?T  ; T=0x0001  (1)
 00000008  FFFB      BL          USB_SetEndpointStatus?T  ; T=0x0001  (2)
   79:     USB_SetEndpointStatus(1, 1);
 0000000A  2001      MOV         R0,#0x1
 0000000C  2101      MOV         R1,#0x1
 0000000E  F7FF      BL          USB_SetEndpointStatus?T  ; T=0x0001  (1)
 00000010  FFF7      BL          USB_SetEndpointStatus?T  ; T=0x0001  (2)
   80: }
 00000012  BC08      POP         {R3}
 00000014  4718      BX          R3
 00000016          ENDP ; 'stall_ep0?T'


*** CODE SEGMENT '?PR?reserved?T?Chap_9':
   86: void reserved(void)
 00000000  B500      PUSH        {LR}
   88:     stall_ep0();
 00000002  F7FF      BL          stall_ep0?T  ; T=0x0001  (1)
 00000004  FFFD      BL          stall_ep0?T  ; T=0x0001  (2)
   89: }
 00000006  BC08      POP         {R3}
 00000008  4718      BX          R3
 0000000A          ENDP ; 'reserved?T'


*** CODE SEGMENT '?PR?init_unconfig?T?Chap_9':
   95: void init_unconfig(void)
 00000000  B500      PUSH        {LR}
   97:     USB_SetEndpointEnable(0);
 00000002  2000      MOV         R0,#0x0
 00000004  F7FF      BL          USB_SetEndpointEnable?T  ; T=0x0001  (1)
 00000006  FFFC      BL          USB_SetEndpointEnable?T  ; T=0x0001  (2)
   98: }
 00000008  BC08      POP         {R3}
 0000000A  4718      BX          R3
 0000000C          ENDP ; 'init_unconfig?T'


*** CODE SEGMENT '?PR?init_config?T?Chap_9':
  104: void init_config(void)
 00000000  B500      PUSH        {LR}
  106:     USB_SetEndpointEnable(1);
 00000002  2001      MOV         R0,#0x1
 00000004  F7FF      BL          USB_SetEndpointEnable?T  ; T=0x0001  (1)
 00000006  FFFC      BL          USB_SetEndpointEnable?T  ; T=0x0001  (2)
  107: }
 00000008  BC08      POP         {R3}
 0000000A  4718      BX          R3
 0000000C          ENDP ; 'init_config?T'


*** CODE SEGMENT '?PR?single_transmit?T?Chap_9':
  116: void single_transmit(INT8U * buf, INT8U len)
 00000000  B503      PUSH        {R0-R1,LR}
  119:     if( len <= EP0_PACKET_SIZE)
 00000002  A801      ADD         R0,R13,#0x4
 00000004  7800      LDRB        R0,[R0,#0x0] ; len
 00000006  2840      CMP         R0,#0x40
 00000008  DC07      BGT         L_1  ; T=0x0000001A
  121:         USB_WriteEndpoint(1, len, buf);
 0000000A  A801      ADD         R0,R13,#0x4
 0000000C  7800      LDRB        R0,[R0,#0x0] ; len
 0000000E  1C01      MOV         R1,R0
 00000010  A800      ADD         R0,R13,#0x0
 00000012  6802      LDR         R2,[R0,#0x0] ; buf
 00000014  2001      MOV         R0,#0x1
 00000016  F7FF      BL          USB_WriteEndpoint?T  ; T=0x0001  (1)
 00000018  FFF3      BL          USB_WriteEndpoint?T  ; T=0x0001  (2)
  122:     }
 0000001A          L_1:
  123: }
ARM COMPILER V2.53,  Chap_9                                                                28/06/07  09:54:11  PAGE 12  

 0000001A  B002      ADD         R13,#0x8
 0000001C  BC08      POP         {R3}
 0000001E  4718      BX          R3
 00000020          ENDP ; 'single_transmit?T'


*** CODE SEGMENT '?PR?code_transmit?T?Chap_9':
  133: void code_transmit(INT8U * pRomData, INT16U len)
 00000000  B503      PUSH        {R0-R1,LR}
  135:     ControlData.wCount = 0;
 00000002  2100      MOV         R1,#0x0
 00000004  4800      LDR         R0,=ControlData + 0xA ; ControlData+10
 00000006  8001      STRH        R1,[R0,#0x0] ; ControlData+10
  137:     if(ControlData.wLength > len)
 00000008  A801      ADD         R0,R13,#0x4
 0000000A  8800      LDRH        R0,[R0,#0x0] ; len
 0000000C  1C01      MOV         R1,R0
 0000000E  4800      LDR         R0,=ControlData + 0x8 ; ControlData+8
 00000010  8800      LDRH        R0,[R0,#0x0] ; ControlData+8
 00000012  4288      CMP         R0,R1
 00000014  D903      BLS         L_2  ; T=0x0000001E
  138:         ControlData.wLength = len;                                  /* 长度要小于len        the wLength can't above len */
 00000016  A801      ADD         R0,R13,#0x4
 00000018  8801      LDRH        R1,[R0,#0x0] ; len
 0000001A  4800      LDR         R0,=ControlData + 0x8 ; ControlData+8
 0000001C  8001      STRH        R1,[R0,#0x0] ; ControlData+8
 0000001E          L_2:
  140:     ControlData.pData = pRomData;
 0000001E  A800      ADD         R0,R13,#0x0
 00000020  6801      LDR         R1,[R0,#0x0] ; pRomData
 00000022  4800      LDR         R0,=ControlData + 0xC ; ControlData+12
 00000024  6001      STR         R1,[R0,#0x0] ; ControlData+12
  141:     if( ControlData.wLength >= EP0_PACKET_SIZE)
 00000026  4800      LDR         R0,=ControlData + 0x8 ; ControlData+8
 00000028  8800      LDRH        R0,[R0,#0x0] ; ControlData+8
 0000002A  2840      CMP         R0,#0x40
 0000002C  D316      BCC         L_3  ; T=0x0000005C
  143:         USB_WriteEndpoint(1, EP0_PACKET_SIZE, ControlData.pData);   
 0000002E  4800      LDR         R0,=ControlData + 0xC ; ControlData+12
 00000030  6802      LDR         R2,[R0,#0x0] ; ControlData+12
 00000032  2001      MOV         R0,#0x1
 00000034  2140      MOV         R1,#0x40
 00000036  F7FF      BL          USB_WriteEndpoint?T  ; T=0x0001  (1)
 00000038  FFE3      BL          USB_WriteEndpoint?T  ; T=0x0001  (2)
  144:         ControlData.wCount += EP0_PACKET_SIZE;                      /* 计数器累加           count number have been sent */
 0000003A  4800      LDR         R0,=ControlData + 0xA ; ControlData+10
 0000003C  8801      LDRH        R1,[R0,#0x0] ; ControlData+10
 0000003E  3140      ADD         R1,#0x40
 00000040  4800      LDR         R0,=ControlData + 0xA ; ControlData+10
 00000042  8001      STRH        R1,[R0,#0x0] ; ControlData+10
  146:         DISABLE();
 00000044  F7FF      BL          DISABLE?T  ; T=0x0001  (1)
 00000046  FFDC      BL          DISABLE?T  ; T=0x0001  (2)
  147:         bEPPflags.bits.control_state = USB_TRANSMIT;                /* 标识发送状态         flag transmit state */      
 00000048  4800      LDR         R0,=bEPPflags ; bEPPflags
 0000004A  6801      LDR         R1,[R0,#0x0] ; bEPPflags
 0000004C  22C0      MOV         R2,#0xC0
 0000004E  4391      BIC         R1,R2
 00000050  2240      MOV         R2,#0x40
 00000052  4311      ORR         R1,R2
 00000054  6001      STR         R1,[R0,#0x0] ; bEPPflags
  148:         ENABLE();
 00000056  F7FF      BL          ENABLE?T  ; T=0x0001  (1)
 00000058  FFD3      BL          ENABLE?T  ; T=0x0001  (2)
  149:     }
 0000005A  E017      B           L_4  ; T=0x0000008C
 0000005C          L_3:
  152:         USB_WriteEndpoint(1, ControlData.wLength, pRomData);        /* 将全部数据写入端点   write all data into endpoint */
ARM COMPILER V2.53,  Chap_9                                                                28/06/07  09:54:11  PAGE 13  

 0000005C  4800      LDR         R0,=ControlData + 0x8 ; ControlData+8
 0000005E  8800      LDRH        R0,[R0,#0x0] ; ControlData+8
 00000060  1C01      MOV         R1,R0
 00000062  A800      ADD         R0,R13,#0x0
 00000064  6802      LDR         R2,[R0,#0x0] ; pRomData
 00000066  2001      MOV         R0,#0x1
 00000068  F7FF      BL          USB_WriteEndpoint?T  ; T=0x0001  (1)
 0000006A  FFCA      BL          USB_WriteEndpoint?T  ; T=0x0001  (2)
  153:         ControlData.wCount += ControlData.wLength;                  /* 计数器累加           count number have been sent */
 0000006C  4800      LDR         R0,=ControlData + 0x8 ; ControlData+8
 0000006E  8800      LDRH        R0,[R0,#0x0] ; ControlData+8
 00000070  4800      LDR         R1,=ControlData + 0xA ; ControlData+10
 00000072  8809      LDRH        R1,[R1,#0x0] ; ControlData+10
 00000074  1809      ADD         R1,R0
 00000076  4800      LDR         R0,=ControlData + 0xA ; ControlData+10
 00000078  8001      STRH        R1,[R0,#0x0] ; ControlData+10
  154:         DISABLE();
 0000007A  F7FF      BL          DISABLE?T  ; T=0x0001  (1)
 0000007C  FFC1      BL          DISABLE?T  ; T=0x0001  (2)
  155:         bEPPflags.bits.control_state = USB_IDLE;                    /* 标识空闲状态         flag IDLE state */
 0000007E  4800      LDR         R0,=bEPPflags ; bEPPflags
 00000080  6801      LDR         R1,[R0,#0x0] ; bEPPflags
 00000082  22C0      MOV         R2,#0xC0
 00000084  4391      BIC         R1,R2
 00000086  6001      STR         R1,[R0,#0x0] ; bEPPflags
  156:         ENABLE();
 00000088  F7FF      BL          ENABLE?T  ; T=0x0001  (1)
 0000008A  FFBA      BL          ENABLE?T  ; T=0x0001  (2)
  157:     }
 0000008C          L_4:
  158: }
 0000008C  B002      ADD         R13,#0x8
 0000008E  BC08      POP         {R3}
 00000090  4718      BX          R3
 00000092          ENDP ; 'code_transmit?T'


*** CODE SEGMENT '?PR?get_status?T?Chap_9':
  172: void get_status(void)
 00000000  B500      PUSH        {LR}
 00000002  B084      SUB         R13,#0x10
  173: {
 00000004            ; SCOPE-START
  175:     INT8U bRecipient = ControlData.DeviceRequest.bmRequestType & USB_RECIPIENT; 
 00000004  4800      LDR         R0,=ControlData ; ControlData
 00000006  7800      LDRB        R0,[R0,#0x0] ; ControlData
 00000008  1C01      MOV         R1,R0
 0000000A  201F      MOV         R0,#0x1F
 0000000C  4001      AND         R1,R0
 0000000E  0609      LSL         R1,R1,#0x18
 00000010  0E09      LSR         R1,R1,#0x18
 00000012  A803      ADD         R0,R13,#0xC
 00000014  7001      STRB        R1,[R0,#0x0] ; bRecipient
  177:     if (bRecipient == USB_RECIPIENT_DEVICE) 
 00000016  A803      ADD         R0,R13,#0xC
 00000018  7800      LDRB        R0,[R0,#0x0] ; bRecipient
 0000001A  2800      CMP         R0,#0x0
 0000001C  D116      BNE         L_5  ; T=0x0000004C
  179:         if(bEPPflags.bits.remote_wakeup == 1)           
 0000001E  4800      LDR         R0,=bEPPflags ; bEPPflags
 00000020  6800      LDR         R0,[R0,#0x0] ; bEPPflags
 00000022  0900      LSR         R0,R0,#0x4
 00000024  2101      MOV         R1,#0x1
 00000026  4008      AND         R0,R1
 00000028  2801      CMP         R0,#0x1
 0000002A  D103      BNE         L_6  ; T=0x00000034
  180:             txdat[0] = 3;                                       /* 支持远程唤醒和自供电 support reamote wakeup and power itself */ 
 0000002C  2103      MOV         R1,#0x3

⌨️ 快捷键说明

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