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

📄 usbdriver.lst

📁 周立功的LPC214x固件程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
 00000068  2101      MOV         R1,#0x1
 0000006A  4208      TST         R0,R1
 0000006C  D00A      BEQ         L_6  ; T=0x00000084
  169:         DISABLE();
 0000006E  F7FF      BL          DISABLE?T  ; T=0x0001  (1)
 00000070  FFC7      BL          DISABLE?T  ; T=0x0001  (2)
  170:         bEPPflags.bits.con_change = 0;
 00000072  4800      LDR         R0,=bEPPflags ; bEPPflags
 00000074  6801      LDR         R1,[R0,#0x0] ; bEPPflags
 00000076  2204      MOV         R2,#0x4
 00000078  4391      BIC         R1,R2
 0000007A  6001      STR         R1,[R0,#0x0] ; bEPPflags
  171:         ENABLE();
 0000007C  F7FF      BL          ENABLE?T  ; T=0x0001  (1)
 0000007E  FFC0      BL          ENABLE?T  ; T=0x0001  (2)
  172:         USB_ConnectChange();
 00000080  F7FF      BL          USB_ConnectChange?T  ; T=0x0001  (1)
 00000082  FFBE      BL          USB_ConnectChange?T  ; T=0x0001  (2)
  173:     } // if usb bus connect change
 00000084          L_6:
  175: }
 00000084  BC08      POP         {R3}
 00000086  4718      BX          R3
 00000088          ENDP ; 'usbserve?T'


