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

📄 lpc2000_spi.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 3 页
字号:
 0000000E  4B80      LDR         R3,=0x200
 00000010  F7FF      BL          sd_readSector?T  ; T=0x0001  (1)
 00000012  FFF6      BL          sd_readSector?T  ; T=0x0001  (2)
 00000014  0600      LSL         R0,R0,#0x18 ; sd_readSector?T
 00000016  1600      ASR         R0,R0,#0x18
  146: }
 00000018  BC08      POP         {R3}
 0000001A  4718      BX          R3
 0000001C          ENDP ; 'if_readBuf?T'


*** CODE SEGMENT '?PR?if_writeBuf?T?lpc2000_spi':
  149: esint8 if_writeBuf(hwInterface* file,euint32 address,euint8* buf)
 00000000  B500      PUSH        {LR}
 00000002  1C13      MOV         R3,R2 ; buf
 00000004  ---- Variable 'buf' assigned to Register 'R3' ----
 00000004  1C0A      MOV         R2,R1 ; address
 00000006  ---- Variable 'address' assigned to Register 'R2' ----
 00000006  1C01      MOV         R1,R0 ; file
 00000008  ---- Variable 'file' assigned to Register 'R1' ----
  151:     return(sd_writeSector(file,address, buf));
 00000008  1C08      MOV         R0,R1 ; file
 0000000A  1C11      MOV         R1,R2 ; address
 0000000C  1C1A      MOV         R2,R3 ; buf
 0000000E  F7FF      BL          sd_writeSector?T  ; T=0x0001  (1)
 00000010  FFF7      BL          sd_writeSector?T  ; T=0x0001  (2)
 00000012  0600      LSL         R0,R0,#0x18 ; sd_writeSector?T
 00000014  1600      ASR         R0,R0,#0x18
  152: }
 00000016  BC08      POP         {R3}
 00000018  4718      BX          R3
 0000001A          ENDP ; 'if_writeBuf?T'


*** CODE SEGMENT '?PR?if_setPos?T?lpc2000_spi':
  157:     return(0);
 00000000  2000      MOV         R0,#0x0
  158: }
 00000002  4770      BX          R14
 00000004          ENDP ; 'if_setPos?T'


