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

📄 sd.lst

📁 Philips LPC2138 Demo Application with Keil C
💻 LST
📖 第 1 页 / 共 5 页
字号:
 0000000A  B083      SUB         R13,#0xC
  250: {
 0000000C            ; SCOPE-START
  254:     euint16 fb_timeout=0xffff;
 0000000C  4800      LDRH        R1,=0xFFFF
 0000000E  A802      ADD         R0,R13,#0x8
 00000010  8001      STRH        R1,[R0,#0x0] ; fb_timeout
  259:     place=512*address;
 00000012  1C11      MOV         R1,R2 ; address
 00000014  0249      LSL         R1,R1,#0x9 ; address
 00000016  ---- Variable 'place' assigned to Register 'R1' ----
  260:     sd_Command(iface,CMDREAD, (euint16) (place >> 16), (euint16) place);
 00000016  1C08      MOV         R0,R1 ; place
 00000018  0C00      LSR         R0,R0,#0x10 ; place
 0000001A  0400      LSL         R0,R0,#0x10
 0000001C  0C00      LSR         R0,R0,#0x10
 0000001E  0402      LSL         R2,R0,#0x10
 00000020  0C12      LSR         R2,R2,#0x10
 00000022  1C08      MOV         R0,R1 ; place
 00000024  0400      LSL         R0,R0,#0x10 ; place
 00000026  0C00      LSR         R0,R0,#0x10
 00000028  0403      LSL         R3,R0,#0x10
 0000002A  0C1B      LSR         R3,R3,#0x10
 0000002C  1C20      MOV         R0,R4 ; iface
 0000002E  2111      MOV         R1,#0x11
 00000030  F7FF      BL          sd_Command?T  ; T=0x0001  (1)
 00000032  FFE6      BL          sd_Command?T  ; T=0x0001  (2)
  262:     cardresp=sd_Resp8b(iface); /* Card response */ 
 00000034  1C20      MOV         R0,R4 ; iface
 00000036  F7FF      BL          sd_Resp8b?T  ; T=0x0001  (1)
 00000038  FFE3      BL          sd_Resp8b?T  ; T=0x0001  (2)
 0000003A  A900      ADD         R1,R13,#0x0
 0000003C  7008      STRB        R0,[R1,#0x0] ; cardresp
  265:     do
 0000003E          L_58:
  266:         firstblock=sd_Resp8b(iface); 
 0000003E  1C20      MOV         R0,R4 ; iface
 00000040  F7FF      BL          sd_Resp8b?T  ; T=0x0001  (1)
 00000042  FFDE      BL          sd_Resp8b?T  ; T=0x0001  (2)
 00000044  1C05      MOV         R5,R0 ; firstblock
 00000046  ---- Variable 'firstblock' assigned to Register 'R5' ----
 00000046  1C28      MOV         R0,R5 ; firstblock
 00000048  0600      LSL         R0,R0,#0x18 ; firstblock
 0000004A  0E00      LSR         R0,R0,#0x18
 0000004C  28FF      CMP         R0,#0xFF
 0000004E  D106      BNE         L_61  ; T=0x0000005E
 00000050  A902      ADD         R1,R13,#0x8
 00000052  8808      LDRH        R0,[R1,#0x0] ; fb_timeout
 00000054  1C02      MOV         R2,R0
 00000056  3A01      SUB         R2,#0x1
 00000058  800A      STRH        R2,[R1,#0x0] ; fb_timeout
 0000005A  2800      CMP         R0,#0x0
 0000005C  D1EF      BNE         L_58  ; T=0x0000003E
 0000005E          L_61:
  269:     if(cardresp!=0x00 || firstblock!=0xfe){
 0000005E  A800      ADD         R0,R13,#0x0
 00000060  7800      LDRB        R0,[R0,#0x0] ; cardresp
ARM COMPILER V2.42,  sd                                                                    27/03/06  10:45:52  PAGE 19  

 00000062  2800      CMP         R0,#0x0
 00000064  D104      BNE         L_64  ; T=0x00000070
 00000066  1C28      MOV         R0,R5 ; firstblock
 00000068  0600      LSL         R0,R0,#0x18 ; firstblock
 0000006A  0E00      LSR         R0,R0,#0x18
 0000006C  28FE      CMP         R0,#0xFE
 0000006E  D007      BEQ         L_70  ; T=0x00000080
 00000070          L_64:
  270:         sd_Resp8bError(iface,firstblock);
 00000070  1C28      MOV         R0,R5 ; firstblock
 00000072  0601      LSL         R1,R0,#0x18 ; firstblock
 00000074  0E09      LSR         R1,R1,#0x18
 00000076  1C20      MOV         R0,R4 ; iface
 00000078  F7FF      BL          sd_Resp8bError?T  ; T=0x0001  (1)
 0000007A  FFC2      BL          sd_Resp8bError?T  ; T=0x0001  (2)
  271:         return(-1);
 0000007C  4800      LDR         R0,=0xFFFFFFFF
 0000007E  E01E      B           L_65  ; T=0x000000BE
  274:     for(i=0;i<512;i++){
 00000080          L_70:
 00000080  2500      MOV         R5,#0x0
 00000082  ---- Variable 'i' assigned to Register 'R5' ----
 00000082          L_69:
  275:         c = if_spiSend(iface,0xff);
 00000082  1C20      MOV         R0,R4 ; iface
 00000084  21FF      MOV         R1,#0xFF
 00000086  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 00000088  FFBB      BL          if_spiSend?T  ; T=0x0001  (2)
 0000008A  A901      ADD         R1,R13,#0x4
 0000008C  7008      STRB        R0,[R1,#0x0] ; c
  276:         if(i<len)
 0000008E  1C38      MOV         R0,R7 ; len
 00000090  0402      LSL         R2,R0,#0x10 ; len
 00000092  0C12      LSR         R2,R2,#0x10
 00000094  1C28      MOV         R0,R5 ; i
 00000096  4290      CMP         R0,R2 ; i
 00000098  D203      BCS         L_66  ; T=0x000000A2
  277:             buf[i] = c;
 0000009A  7808      LDRB        R0,[R1,#0x0] ; c
 0000009C  1C2B      MOV         R3,R5 ; i
 0000009E  1C31      MOV         R1,R6 ; buf
 000000A0  54C8      STRB        R0,[R1,R3]
  278:     }
 000000A2          L_66:
 000000A2  3501      ADD         R5,#0x1
 000000A4  1C28      MOV         R0,R5 ; i
 000000A6  4980      LDR         R1,=0x200
 000000A8  4288      CMP         R0,R1 ; i
 000000AA  D3EA      BCC         L_69  ; T=0x00000082
  281:     if_spiSend(iface,0xff);
 000000AC  1C20      MOV         R0,R4 ; iface
 000000AE  21FF      MOV         R1,#0xFF
 000000B0  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 000000B2  FFA6      BL          if_spiSend?T  ; T=0x0001  (2)
  282:     if_spiSend(iface,0xff);
 000000B4  1C20      MOV         R0,R4 ; iface
 000000B6  21FF      MOV         R1,#0xFF
 000000B8  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 000000BA  FFA2      BL          if_spiSend?T  ; T=0x0001  (2)
  284:     return(0);
 000000BC  2000      MOV         R0,#0x0
 000000BE            ; SCOPE-END
  285: }
 000000BE          L_65:
 000000BE  B003      ADD         R13,#0xC
 000000C0  BCF0      POP         {R4-R7}
ARM COMPILER V2.42,  sd                                                                    27/03/06  10:45:52  PAGE 20  

 000000C2  BC08      POP         {R3}
 000000C4  4718      BX          R3
 000000C6          ENDP ; 'sd_readSector?T'


*** CODE SEGMENT '?PR?sd_getDriveSize?T?sd':
  292: esint8 sd_getDriveSize(hwInterface *iface, euint32* drive_size )
 00000000  B570      PUSH        {R4-R6,LR}
 00000002  1C0C      MOV         R4,R1 ; drive_size
 00000004  ---- Variable 'drive_size' assigned to Register 'R4' ----
 00000004  1C05      MOV         R5,R0 ; iface
 00000006  ---- Variable 'iface' assigned to Register 'R5' ----
 00000006  B084      SUB         R13,#0x10
  293: {
 00000008            ; SCOPE-START
  298:     sd_Command(iface, CMDREADCSD, 0, 0);
 00000008  1C28      MOV         R0,R5 ; iface
 0000000A  2109      MOV         R1,#0x9
 0000000C  2300      MOV         R3,#0x0
 0000000E  1C1A      MOV         R2,R3
 00000010  F7FF      BL          sd_Command?T  ; T=0x0001  (1)
 00000012  FFF6      BL          sd_Command?T  ; T=0x0001  (2)
  300:     do {
 00000014          L_72:
  301:         cardresp = sd_Resp8b(iface);
 00000014  1C28      MOV         R0,R5 ; iface
 00000016  F7FF      BL          sd_Resp8b?T  ; T=0x0001  (1)
 00000018  FFF3      BL          sd_Resp8b?T  ; T=0x0001  (2)
 0000001A  1C06      MOV         R6,R0 ; cardresp
 0000001C  ---- Variable 'cardresp' assigned to Register 'R6' ----
  302:     } while ( cardresp != 0xFE );
 0000001C  1C30      MOV         R0,R6 ; cardresp
 0000001E  0600      LSL         R0,R0,#0x18 ; cardresp
 00000020  0E00      LSR         R0,R0,#0x18
 00000022  28FE      CMP         R0,#0xFE
 00000024  D1F6      BNE         L_72  ; T=0x00000014
  304:     DBG((TXT("CSD:")));
 00000026  4800      LDR         R0,=??S_18 ; ??S_18
 00000028  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 0000002A  FFEA      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  305:     for( i=0; i<16; i++) {
 0000002C  2600      MOV         R6,#0x0
 0000002E  ---- Variable 'i' assigned to Register 'R6' ----
 0000002E  E012      B           L_78  ; T=0x00000056
 00000030          L_79:
  306:         iob[i] = sd_Resp8b(iface);
 00000030  1C28      MOV         R0,R5 ; iface
 00000032  F7FF      BL          sd_Resp8b?T  ; T=0x0001  (1)
 00000034  FFE5      BL          sd_Resp8b?T  ; T=0x0001  (2)
 00000036  1C31      MOV         R1,R6 ; i
 00000038  060A      LSL         R2,R1,#0x18 ; i
 0000003A  0E12      LSR         R2,R2,#0x18
 0000003C  A900      ADD         R1,R13,#0x0
 0000003E  5488      STRB        R0,[R1,R2]
  307:         DBG((TXT(" %02x"), iob[i]));
 00000040  1C30      MOV         R0,R6 ; i
 00000042  0600      LSL         R0,R0,#0x18 ; i
 00000044  0E00      LSR         R0,R0,#0x18
 00000046  5C08      LDRB        R0,[R1,R0]
 00000048  1C01      MOV         R1,R0
 0000004A  4800      LDR         R0,=??S_19 ; ??S_19
 0000004C  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 0000004E  FFD8      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  308:     }
 00000050  3601      ADD         R6,#0x1
 00000052  0636      LSL         R6,R6,#0x18
 00000054  0E36      LSR         R6,R6,#0x18
 00000056          L_78:
ARM COMPILER V2.42,  sd                                                                    27/03/06  10:45:52  PAGE 21  

 00000056  1C30      MOV         R0,R6 ; i
 00000058  0600      LSL         R0,R0,#0x18 ; i
 0000005A  0E00      LSR         R0,R0,#0x18
 0000005C  2810      CMP         R0,#0x10
 0000005E  DBE7      BLT         L_79  ; T=0x00000030
  309:     DBG((TXT("\n")));
 00000060  4800      LDR         R0,=??S_20 ; ??S_20
 00000062  F7FF      BL          lpc2000_debug_printf?T  ; T=0x0001  (1)
 00000064  FFCD      BL          lpc2000_debug_printf?T  ; T=0x0001  (2)
  311:     if_spiSend(iface,0xff);
 00000066  1C28      MOV         R0,R5 ; iface
 00000068  21FF      MOV         R1,#0xFF
 0000006A  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 0000006C  FFC9      BL          if_spiSend?T  ; T=0x0001  (2)
  312:     if_spiSend(iface,0xff);
 0000006E  1C28      MOV         R0,R5 ; iface
 00000070  21FF      MOV         R1,#0xFF
 00000072  F7FF      BL          if_spiSend?T  ; T=0x0001  (1)
 00000074  FFC5      BL          if_spiSend?T  ; T=0x0001  (2)
  314:     c_size = iob[6] & 0x03; // bits 1..0
 00000076  2006      MOV         R0,#0x6
 00000078  4468      ADD         R0,R13
 0000007A  7800      LDRB        R0,[R0,#0x0] ; iob+6
 0000007C  1C02      MOV         R2,R0
 0000007E  2003      MOV         R0,#0x3
 00000080  4002      AND         R2,R0
 00000082  0412      LSL         R2,R2,#0x10
 00000084  0C12      LSR         R2,R2,#0x10
 00000086  ---- Variable 'c_size' assigned to Register 'R2' ----
  315:     c_size <<= 10;
 00000086  0292      LSL         R2,R2,#0xA ; c_size
 00000088  0412      LSL         R2,R2,#0x10
 0000008A  0C12      LSR         R2,R2,#0x10
  316:     c_size += (euint16)iob[7]<<2;
 0000008C  2107      MOV         R1,#0x7
 0000008E  4469      ADD         R1,R13
 00000090  7809      LDRB        R1,[R1,#0x0] ; iob+7
 00000092  0409      LSL         R1,R1,#0x10
 00000094  0C09      LSR         R1,R1,#0x10
 00000096  0089      LSL         R1,R1,#0x2
 00000098  0409      LSL         R1,R1,#0x10
 0000009A  0C09      LSR         R1,R1,#0x10
 0000009C  1852      ADD         R2,R1 ; c_size
 0000009E  0412      LSL         R2,R2,#0x10
 000000A0  0C12      LSR         R2,R2,#0x10
  317:     c_size += iob[8]>>6;
 000000A2  A902      ADD         R1,R13,#0x8
 000000A4  7809      LDRB        R1,[R1,#0x0] ; iob+8
 000000A6  0989      LSR         R1,R1,#0x6
 000000A8  0409      LSL         R1,R1,#0x10
 000000AA  0C09      LSR         R1,R1,#0x10
 000000AC  1852      ADD         R2,R1 ; c_size
 000000AE  0412      LSL         R2,R2,#0x10
 000000B0  0C12      LSR         R2,R2,#0x10
  319:     by= iob[5] & 0x0F;
 000000B2  2105      MOV         R1,#0x5
 000000B4  4469      ADD         R1,R13
 000000B6  7809      LDRB        R1,[R1,#0x0] ; iob+5
 000000B8  1C0D      MOV         R5,R1
 000000BA  210F      MOV         R1,#0xF
 000000BC  400D      AND         R5,R1
 000000BE  062D      LSL         R5,R5,#0x18
 000000C0  0E2D      LSR         R5,R5,#0x18
 000000C2  ---- Variable 'by' assigned to Register 'R5' ----
  320:     read_bl_len = 1;
 000000C2  2301      MOV         R3,#0x1
ARM COMPILER V2.42,  sd                                                                    27/03/06  10:45:52  PAGE 22  

 000000C4  1C19      MOV         R1,R3 ; read_bl_len
 000000C6  ---- Variable 'read_bl_len' assigned to Register 'R1' ----
  321:     read_bl_len <<= by;
 000000C6  062D      LSL         R5,R5,#0x18 ; by
 000000C8  0E2D      LSR         R5,R5,#0x18
 000000CA  40A9      LSL         R1,R5
 000000CC  0409      LSL         R1,R1,#0x10
 000000CE  0C09      LSR         R1,R1,#0x10
  323:     by=iob[9] & 0x03;
 000000D0  2509      MOV         R5,#0x9
 000000D2  446D      ADD         R5,R13
 000000D4  782D      LDRB        R5,[R5,#0x0] ; iob+9
 000000D6  4005      AND         R5,R0
 000000D8  062D      LSL     

⌨️ 快捷键说明

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