*** CODE SEGMENT '?PR?Usb_Exception?A?USBDriver':
  183: void Usb_Exception(void) __irq
 00000000  E92D5F0F  STMDB       R13!,{R0-R3,R8-R12,LR}
 00000004  E24DD00C  SUB         R13,R13,#0x000C
  184: {
 00000008            ; SCOPE-START
  187:     bEPPflags.bits.in_isr = 1;                          /* 标识程序进入中断    flag the program enter interrupt */
 00000008  E5100000  LDR         R0,=bEPPflags ; bEPPflags
 0000000C  E5901000  LDR         R1,[R0,#0x0] ; bEPPflags
 00000010  E3811020  ORR         R1,R1,#0x0020
ARM COMPILER V2.53,  USBDriver                                                             28/06/07  09:54:12  PAGE 12  

 00000014  E5801000  STR         R1,[R0,#0x0] ; bEPPflags
  190:     dev_ints = USBDevIntSt;
 00000018  E5100000  LDR         R0,=0xE0090000
 0000001C  E5901000  LDR         R1,[R0,#0x0]
 00000020  E28D0004  ADD         R0,R13,#0x0004
 00000024  E5801000  STR         R1,[R0,#0x0] ; dev_ints
  191:     if (dev_ints & DEVINT_STATUS_DEVSTAT)           
 00000028  E28D0004  ADD         R0,R13,#0x0004
 0000002C  E5900000  LDR         R0,[R0,#0x0] ; dev_ints
 00000030  E3100008  TST         R0,#0x0008
 00000034  0A000021  BEQ         L_7  ; Targ=0xC0
  193:         devstatus = USB_GetDevStatus();
 00000038  EBFFFFF0  BL          USB_GetDevStatus?A  ; Targ=0x0
 0000003C  E1A01C00  MOV         R1,R0,LSL #24 ; USB_GetDevStatus?A
 00000040  E1A01C21  MOV         R1,R1,LSR #24
 00000044  E28D0008  ADD         R0,R13,#0x0008
 00000048  E5801000  STR         R1,[R0,#0x0] ; devstatus
  194:         if ((devstatus & 0x10) != 0)
 0000004C  E28D0008  ADD         R0,R13,#0x0008
 00000050  E5900000  LDR         R0,[R0,#0x0] ; devstatus
 00000054  E3100010  TST         R0,#0x0010
 00000058  0A000004  BEQ         L_8  ; Targ=0x70
  196:             USB_BusReset();
 0000005C  EBFFFFE7  BL          USB_BusReset?A  ; Targ=0x0
  197:             bEPPflags.bits.bus_reset = 1;               /* 标识总线复位        flag USB bus reset */
 00000060  E5100000  LDR         R0,=bEPPflags ; bEPPflags
 00000064  E5901000  LDR         R1,[R0,#0x0] ; bEPPflags
 00000068  E3811001  ORR         R1,R1,#0x0001
 0000006C  E5801000  STR         R1,[R0,#0x0] ; bEPPflags
  198:         }
 00000070          L_8:
  200:         if ((devstatus & 0x08) != 0)
 00000070  E28D0008  ADD         R0,R13,#0x0008
 00000074  E5900000  LDR         R0,[R0,#0x0] ; devstatus
 00000078  E3100008  TST         R0,#0x0008
 0000007C  0A000003  BEQ         L_9  ; Targ=0x90
  201:             bEPPflags.bits.suspend = 1;                 /* 标识总线挂起改变    flag the bus suspend change */
 00000080  E5100000  LDR         R0,=bEPPflags ; bEPPflags
 00000084  E5901000  LDR         R1,[R0,#0x0] ; bEPPflags
 00000088  E3811002  ORR         R1,R1,#0x0002
 0000008C  E5801000  STR         R1,[R0,#0x0] ; bEPPflags
 00000090          L_9:
  203:         if ((devstatus & 0x02) != 0)
 00000090  E28D0008  ADD         R0,R13,#0x0008
 00000094  E5900000  LDR         R0,[R0,#0x0] ; devstatus
 00000098  E3100002  TST         R0,#0x0002
 0000009C  0A000003  BEQ         L_10  ; Targ=0xB0
  204:             bEPPflags.bits.con_change = 1;              /* 标识总线连接改变    flag the bus connect change */
 000000A0  E5100000  LDR         R0,=bEPPflags ; bEPPflags
 000000A4  E5901000  LDR         R1,[R0,#0x0] ; bEPPflags
 000000A8  E3811004  ORR         R1,R1,#0x0004
 000000AC  E5801000  STR         R1,[R0,#0x0] ; bEPPflags
 000000B0          L_10:
  206:         USBDevIntClr = DevStatusInterrupt;
 000000B0  E3A01008  MOV         R1,#0x8
 000000B4  E5100000  LDR         R0,=0xE0090008
 000000B8  E5801000  STR         R1,[R0,#0x0]
  207:         goto USB_ISR_EXIT;
 000000BC  EAFFFFCE  B           USB_ISR_EXIT  ; Targ=0xFFFFFFFC
  208:     }    
 000000C0          L_7:
  211:     usb_ints = USBIntSt & 0x7;  
 000000C0  E5100000  LDR         R0,=0xE01FC1C0
 000000C4  E5901000  LDR         R1,[R0,#0x0]
 000000C8  E2011007  AND         R1,R1,#0x0007
 000000CC  E28D0000  ADD         R0,R13,#0x0000
ARM COMPILER V2.53,  USBDriver                                                             28/06/07  09:54:12  PAGE 13  

 000000D0  E5801000  STR         R1,[R0,#0x0] ; usb_ints
  212:     if (usb_ints != 0)
 000000D4  E28D0000  ADD         R0,R13,#0x0000
 000000D8  E5900000  LDR         R0,[R0,#0x0] ; usb_ints
 000000DC  E3500000  CMP         R0,#0x0000
 000000E0  0AFFFFC5  BEQ         USB_ISR_EXIT  ; Targ=0xFFFFFFFC
  214:         if (usb_ints & USBINT_STATUS_HP)
 000000E4  E28D0000  ADD         R0,R13,#0x0000
 000000E8  E5900000  LDR         R0,[R0,#0x0] ; usb_ints
 000000EC  E3100002  TST         R0,#0x0002
 000000F0  0A000000  BEQ         L_13  ; Targ=0xF8
  215:             Usb_HPService();                            /* 高优先级中断处理    process High priority Interrupt */
 000000F4  EBFFFFC1  BL          Usb_HPService?A  ; Targ=0x0
 000000F8          L_13:
  217:         if (usb_ints & USBINT_STATUS_LP)
 000000F8  E28D0000  ADD         R0,R13,#0x0000
 000000FC  E5900000  LDR         R0,[R0,#0x0] ; usb_ints
 00000100  E3100001  TST         R0,#0x0001
 00000104  0AFFFFBC  BEQ         USB_ISR_EXIT  ; Targ=0xFFFFFFFC
  218:             Usb_LPService();                            /* 低优先级中断处理    process Slow priority Interrupt */
 00000108  EBFFFFBC  BL          Usb_LPService?A  ; Targ=0x0
  226: USB_ISR_EXIT:
 0000010C          USB_ISR_EXIT:
  227:        bEPPflags.bits.in_isr = 0;                           /* 标识程序退出中断    flag the program exit interrupt */
 0000010C  E5100000  LDR         R0,=bEPPflags ; bEPPflags
 00000110  E5901000  LDR         R1,[R0,#0x0] ; bEPPflags
 00000114  E3C11020  BIC         R1,R1,#0x0020
 00000118  E5801000  STR         R1,[R0,#0x0] ; bEPPflags
  228:        VICVectAddr = 0x00;                                  /* 通知LPC214x中断结束 Inform LPC214x interrupt end */
 0000011C  E3A01000  MOV         R1,#0x0
 00000120  E5100000  LDR         R0,=0xFFFFF030
 00000124  E5801000  STR         R1,[R0,#0x0]
 00000128            ; SCOPE-END
  229: }
 00000128  E28DD00C  ADD         R13,R13,#0x000C
 0000012C  E8BD5F0F  LDMIA       R13!,{R0-R3,R8-R12,LR}
 00000130  E25EF004  SUBS        R15,R14,#0x0004
 00000134          ENDP ; 'Usb_Exception?A'


*** CODE SEGMENT '?PR?Usb_HPService?T?USBDriver':
  238: void Usb_HPService(void)
 00000000  B500      PUSH        {LR}
 00000002  B081      SUB         R13,#0x4
  239: {
 00000004            ; SCOPE-START
  242:     ep_st = USBEpIntSt;                                 /* 读端点中断状态寄存器     read endpoint interrupt status register */
 00000004  4800      LDR         R0,=0xE0090030
 00000006  6801      LDR         R1,[R0,#0x0]
 00000008  A800      ADD         R0,R13,#0x0
 0000000A  6001      STR         R1,[R0,#0x0] ; ep_st
  244:     if(ep_st & USB_ENDP00)
 0000000C  A800      ADD         R0,R13,#0x0
 0000000E  6800      LDR         R0,[R0,#0x0] ; ep_st
 00000010  2101      MOV         R1,#0x1
 00000012  4208      TST         R0,R1
 00000014  D001      BEQ         L_15  ; T=0x0000001A
  245:         ep0_rxdone();                                   /* 控制端点接收数据处理     process controll endpoint receive data */
 00000016  F7FF      BL          ep0_rxdone?T  ; T=0x0001  (1)
 00000018  FFF3      BL          ep0_rxdone?T  ; T=0x0001  (2)
 0000001A          L_15:
  246:     if(ep_st & USB_ENDP01)
 0000001A  A800      ADD         R0,R13,#0x0
 0000001C  6800      LDR         R0,[R0,#0x0] ; ep_st
 0000001E  2102      MOV         R1,#0x2
 00000020  4208      TST         R0,R1
 00000022  D001      BEQ         L_16  ; T=0x00000028
  247:         ep0_txdone();                                   /* 控制端点发送数据处理     process controll endpoint transmit data */
ARM COMPILER V2.53,  USBDriver                                                             28/06/07  09:54:12  PAGE 14  

 00000024  F7FF      BL          ep0_txdone?T  ; T=0x0001  (1)
 00000026  FFEC      BL          ep0_txdone?T  ; T=0x0001  (2)
 00000028          L_16:
  249:     if(ep_st & USB_ENDP02)
 00000028  A800      ADD         R0,R13,#0x0
 0000002A  6800      LDR         R0,[R0,#0x0] ; ep_st
 0000002C  2104      MOV         R1,#0x4
 0000002E  4208      TST         R0,R1
 00000030  D001      BEQ         L_17  ; T=0x00000036
  250:         ep1_rxdone();                                   /* 逻辑端点1接收数据处理    process logic endpoint 1 receive data */    
 00000032  F7FF      BL          ep1_rxdone?T  ; T=0x0001  (1)
 00000034  FFE5      BL          ep1_rxdone?T  ; T=0x0001  (2)
 00000036          L_17:
  251:     if(ep_st & USB_ENDP03)
 00000036  A800      ADD         R0,R13,#0x0
 00000038  6800      LDR         R0,[R0,#0x0] ; ep_st
 0000003A  2108      MOV         R1,#0x8
 0000003C  4208      TST         R0,R1
 0000003E  D001      BEQ         L_18  ; T=0x00000044
  252:         ep1_txdone();                                   /* 逻辑端点1发送数据处理    process logic endpoint 1 transmit data */
 00000040  F7FF      BL          ep1_txdone?T  ; T=0x0001  (1)
 00000042  FFDE      BL          ep1_txdone?T  ; T=0x0001  (2)
 00000044          L_18:
  254:     if(ep_st & USB_ENDP04)
 00000044  A800      ADD         R0,R13,#0x0
 00000046  6800      LDR         R0,[R0,#0x0] ; ep_st
 00000048  2110      MOV         R1,#0x10
 0000004A  4208      TST         R0,R1
 0000004C  D001      BEQ         L_19  ; T=0x00000052
  255:         ep2_rxdone();                                   /* 逻辑端点2接收数据处理    process logic endpoint 2 receive data */    
 0000004E  F7FF      BL          ep2_rxdone?T  ; T=0x0001  (1)
 00000050  FFD7      BL          ep2_rxdone?T  ; T=0x0001  (2)
 00000052          L_19:
  256:     if(ep_st & USB_ENDP05)  
 00000052  A800      ADD         R0,R13,#0x0
 00000054  6800      LDR         R0,[R0,#0x0] ; ep_st
 00000056  2120      MOV         R1,#0x20
 00000058  4208      TST         R0,R1
 0000005A  D001      BEQ         L_20  ; T=0x00000060
  257:         ep2_txdone();                                   /* 逻辑端点2发送数据处理    process logic endpoint 2 transmit data */   
 0000005C  F7FF      BL          ep2_txdone?T  ; T=0x0001  (1)
 0000005E  FFD0      BL          ep2_txdone?T  ; T=0x0001  (2)
 00000060          L_20:
  259:     USBDevIntClr = FASTINTERRUPT;
 00000060  2102      MOV         R1,#0x2
 00000062  4800      LDR         R0,=0xE0090008
 00000064  6001      STR         R1,[R0,#0x0]
 00000066            ; SCOPE-END
  260: }
 00000066  B001      ADD         R13,#0x4
 00000068  BC08      POP         {R3}
 0000006A  4718      BX          R3
 0000006C          ENDP ; 'Usb_HPService?T'


*** CODE SEGMENT '?PR?Usb_LPService?T?USBDriver':
  269: void Usb_LPService(void)
 00000000  B500      PUSH        {LR}
 00000002  B081      SUB         R13,#0x4
  270: {
 00000004            ; SCOPE-START
  273:     ep_st = USBEpIntSt;                                 /* 读端点中断状态寄存器 read endpoint interrupt status register */
 00000004  4800      LDR         R0,=0xE0090030
 00000006  6801      LDR         R1,[R0,#0x0]
 00000008  A800      ADD         R0,R13,#0x0

⌨️ 快捷键说明

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