*** CODE SEGMENT '?PR?my_if_spiSend?T?lpc2000_spi':
  165: static euint8 my_if_spiSend(hwInterface *iface, euint8 outgoing)
 00000000  1C0A      MOV         R2,R1 ; outgoing
 00000002  ---- Variable 'outgoing' assigned to Register 'R2' ----
  166: {
 00000002            ; SCOPE-START
  172:     S0SPDR = outgoing;
 00000002  1C11      MOV         R1,R2 ; outgoing
 00000004  4800      LDR         R0,=0xE0020008
 00000006  7001      STRB        R1,[R0,#0x0]
  173:     while( !(S0SPSR & (1<<SPIF)) ) ;
 00000008          L_8:
 00000008  4800      LDR         R0,=0xE0020004
 0000000A  7800      LDRB        R0,[R0,#0x0]
 0000000C  2180      MOV         R1,#0x80
 0000000E  4208      TST         R0,R1
 00000010  D0FA      BEQ         L_8  ; T=0x00000008
  174:     incoming = S0SPDR;
 00000012  4800      LDR         R0,=0xE0020008
 00000014  7801      LDRB        R1,[R0,#0x0]
 00000016  ---- Variable 'incoming' assigned to Register 'R1' ----
  185:     return(incoming);
ARM COMPILER V2.42,  lpc2000_spi                                                           27/03/06  10:45:51  PAGE 9   

 00000016  1C08      MOV         R0,R1 ; incoming
 00000018  0600      LSL         R0,R0,#0x18 ; incoming
 0000001A  0E00      LSR         R0,R0,#0x18
 0000001C            ; SCOPE-END
  186: }
 0000001C  4770      BX          R14
 0000001E          ENDP ; 'my_if_spiSend?T'


*** CODE SEGMENT '?PR?if_spiInit?T?lpc2000_spi':
  189: void if_spiInit(hwInterface *iface)
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; iface
 00000004  ---- Variable 'iface' assigned to Register 'R4' ----
  190: {
 00000004            ; SCOPE-START
  194:     SPI_IODIR |= (1<<SPI_SCK_PIN)|(1<<SPI_MOSI_PIN)|(1<<SPI_SS_PIN);
 00000004  22D0      MOV         R2,#0xD0
 00000006  4800      LDR         R0,=0xE0028008
 00000008  6801      LDR         R1,[R0,#0x0]
 0000000A  4311      ORR         R1,R2
 0000000C  6001      STR         R1,[R0,#0x0]
  195:     SPI_IODIR &= ~(1<<SPI_MISO_PIN);
 0000000E  2220      MOV         R2,#0x20
 00000010  4800      LDR         R0,=0xE0028008
 00000012  6801      LDR         R1,[R0,#0x0]
 00000014  4391      BIC         R1,R2
 00000016  6001      STR         R1,[R0,#0x0]
  198:     UNSELECT_CARD();
 00000018  2180      MOV         R1,#0x80
 0000001A  4800      LDR         R0,=0xE0028004
 0000001C  6001      STR         R1,[R0,#0x0]
  201:     SPI_PINSEL &= ~( (3<<SPI_SCK_FUNCBIT) | (3<<SPI_MISO_FUNCBIT) |
 0000001E  4800      LDR         R2,=0xFF00
 00000020  4800      LDR         R0,=0xE002C000
 00000022  6801      LDR         R1,[R0,#0x0]
 00000024  4391      BIC         R1,R2
 00000026  6001      STR         R1,[R0,#0x0]
  205:     DBG((TXT("spiInit for SPI(0)\n")));
 00000028  4800      LDR         R0,=??S_5 ; ??S_5
 0000002A  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 0000002C  FFE9      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  206:     SPI_PINSEL |= ( (1<<SPI_SCK_FUNCBIT) | (1<<SPI_MISO_FUNCBIT) |
 0000002E  4800      LDR         R2,=0x1500
 00000030  4800      LDR         R0,=0xE002C000
 00000032  6801      LDR         R1,[R0,#0x0]
 00000034  4311      ORR         R1,R2
 00000036  6001      STR         R1,[R0,#0x0]
  209:     S0SPCR = (1<<MSTR)|(0<<CPOL); // TODO: check CPOL
 00000038  2120      MOV         R1,#0x20
 0000003A  4800      LDR         R0,=0xE0020000
 0000003C  7001      STRB        R1,[R0,#0x0]
  223:     if_spiSetSpeed(254); 
 0000003E  20FE      MOV         R0,#0xFE
 00000040  F7FF      BL          if_spiSetSpeed?T  ; T=0x0001  (1)
 00000042  FFDE      BL          if_spiSetSpeed?T  ; T=0x0001  (2)
  226:     for(i=0;i<21;i++)
 00000044  2300      MOV         R3,#0x0
 00000046  ---- Variable 'i' assigned to Register 'R3' ----
 00000046  E006      B           L_15  ; T=0x00000056
 00000048          L_16:
  227:         my_if_spiSend(iface,0xff);
 00000048  1C20      MOV         R0,R4 ; iface
 0000004A  21FF      MOV         R1,#0xFF
 0000004C  F7FF      BL          my_if_spiSend?T  ; T=0x0001  (1)
 0000004E  FFD8      BL          my_if_spiSend?T  ; T=0x0001  (2)
 00000050  3301      ADD         R3,#0x1
 00000052  061B      LSL         R3,R3,#0x18
ARM COMPILER V2.42,  lpc2000_spi                                                           27/03/06  10:45:51  PAGE 10  

 00000054  0E1B      LSR         R3,R3,#0x18
 00000056          L_15:
 00000056  1C18      MOV         R0,R3 ; i
 00000058  0600      LSL         R0,R0,#0x18 ; i
 0000005A  0E00      LSR         R0,R0,#0x18
 0000005C  2815      CMP         R0,#0x15
 0000005E  DBF3      BLT         L_16  ; T=0x00000048
 00000060            ; SCOPE-END
  243: }
 00000060  BC10      POP         {R4}
 00000062  BC08      POP         {R3}
 00000064  4718      BX          R3
 00000066          ENDP ; 'if_spiInit?T'


*** CODE SEGMENT '?PR?if_spiSetSpeed?T?lpc2000_spi':
  246: void if_spiSetSpeed(euint8 speed)
 00000000  1C02      MOV         R2,R0 ; speed
 00000002  ---- Variable 'speed' assigned to Register 'R2' ----
  248:     speed &= 0xFE;
 00000002  20FE      MOV         R0,#0xFE
 00000004  4002      AND         R2,R0
  249:     if ( speed < SPI_PRESCALE_MIN  ) speed = SPI_PRESCALE_MIN ;
 00000006  1C10      MOV         R0,R2 ; speed
 00000008  0600      LSL         R0,R0,#0x18 ; speed
 0000000A  0E00      LSR         R0,R0,#0x18
 0000000C  2808      CMP         R0,#0x8
 0000000E  DA00      BGE         L_18  ; T=0x00000012
 00000010  2208      MOV         R2,#0x8
 00000012          L_18:
  250:     SPI_PRESCALE_REG = speed;
 00000012  1C11      MOV         R1,R2 ; speed
 00000014  4800      LDR         R0,=0xE002000C
 00000016  7001      STRB        R1,[R0,#0x0]
  251: }
 00000018  4770      BX          R14
 0000001A          ENDP ; 'if_spiSetSpeed?T'


*** CODE SEGMENT '?PR?if_spiSend?T?lpc2000_spi':
  255: euint8 if_spiSend(hwInterface *iface, euint8 outgoing)
 00000000  1C0A      MOV         R2,R1 ; outgoing
 00000002  ---- Variable 'outgoing' assigned to Register 'R2' ----
  256: {
 00000002            ; SCOPE-START
  260:     SELECT_CARD();
 00000002  2180      MOV         R1,#0x80
 00000004  4800      LDR         R0,=0xE002800C
 00000006  6001      STR         R1,[R0,#0x0]
  261:     S0SPDR = outgoing;
 00000008  1C11      MOV         R1,R2 ; outgoing
 0000000A  4800      LDR         R0,=0xE0020008
 0000000C  7001      STRB        R1,[R0,#0x0]
  262:     while( !(S0SPSR & (1<<SPIF)) ) ;
 0000000E          L_19:
 0000000E  4800      LDR         R0,=0xE0020004
 00000010  7800      LDRB        R0,[R0,#0x0]
 00000012  2180      MOV         R1,#0x80
 00000014  4208      TST         R0,R1
 00000016  D0FA      BEQ         L_19  ; T=0x0000000E
  263:     incoming = S0SPDR;
 00000018  4800      LDR         R0,=0xE0020008
 0000001A  7801      LDRB        R1,[R0,#0x0]
 0000001C  ---- Variable 'incoming' assigned to Register 'R1' ----
  264:     UNSELECT_CARD();
 0000001C  2280      MOV         R2,#0x80
 0000001E  4800      LDR         R0,=0xE0028004
 00000020  6002      STR         R2,[R0,#0x0]
  278:     return(incoming);
 00000022  1C08      MOV         R0,R1 ; incoming
ARM COMPILER V2.42,  lpc2000_spi                                                           27/03/06  10:45:51  PAGE 11  

 00000024  0600      LSL         R0,R0,#0x18 ; incoming
 00000026  0E00      LSR         R0,R0,#0x18
 00000028            ; SCOPE-END
  279: }
 00000028  4770      BX          R14
 0000002A          ENDP ; 'if_spiSend?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =    ------
  const size           =       162
End of Module Information.


ARM COMPILATION COMPLETE.  5 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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