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

📄 usbhw.lst

📁 USB高性能读卡器源码。可灵活增删功能。
💻 LST
📖 第 1 页 / 共 5 页
字号:
   55:   AT91C_BASE_AIC->AIC_IECR = (1 << AT91C_ID_UDP);
 00000018  4800      LDR         R0,=0xFFFFF120
 0000001A  6001      STR         R1,[R0,#0x0]
   59:   AT91C_BASE_PIOA->PIO_PER  = AT91C_PIO_PA16;
 0000001C  4800      LDR         R1,=0x10000
 0000001E  4800      LDR         R0,=0xFFFFF400
 00000020  6001      STR         R1,[R0,#0x0]
   60:   AT91C_BASE_PIOA->PIO_SODR = AT91C_PIO_PA16;
 00000022  4800      LDR         R0,=0xFFFFF430
 00000024  6001      STR         R1,[R0,#0x0]
   61:   AT91C_BASE_PIOA->PIO_OER  = AT91C_PIO_PA16;
 00000026  4800      LDR         R0,=0xFFFFF410
 00000028  6001      STR         R1,[R0,#0x0]
   62: }
 0000002A  4770      BX          R14
 0000002C          ENDP ; 'USB_Init?T'


*** CODE SEGMENT '?PR?USB_Connect?T?usbhw':
   72: void USB_Connect (BOOL con) {
 00000000  1C01      MOV         R1,R0 ; con
 00000002  ---- Variable 'con' assigned to Register 'R1' ----
   74:   if (con) {
 00000002  1C08      MOV         R0,R1 ; con
 00000004  2800      CMP         R0,#0x0 ; con
 00000006  D003      BEQ         L_1  ; T=0x00000010
   76:     AT91C_BASE_PIOA->PIO_CODR = AT91C_PIO_PA16;
 00000008  4800      LDR         R1,=0x10000
 0000000A  4800      LDR         R0,=0xFFFFF434
 0000000C  6001      STR         R1,[R0,#0x0]
   77:   } else {
 0000000E  E002      B           L_2  ; T=0x00000016
 00000010          L_1:
   79:     AT91C_BASE_PIOA->PIO_SODR = AT91C_PIO_PA16;
 00000010  4800      LDR         R1,=0x10000
 00000012  4800      LDR         R0,=0xFFFFF430
 00000014  6001      STR         R1,[R0,#0x0]
   80:   }
 00000016          L_2:
   81: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'USB_Connect?T'


*** CODE SEGMENT '?PR?USB_Reset?T?usbhw':
   90: void USB_Reset (void) {
 00000000            ; SCOPE-START
   94:   pUDP->UDP_GLBSTATE &= ~(AT91C_UDP_FADDEN | AT91C_UDP_CONFG | AT91C_UDP_RMWUPE);
 00000000  4800      LDR         R0,=pUDP ; pUDP
 00000002  6801      LDR         R1,[R0,#0x0] ; pUDP
 00000004  6848      LDR         R0,[R1,#0x4]
 00000006  2213      MOV         R2,#0x13
 00000008  4390      BIC         R0,R2
 0000000A  6048      STR         R0,[R1,#0x4]
   95:   pUDP->UDP_FADDR     =  AT91C_UDP_FEN;
 0000000C  4840      LDR         R0,=0x100
ARM COMPILER V2.51a,  usbhw                                                                16/08/06  09:38:29  PAGE 11  

 0000000E  4800      LDR         R1,=pUDP ; pUDP
 00000010  6809      LDR         R1,[R1,#0x0] ; pUDP
 00000012  6088      STR         R0,[R1,#0x8]
   96:   pUDP->UDP_ICR       =  0xFFFFFFFF;
 00000014  4800      LDR         R0,=0xFFFFFFFF
 00000016  4800      LDR         R1,=pUDP ; pUDP
 00000018  6809      LDR         R1,[R1,#0x0] ; pUDP
 0000001A  6208      STR         R0,[R1,#0x20]
   99:   for (n = 0; n < USB_EP_NUM; n++) {
 0000001C  2000      MOV         R0,#0x0
 0000001E  ---- Variable 'n' assigned to Register 'R0' ----
 0000001E          L_6:
  100:     pUDP->UDP_CSR[n] = 0;
 0000001E  2100      MOV         R1,#0x0
 00000020  1C03      MOV         R3,R0 ; n
 00000022  009B      LSL         R3,R3,#0x2 ; n
 00000024  4800      LDR         R2,=pUDP ; pUDP
 00000026  6812      LDR         R2,[R2,#0x0] ; pUDP
 00000028  18D2      ADD         R2,R3
 0000002A  6311      STR         R1,[R2,#0x30]
  101:     RxDataBank[n] = 0;
 0000002C  2100      MOV         R1,#0x0
 0000002E  1C03      MOV         R3,R0 ; n
 00000030  4800      LDR         R2,=RxDataBank ; RxDataBank
 00000032  54D1      STRB        R1,[R2,R3]
  102:     TxDataBank[n] = 0;
 00000034  1C03      MOV         R3,R0 ; n
 00000036  4800      LDR         R2,=TxDataBank ; TxDataBank
 00000038  54D1      STRB        R1,[R2,R3]
  103:   }
 0000003A  3001      ADD         R0,#0x1
 0000003C  1C01      MOV         R1,R0 ; n
 0000003E  2904      CMP         R1,#0x4 ; n
 00000040  D3ED      BCC         L_6  ; T=0x0000001E
  104:   pUDP->UDP_RSTEP = 0xFFFFFFFF;
 00000042  4800      LDR         R0,=0xFFFFFFFF
 00000044  4800      LDR         R1,=pUDP ; pUDP
 00000046  6809      LDR         R1,[R1,#0x0] ; pUDP
 00000048  6288      STR         R0,[R1,#0x28]
  105:   pUDP->UDP_RSTEP = 0;
 0000004A  2000      MOV         R0,#0x0
 0000004C  4800      LDR         R1,=pUDP ; pUDP
 0000004E  6809      LDR         R1,[R1,#0x0] ; pUDP
 00000050  6288      STR         R0,[R1,#0x28]
  109:                   AT91C_UDP_SOFINT | (2^USB_EP_NUM - 1);
 00000052  4800      LDR         R0,=0xF01
 00000054  4800      LDR         R1,=pUDP ; pUDP
 00000056  6809      LDR         R1,[R1,#0x0] ; pUDP
 00000058  6108      STR         R0,[R1,#0x10]
  112:   pUDP->UDP_CSR[0] = AT91C_UDP_EPEDS | AT91C_UDP_EPTYPE_CTRL;
 0000005A  4800      LDR         R0,=0x8000
 0000005C  4800      LDR         R1,=pUDP ; pUDP
 0000005E  6809      LDR         R1,[R1,#0x0] ; pUDP
 00000060  6308      STR         R0,[R1,#0x30]
 00000062            ; SCOPE-END
  113: }
 00000062  4770      BX          R14
 00000064          ENDP ; 'USB_Reset?T'


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


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

ARM COMPILER V2.51a,  usbhw                                                                16/08/06  09:38:29  PAGE 12  


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


*** CODE SEGMENT '?PR?USB_WakeUpCfg?T?usbhw':
  155: void USB_WakeUpCfg (BOOL cfg) {
 00000000  1C01      MOV         R1,R0 ; cfg
 00000002  ---- Variable 'cfg' assigned to Register 'R1' ----
  157:   if (cfg) {
 00000002  1C08      MOV         R0,R1 ; cfg
 00000004  2800      CMP         R0,#0x0 ; cfg
 00000006  D006      BEQ         L_8  ; T=0x00000016
  158:     pUDP->UDP_GLBSTATE |=  AT91C_UDP_RMWUPE;
 00000008  4800      LDR         R0,=pUDP ; pUDP
 0000000A  6801      LDR         R1,[R0,#0x0] ; pUDP
 0000000C  6848      LDR         R0,[R1,#0x4]
 0000000E  2210      MOV         R2,#0x10
 00000010  4310      ORR         R0,R2
 00000012  6048      STR         R0,[R1,#0x4]
  159:   } else {
 00000014  E005      B           L_9  ; T=0x00000022
 00000016          L_8:
  160:     pUDP->UDP_GLBSTATE &= ~AT91C_UDP_RMWUPE;
 00000016  4800      LDR         R0,=pUDP ; pUDP
 00000018  6801      LDR         R1,[R0,#0x0] ; pUDP
 0000001A  6848      LDR         R0,[R1,#0x4]
 0000001C  2210      MOV         R2,#0x10
 0000001E  4390      BIC         R0,R2
 00000020  6048      STR         R0,[R1,#0x4]
  161:   }
 00000022          L_9:
  162: }
 00000022  4770      BX          R14
 00000024          ENDP ; 'USB_WakeUpCfg?T'


*** CODE SEGMENT '?PR?USB_SetAddress?T?usbhw':
  171: void USB_SetAddress (DWORD adr) {
 00000000  1C01      MOV         R1,R0 ; adr
 00000002  ---- Variable 'adr' assigned to Register 'R1' ----
  173:   pUDP->UDP_FADDR = AT91C_UDP_FEN | adr;
 00000002  1C08      MOV         R0,R1 ; adr
 00000004  4A40      LDR         R2,=0x100
 00000006  4310      ORR         R0,R2
 00000008  4800      LDR         R2,=pUDP ; pUDP
 0000000A  6812      LDR         R2,[R2,#0x0] ; pUDP
 0000000C  6090      STR         R0,[R2,#0x8]
  174:   if (adr) {
 0000000E  1C08      MOV         R0,R1 ; adr
 00000010  2800      CMP         R0,#0x0 ; adr
 00000012  D006      BEQ         L_10  ; T=0x00000022
  175:     pUDP->UDP_GLBSTATE |=  AT91C_UDP_FADDEN;
 00000014  4800      LDR         R0,=pUDP ; pUDP
 00000016  6801      LDR         R1,[R0,#0x0] ; pUDP
 00000018  6848      LDR         R0,[R1,#0x4]
 0000001A  2201      MOV         R2,#0x1
 0000001C  4310      ORR         R0,R2
 0000001E  6048      STR         R0,[R1,#0x4]
  176:   } else {
 00000020  E005      B           L_11  ; T=0x0000002E
 00000022          L_10:
  177:     pUDP->UDP_GLBSTATE &= ~AT91C_UDP_FADDEN;
 00000022  4800      LDR         R0,=pUDP ; pUDP
 00000024  6801      LDR         R1,[R0,#0x0] ; pUDP
 00000026  6848      LDR         R0,[R1,#0x4]
 00000028  2201      MOV         R2,#0x1
 0000002A  4390      BIC         R0,R2
 0000002C  6048      STR         R0,[R1,#0x4]
ARM COMPILER V2.51a,  usbhw                                                                16/08/06  09:38:29  PAGE 13  

  178:   }
 0000002E          L_11:
  179: }
 0000002E  4770      BX          R14
 00000030          ENDP ; 'USB_SetAddress?T'


*** CODE SEGMENT '?PR?USB_Configure?T?usbhw':
  188: void USB_Configure (BOOL cfg) {
 00000000  1C01      MOV         R1,R0 ; cfg
 00000002  ---- Variable 'cfg' assigned to Register 'R1' ----
  190:   if (cfg) {
 00000002  1C08      MOV         R0,R1 ; cfg
 00000004  2800      CMP         R0,#0x0 ; cfg
 00000006  D006      BEQ         L_12  ; T=0x00000016
  191:     pUDP->UDP_GLBSTATE |=  AT91C_UDP_CONFG;
 00000008  4800      LDR         R0,=pUDP ; pUDP
 0000000A  6801      LDR         R1,[R0,#0x0] ; pUDP
 0000000C  6848      LDR         R0,[R1,#0x4]
 0000000E  2202      MOV         R2,#0x2
 00000010  4310      ORR         R0,R2
 00000012  6048      STR         R0,[R1,#0x4]
  192:   } else {
 00000014  E005      B           L_13  ; T=0x00000022
 00000016          L_12:
  193:     pUDP->UDP_GLBSTATE &= ~AT91C_UDP_CONFG;
 00000016  4800      LDR         R0,=pUDP ; pUDP
 00000018  6801      LDR         R1,[R0,#0x0] ; pUDP
 0000001A  6848      LDR         R0,[R1,#0x4]
 0000001C  2202      MOV         R2,#0x2
 0000001E  4390      BIC         R0,R2
 00000020  6048      STR         R0,[R1,#0x4]
  194:   }
 00000022          L_13:
  195: }
 00000022  4770      BX          R14
 00000024          ENDP ; 'USB_Configure?T'


*** CODE SEGMENT '?PR?USB_ConfigEP?T?usbhw':
  204: void USB_ConfigEP (USB_ENDPOINT_DESCRIPTOR *pEPD) {
 00000000  B410      PUSH        {R4}
 00000002  1C03      MOV         R3,R0 ; pEPD
 00000004  ---- Variable 'pEPD' assigned to Register 'R3' ----
 00000004            ; SCOPE-START
  207:   num = pEPD->bEndpointAddress & 0x0F;
 00000004  1C18      MOV         R0,R3 ; pEPD
 00000006  7880      LDRB        R0,[R0,#0x2]
 00000008  1C02      MOV         R2,R0
 0000000A  210F      MOV         R1,#0xF
 0000000C  4011      AND         R1,R2
 0000000E  ---- Variable 'num' assigned to Register 'R1' ----
  208:   dir = pEPD->bEndpointAddress & USB_ENDPOINT_DIRECTION_MASK;
 0000000E  2080      MOV         R0,#0x80
 00000010  4002      AND         R2,R0
 00000012  ---- Variable 'dir' assigned to Register 'R2' ----
  210:   switch (pEPD->bmAttributes & USB_ENDPOINT_TYPE_MASK) {
 00000012  1C18      MOV         R0,R3 ; pEPD
 00000014  78C0      LDRB        R0,[R0,#0x3]
 00000016  2303      MOV         R3,#0x3
 00000018  4018      AND         R0,R3
 0000001A  2801      CMP         R0,#0x1
 0000001C  D00D      BEQ         L_17  ; T=0x0000003A
 0000001E  2802      CMP         R0,#0x2
 00000020  D01E      BEQ         L_18  ; T=0x00000060
 00000022  2803      CMP         R0,#0x3
 00000024  D02F      BEQ         L_19  ; T=0x00000086
 00000026  2800      CMP         R0,#0x0
 00000028  D140      BNE         L_16  ; T=0x000000AC
  211:     case USB_ENDPOINT_TYPE_CONTROL:
ARM COMPILER V2.51a,  usbhw                                                                16/08/06  09:38:29  PAGE 14  

 0000002A          L_15:
  212:       pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_CTRL;
 0000002A  2000      MOV         R0,#0x0
 0000002C  1C0C      MOV         R4,R1 ; num
 0000002E  00A4      LSL         R4,R4,#0x2 ; num
 00000030  4800      LDR         R3,=pUDP ; pUDP
 00000032  681B      LDR         R3,[R3,#0x0] ; pUDP
 00000034  191B      ADD         R3,R4
 00000036  6318      STR         R0,[R3,#0x30]
  213:       break;
 00000038  E03F      B           L_14  ; T=0x000000BA
  214:     case USB_ENDPOINT_TYPE_ISOCHRONOUS:
 0000003A          L_17:
  215:       if (dir) {
 0000003A  1C10      MOV         R0,R2 ; dir
 0000003C  2800      CMP         R0,#0x0 ; dir
 0000003E  D007      BEQ         L_20  ; T=0x00000050
  216:         pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_ISO_IN;
 00000040  4800      LDR         R0,=0x500
 00000042  1C0C      MOV         R4,R1 ; num
 00000044  00A4      LSL         R4,R4,#0x2 ; num
 00000046  4800      LDR         R3,=pUDP ; pUDP
 00000048  681B      LDR         R3,[R3,#0x0] ; pUDP
 0000004A  191B      ADD         R3,R4
 0000004C  6318      STR         R0,[R3,#0x30]
  217:       } else {
 0000004E  E034      B           L_14  ; T=0x000000BA
 00000050          L_20:
  218:         pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_ISO_OUT;
 00000050  4840      LDR         R0,=0x100
 00000052  1C0C      MOV         R4,R1 ; num
 00000054  00A4      LSL         R4,R4,#0x2 ; num
 00000056  4800      LDR         R3,=pUDP ; pUDP
 00000058  681B      LDR         R3,[R3,#0x0] ; pUDP
 0000005A  191B      ADD         R3,R4
 0000005C  6318      STR         R0,[R3,#0x30]
  220:       break;
 0000005E  E02C      B           L_14  ; T=0x000000BA
  221:     case USB_ENDPOINT_TYPE_BULK:
 00000060          L_18:

⌨️ 快捷键说明

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