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

📄 usbhw.lst

📁 针对飞利浦LPC214x的虚拟串口程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
   46: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'EPAdr?T'


*** CODE SEGMENT '?PR?WrCmd?T?usbhw':
ARM COMPILER V2.53,  usbhw                                                                 09/06/07  15:42:23  PAGE 10  

   55: void WrCmd (DWORD cmd) {
 00000000  ---- Variable 'cmd' assigned to Register 'R0' ----
   57:     CMD_CODE = cmd;
 00000000  1C01      MOV         R1,R0 ; cmd
 00000002  4800      LDR         R0,=0xE0090010
 00000004  6001      STR         R1,[R0,#0x0]
   58:     while ((DEV_INT_STAT & CCEMTY_INT) == 0);    
 00000006          L_3:
 00000006  4800      LDR         R0,=0xE0090000
 00000008  6800      LDR         R0,[R0,#0x0]
 0000000A  2110      MOV         R1,#0x10
 0000000C  4208      TST         R0,R1
 0000000E  D0FA      BEQ         L_3  ; T=0x00000006
   59:     DEV_INT_CLR = CCEMTY_INT;
 00000010  4800      LDR         R0,=0xE0090008
 00000012  6001      STR         R1,[R0,#0x0]
   60: }
 00000014  4770      BX          R14
 00000016          ENDP ; 'WrCmd?T'


*** CODE SEGMENT '?PR?WrCmdDat?T?usbhw':
   70: void WrCmdDat (DWORD cmd, DWORD val) {
 00000000  1C0A      MOV         R2,R1 ; val
 00000002  ---- Variable 'val' assigned to Register 'R2' ----
 00000002  ---- Variable 'cmd' assigned to Register 'R0' ----
   72:     CMD_CODE = cmd;
 00000002  1C01      MOV         R1,R0 ; cmd
 00000004  4800      LDR         R0,=0xE0090010
 00000006  6001      STR         R1,[R0,#0x0]
   73:     while ((DEV_INT_STAT & CCEMTY_INT) == 0);    
 00000008          L_7:
 00000008  4800      LDR         R0,=0xE0090000
 0000000A  6800      LDR         R0,[R0,#0x0]
 0000000C  2110      MOV         R1,#0x10
 0000000E  4208      TST         R0,R1
 00000010  D0FA      BEQ         L_7  ; T=0x00000008
   74:     DEV_INT_CLR = CCEMTY_INT;
 00000012  4800      LDR         R0,=0xE0090008
 00000014  6001      STR         R1,[R0,#0x0]
   75:     CMD_CODE = val;
 00000016  1C11      MOV         R1,R2 ; val
 00000018  4800      LDR         R0,=0xE0090010
 0000001A  6001      STR         R1,[R0,#0x0]
   76:     while ((DEV_INT_STAT & CCEMTY_INT) == 0);    
 0000001C          L_11:
 0000001C  4800      LDR         R0,=0xE0090000
 0000001E  6800      LDR         R0,[R0,#0x0]
 00000020  2110      MOV         R1,#0x10
 00000022  4208      TST         R0,R1
 00000024  D0FA      BEQ         L_11  ; T=0x0000001C
   77:     DEV_INT_CLR = CCEMTY_INT;
 00000026  4800      LDR         R0,=0xE0090008
 00000028  6001      STR         R1,[R0,#0x0]
   78: }
 0000002A  4770      BX          R14
 0000002C          ENDP ; 'WrCmdDat?T'


*** CODE SEGMENT '?PR?RdCmdDat?T?usbhw':
   87: DWORD RdCmdDat (DWORD cmd) {
 00000000  ---- Variable 'cmd' assigned to Register 'R0' ----
 00000000            ; SCOPE-START
   90:     DEV_INT_CLR = CDFULL_INT; 
 00000000  2220      MOV         R2,#0x20
 00000002  4800      LDR         R1,=0xE0090008
 00000004  600A      STR         R2,[R1,#0x0]
   91:     CMD_CODE = cmd;
 00000006  1C01      MOV         R1,R0 ; cmd
 00000008  4800      LDR         R0,=0xE0090010
ARM COMPILER V2.53,  usbhw                                                                 09/06/07  15:42:23  PAGE 11  

 0000000A  6001      STR         R1,[R0,#0x0]
   92:     while ((DEV_INT_STAT & CCEMTY_INT) == 0);    
 0000000C          L_15:
 0000000C  4800      LDR         R0,=0xE0090000
 0000000E  6800      LDR         R0,[R0,#0x0]
 00000010  2110      MOV         R1,#0x10
 00000012  4208      TST         R0,R1
 00000014  D0FA      BEQ         L_15  ; T=0x0000000C
   93:     DEV_INT_CLR = CCEMTY_INT; 
 00000016  4800      LDR         R0,=0xE0090008
 00000018  6001      STR         R1,[R0,#0x0]
   94:     while ((DEV_INT_STAT & CDFULL_INT) == 0);    
 0000001A          L_19:
 0000001A  4800      LDR         R0,=0xE0090000
 0000001C  6800      LDR         R0,[R0,#0x0]
 0000001E  2220      MOV         R2,#0x20
 00000020  4210      TST         R0,R2
 00000022  D0FA      BEQ         L_19  ; T=0x0000001A
   95:     val = CMD_DATA;
 00000024  4800      LDR         R0,=0xE0090014
 00000026  6801      LDR         R1,[R0,#0x0]
 00000028  ---- Variable 'val' assigned to Register 'R1' ----
   96:     DEV_INT_CLR = CDFULL_INT;
 00000028  4800      LDR         R0,=0xE0090008
 0000002A  6002      STR         R2,[R0,#0x0]
   97:     return (val);
 0000002C  1C08      MOV         R0,R1 ; val
 0000002E            ; SCOPE-END
   98: }
 0000002E  4770      BX          R14
 00000030          ENDP ; 'RdCmdDat?T'


*** CODE SEGMENT '?PR?USB_Init?T?usbhw':
  106: void USB_Init (void) {
 00000000  B500      PUSH        {LR}
  108:     PCONP |= 0x80000000;                      /* Turn On USB PCLK */
 00000002  4800      LDR         R2,=0x80000000
 00000004  4800      LDR         R0,=0xE01FC0C4
 00000006  6801      LDR         R1,[R0,#0x0]
 00000008  4311      ORR         R1,R2
 0000000A  6001      STR         R1,[R0,#0x0]
  111:     PLL48CFG  = 0x23;                         /* M = 4, P = 2 */
 0000000C  2123      MOV         R1,#0x23
 0000000E  4800      LDR         R0,=0xE01FC0A4
 00000010  6001      STR         R1,[R0,#0x0]
  112:     PLL48CON  = PLLCON_PLLE;                  /* PLL Enable */
 00000012  2101      MOV         R1,#0x1
 00000014  4800      LDR         R0,=0xE01FC0A0
 00000016  6001      STR         R1,[R0,#0x0]
  113:     PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
 00000018  21AA      MOV         R1,#0xAA
 0000001A  4800      LDR         R0,=0xE01FC0AC
 0000001C  6001      STR         R1,[R0,#0x0]
  114:     PLL48FEED = 0x55;                         /* Feed Sequence 2 */
 0000001E  2155      MOV         R1,#0x55
 00000020  4800      LDR         R0,=0xE01FC0AC
 00000022  6001      STR         R1,[R0,#0x0]
  116:     while ((PLL48STAT & PLLSTAT_PLOCK) == 0); /* Wait for PLL Lock */
 00000024          L_24:
 00000024  4800      LDR         R0,=0xE01FC0A8
 00000026  6800      LDR         R0,[R0,#0x0]
 00000028  4800      LDR         R1,=0x400
 0000002A  4208      TST         R0,R1
 0000002C  D0FA      BEQ         L_24  ; T=0x00000024
  118:     PLL48CON  = PLLCON_PLLE | PLLCON_PLLC;    /* PLL Enable & Connect */
 0000002E  2103      MOV         R1,#0x3
 00000030  4800      LDR         R0,=0xE01FC0A0
ARM COMPILER V2.53,  usbhw                                                                 09/06/07  15:42:23  PAGE 12  

 00000032  6001      STR         R1,[R0,#0x0]
  119:     PLL48FEED = 0xAA;                         /* Feed Sequence 1 */
 00000034  21AA      MOV         R1,#0xAA
 00000036  4800      LDR         R0,=0xE01FC0AC
 00000038  6001      STR         R1,[R0,#0x0]
  120:     PLL48FEED = 0x55;                         /* Feed Sequence 2 */
 0000003A  2155      MOV         R1,#0x55
 0000003C  4800      LDR         R0,=0xE01FC0AC
 0000003E  6001      STR         R1,[R0,#0x0]
  122:     VICVectAddr0 = (unsigned long)USB_ISR;    /* USB Interrupt -> Vector 0 */
 00000040  4900      LDR         R1,=USB_ISR?A ; USB_ISR?A
 00000042  4800      LDR         R0,=0xFFFFF100
 00000044  6001      STR         R1,[R0,#0x0]
  123:     VICVectCntl0 = 0x20 | 22;                 /* USB Interrupt -> IRQ Slot 0 */
 00000046  2136      MOV         R1,#0x36
 00000048  4800      LDR         R0,=0xFFFFF200
 0000004A  6001      STR         R1,[R0,#0x0]
  124:     VICIntEnable = 1 << 22;                   /* Enable USB Interrupt */
 0000004C  4800      LDR         R1,=0x400000
 0000004E  4800      LDR         R0,=0xFFFFF010
 00000050  6001      STR         R1,[R0,#0x0]
  126:     DEV_INT_EN = DEV_STAT_INT;                /* Enable Device Status Interrupt */
 00000052  2108      MOV         R1,#0x8
 00000054  4800      LDR         R0,=0xE0090004
 00000056  6001      STR         R1,[R0,#0x0]
  129:     USB_Reset();
 00000058  F7FF      BL          USB_Reset?T  ; T=0x0001  (1)
 0000005A  FFD2      BL          USB_Reset?T  ; T=0x0001  (2)
  130:     USB_SetAddress(0);
 0000005C  2000      MOV         R0,#0x0
 0000005E  F7FF      BL          USB_SetAddress?T  ; T=0x0001  (1)
 00000060  FFCF      BL          USB_SetAddress?T  ; T=0x0001  (2)
  132: }
 00000062  BC08      POP         {R3}
 00000064  4718      BX          R3
 00000066          ENDP ; 'USB_Init?T'


*** CODE SEGMENT '?PR?USB_Connect?T?usbhw':
  141: void USB_Connect (BOOL con) {
 00000000  B500      PUSH        {LR}
 00000002  1C01      MOV         R1,R0 ; con
 00000004  ---- Variable 'con' assigned to Register 'R1' ----
  142:     WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(con ? DEV_CON : 0));
 00000004  1C08      MOV         R0,R1 ; con
 00000006  2800      CMP         R0,#0x0 ; con
 00000008  D001      BEQ         L_28  ; T=0x0000000E
 0000000A  2101      MOV         R1,#0x1
 0000000C  E000      B           L_29  ; T=0x00000010
 0000000E          L_28:
 0000000E  2100      MOV         R1,#0x0
 00000010          L_29:
 00000010  0409      LSL         R1,R1,#0x10
 00000012  4840      LDR         R0,=0x100
 00000014  4301      ORR         R1,R0
 00000016  4800      LDR         R0,=0xFE0500
 00000018  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          WrCmdDat?T  ; T=0x0001  (2)
  143: }
 0000001C  BC08      POP         {R3}
 0000001E  4718      BX          R3
 00000020          ENDP ; 'USB_Connect?T'


*** CODE SEGMENT '?PR?USB_Reset?T?usbhw':
  153:     EP_INDEX = 0;
 00000000  2100      MOV         R1,#0x0
 00000002  4800      LDR         R0,=0xE0090048
 00000004  6001      STR         R1,[R0,#0x0]
  154:     MAXPACKET_SIZE = USB_MAX_PACKET0;
ARM COMPILER V2.53,  usbhw                                                                 09/06/07  15:42:23  PAGE 13  

 00000006  2140      MOV         R1,#0x40
 00000008  4800      LDR         R0,=0xE009004C
 0000000A  6001      STR         R1,[R0,#0x0]
  155:     EP_INDEX = 1;
 0000000C  2201      MOV         R2,#0x1
 0000000E  4800      LDR         R0,=0xE0090048
 00000010  6002      STR         R2,[R0,#0x0]
  156:     MAXPACKET_SIZE = USB_MAX_PACKET0;
 00000012  4800      LDR         R0,=0xE009004C
 00000014  6001      STR         R1,[R0,#0x0]
  157:     while ((DEV_INT_STAT & EP_RLZED_INT) == 0);
 00000016          L_30:
 00000016  4800      LDR         R0,=0xE0090000
 00000018  6800      LDR         R0,[R0,#0x0]
 0000001A  4940      LDR         R1,=0x100
 0000001C  4208      TST         R0,R1
 0000001E  D0FA      BEQ         L_30  ; T=0x00000016
  159:     EP_INT_CLR  = 0xFFFFFFFF;
 00000020  4800      LDR         R1,=0xFFFFFFFF
 00000022  4800      LDR         R0,=0xE0090038
 00000024  6001      STR         R1,[R0,#0x0]
  160:     EP_INT_EN   = 0xFFFFFFFF;
 00000026  4800      LDR         R0,=0xE0090034
 00000028  6001      STR         R1,[R0,#0x0]
  161:     DEV_INT_CLR = 0xFFFFFFFF;
 0000002A  4800      LDR         R0,=0xE0090008
 0000002C  6001      STR         R1,[R0,#0x0]
  162:     DEV_INT_EN  = DEV_STAT_INT    | EP_SLOW_INT    | 
 0000002E  210C      MOV         R1,#0xC
 00000030  4800      LDR         R0,=0xE0090004
 00000032  6001      STR         R1,[R0,#0x0]
  165: }
 00000034  4770      BX          R14
 00000036          ENDP ; 'USB_Reset?T'


*** CODE SEGMENT '?PR?USB_Suspend?T?usbhw':
  175: }
 00000000  4770      BX          R14
 00000002          ENDP ; 'USB_Suspend?T'


*** CODE SEGMENT '?PR?USB_Resume?T?usbhw':
  185: }
 00000000  4770      BX          R14
 00000002          ENDP ; 'USB_Resume?T'


*** CODE SEGMENT '?PR?USB_WakeUp?T?usbhw':
  193: void USB_WakeUp (void) {
 00000000  B500      PUSH        {LR}
  195:     if (USB_DeviceStatus & USB_GETSTATUS_REMOTE_WAKEUP) {
 00000002  4800      LDR         R0,=USB_DeviceStatus ; USB_DeviceStatus
 00000004  8800      LDRH        R0,[R0,#0x0] ; USB_DeviceStatus
 00000006  2102      MOV         R1,#0x2
 00000008  4208      TST         R0,R1
 0000000A  D003      BEQ         L_34  ; T=0x00000014
  196:         WrCmdDat(CMD_SET_DEV_STAT, DAT_WR_BYTE(DEV_CON));
 0000000C  4800      LDR         R0,=0xFE0500
 0000000E  4800      LDR         R1,=0x10100
 00000010  F7FF      BL          WrCmdDat?T  ; T=0x0001  (1)
 00000012  FFF6      BL          WrCmdDat?T  ; T=0x0001  (2)
  197:     }
 00000014          L_34:
  198: }
 00000014  BC08      POP         {R3}
 00000016  4718      BX          R3
 00000018          ENDP ; 'USB_WakeUp?T'


*** CODE SEGMENT '?PR?USB_WakeUpCfg?T?usbhw':
  209: }
 00000000  4770      BX          R14
 00000002          ENDP ; 'USB_WakeUpCfg?T'

ARM COMPILER V2.53,  usbhw                                                                 09/06/07  15:42:23  PAGE 14  


*** CODE SEGMENT '?PR?USB_SetAddress?T?usbhw':
  218: void USB_SetAddress (BYTE adr) {
 00000000  B500      PUSH        {LR}
 00000002  1C03      MOV         R3,R0 ; adr
 00000004  ---- Variable 'adr' assigned to Register 'R3' ----

⌨️ 快捷键说明

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