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

📄 main.lst

📁 完整的wav文件播放程序采用lpc2148芯片
💻 LST
📖 第 1 页 / 共 2 页
字号:


*** CODE SEGMENT '?PR?IRQEnable1?A?Main':
   52:     MRS   R0, SPSR
 00000000  E14F0000  MRS         R0,SPSR
   53:     BIC   R0, R0, #0x80
 00000004  E3C00080  BIC         R0,R0,#0x0080
   54:     MSR   SPSR_c, R0
 00000008  E161F000  MSR         SPSR_c,R0
   58:     test++;
 0000000C  E5100000  LDR         R0,=test ; test
 00000010  E5D01000  LDRB        R1,[R0,#0x0] ; test
 00000014  E2811001  ADD         R1,R1,#0x0001
 00000018  E5C01000  STRB        R1,[R0,#0x0] ; test
   59: }
 0000001C  E12FFF1E  BX          R14
 00000020          ENDP ; 'IRQEnable1?A'


*** CODE SEGMENT '?PR?get_input?A?Main':
   62: void get_input(void) {                       /* HID processing function */
 00000000  E92D4000  STMDB       R13!,{LR}
 00000004            ; SCOPE-START
   67:   if(key=getkey()) {                        /* Next track    */
 00000004  EBFFFFFD  BL          getkey?A  ; Targ=0x0
 00000008  E1A01000  MOV         R1,R0 ; key
 0000000C  ---- Variable 'key' assigned to Register 'R1' ----
 0000000C  E3500000  CMP         R0,#0x0000 ; getkey?A
 00000010  0A00000F  BEQ         L_1  ; Targ=0x54
   68:     switch(key){
 00000014  E1A00001  MOV         R0,R1 ; key
 00000018  E3500050  CMP         R0,#0x0050 ; key
 0000001C  0A000009  BEQ         L_4  ; Targ=0x48
 00000020  E350006E  CMP         R0,#0x006E ; key
 00000024  0A000003  BEQ         L_3  ; Targ=0x38
 00000028  E3500070  CMP         R0,#0x0070 ; key
 0000002C  0A000005  BEQ         L_4  ; Targ=0x48
 00000030  E350004E  CMP         R0,#0x004E ; key
 00000034  1A000006  BNE         L_1  ; Targ=0x54
   70:       case 'N':
 00000038          L_3:
   71:         mode = NEXT;
 00000038  E3A01002  MOV         R1,#0x2
 0000003C  E5100000  LDR         R0,=mode ; mode
 00000040  E5801000  STR         R1,[R0,#0x0] ; mode
   72:         break;                               /* Previous track */
 00000044  EA000002  B           L_1  ; Targ=0x54
   74:       case 'P':
 00000048          L_4:
   75:         mode = PREV;
 00000048  E3A01003  MOV         R1,#0x3
 0000004C  E5100000  LDR         R0,=mode ; mode
 00000050  E5801000  STR         R1,[R0,#0x0] ; mode
   78:   }
 00000054          L_1:
   80:   AD0CR |= 0x01000000;                  /* Start A/D Conversion           */
 00000054  E5100000  LDR         R0,=0xE0034000
 00000058  E5901000  LDR         R1,[R0,#0x0]
 0000005C  E3811401  ORR         R1,R1,#0x1000000
ARM COMPILER V2.50a,  Main                                                                 23/09/08  18:04:45  PAGE 6   

 00000060  E5801000  STR         R1,[R0,#0x0]
   81:   do {
 00000064          L_7:
   82:     val = AD0DR;                        /* Read A/D Data Register         */
 00000064  E5100000  LDR         R0,=0xE0034004
 00000068  E5900000  LDR         R0,[R0,#0x0]
 0000006C  ---- Variable 'val' assigned to Register 'R0' ----
   83:   } while ((val & 0x80000000) == 0);    /* Wait for end of A/D Conversion */
 0000006C  E1A01000  MOV         R1,R0 ; val
 00000070  E3110102  TST         R1,#0x80000000 ; val
 00000074  0AFFFFFA  BEQ         L_7  ; Targ=0x64
   84:   AD0CR &= ~0x01000000;                 /* Stop A/D Conversion            */
 00000078  E5101000  LDR         R1,=0xE0034000
 0000007C  E5912000  LDR         R2,[R1,#0x0]
 00000080  E3C22401  BIC         R2,R2,#0x1000000
 00000084  E5812000  STR         R2,[R1,#0x0]
   85:   volume = ((val >> 1) & 0x7FE0);       /* Extract AIN0 Value */
 00000088  E1A01000  MOV         R1,R0 ; val
 0000008C  E1A010A1  MOV         R1,R1,LSR #1 ; val
 00000090  E5100000  LDR         R0,=0x7FE0
 00000094  E0011000  AND         R1,R1,R0
 00000098  E5100000  LDR         R0,=volume ; volume
 0000009C  E5801000  STR         R1,[R0,#0x0] ; volume
 000000A0            ; SCOPE-END
   86: }
 000000A0  E8BD0008  LDMIA       R13!,{R3}
 000000A4  E12FFF13  BX          R3
 000000A8          ENDP ; 'get_input?A'


*** CODE SEGMENT '?PR?main?Main':
   88: int main (void) {
 00000000  E92D4000  STMDB       R13!,{LR}
 00000004            ; SCOPE-START
   91:   IODIR1  = 0x00FF0000;                     /* P1.16..23 defined as Outputs  */
 00000004  E3A018FF  MOV         R1,#0xFF0000
 00000008  E5100000  LDR         R0,=0xE0028018
 0000000C  E5801000  STR         R1,[R0,#0x0]
   92:   AD0CR   = 0x00200402;                     /* Setup A/D: 10-bit AIN0 @ 3MHz */
 00000010  E5101000  LDR         R1,=0x200402
 00000014  E5100000  LDR         R0,=0xE0034000
 00000018  E5801000  STR         R1,[R0,#0x0]
   93:   PINSEL1 = 0x01080000;                     /* enable DAC */
 0000001C  E3A01742  MOV         R1,#0x1080000
 00000020  E5100000  LDR         R0,=0xE002C004
 00000024  E5801000  STR         R1,[R0,#0x0]
   95:     test=0;
 00000028  E3A01000  MOV         R1,#0x0
 0000002C  E5100000  LDR         R0,=test ; test
 00000030  E5C01000  STRB        R1,[R0,#0x0] ; test
   99:     IRQEnable1();
 00000034  EF000001  SWI         0x1 ; IRQEnable1?A
  101:   get_input();                              /* has to be called before starting the timer to get volume level */
 00000038  EBFFFFF0  BL          get_input?A  ; Targ=0x0
  103:   init_serial();                            /* Initialize Serial Interface to 115200 baud */
 0000003C  EBFFFFEF  BL          init_serial?A  ; Targ=0x0
  104:   init_timer ();
 00000040  EBFFFFEE  BL          init_timer?A  ; Targ=0x0
  106:   printf ("\nMCB2130 WAVE AUDIO PLAYER\n\n");
 00000044  E3E00102  MVN         R0,#0x102 ; ??S_5
 00000048  EBFFFFEC  BL          printf?A  ; Targ=0x0
  108:   while (1) {                               /* Loop forever */
 0000004C          L_13:
  109:     if (print_info)
 0000004C  E5100000  LDR         R0,=print_info ; print_info
 00000050  E5D00000  LDRB        R0,[R0,#0x0] ; print_info
 00000054  E3500000  CMP         R0,#0x0000
 00000058  0A00003A  BEQ         L_15  ; Targ=0x148
ARM COMPILER V2.50a,  Main                                                                 23/09/08  18:04:45  PAGE 7   

  111:       alignidx = p_wav_hdr->sample_size;
 0000005C  E5100000  LDR         R0,=p_wav_hdr ; p_wav_hdr
 00000060  E5900000  LDR         R0,[R0,#0x0] ; p_wav_hdr
 00000064  E1D002B0  LDRH        R0,[R0,#0x20]
 00000068  E1A04000  MOV         R4,R0
 0000006C  ---- Variable 'alignidx' assigned to Register 'R4' ----
  112:         if (alignidx > 4) alignidx = 0; 
 0000006C  E1A00004  MOV         R0,R4 ; alignidx
 00000070  E3500004  CMP         R0,#0x0004 ; alignidx
 00000074  9A000000  BLS         L_16  ; Targ=0x7C
 00000078  E3A04000  MOV         R4,#0x0
 0000007C          L_16:
  113:       print_info = 0;
 0000007C  E3A01000  MOV         R1,#0x0
 00000080  E5100000  LDR         R0,=print_info ; print_info
 00000084  E5C01000  STRB        R1,[R0,#0x0] ; print_info
  114:       printf ("Playing Block %01d\n", blockindex);
 00000088  E3E00102  MVN         R0,#0x102 ; ??S_6
 0000008C  E5101000  LDR         R1,=blockindex ; blockindex
 00000090  E5911000  LDR         R1,[R1,#0x0] ; blockindex
 00000094  EBFFFFD9  BL          printf?A  ; Targ=0x0
  115:       printf ("File information:\n");
 00000098  E3E00102  MVN         R0,#0x102 ; ??S_7
 0000009C  EBFFFFD7  BL          printf?A  ; Targ=0x0
  116:       printf ("=================\n");
 000000A0  E3E00102  MVN         R0,#0x102 ; ??S_8
 000000A4  EBFFFFD5  BL          printf?A  ; Targ=0x0
  117:       printf ("File Size:        : %d\n",      p_wav_hdr->length);
 000000A8  E5100000  LDR         R0,=p_wav_hdr ; p_wav_hdr
 000000AC  E5900000  LDR         R0,[R0,#0x0] ; p_wav_hdr
 000000B0  E5901004  LDR         R1,[R0,#0x4]
 000000B4  E3E00102  MVN         R0,#0x102 ; ??S_9
 000000B8  EBFFFFD0  BL          printf?A  ; Targ=0x0
  118:       printf ("Format identifier : %01d\n",    p_wav_hdr->format);
 000000BC  E5100000  LDR         R0,=p_wav_hdr ; p_wav_hdr
 000000C0  E5900000  LDR         R0,[R0,#0x0] ; p_wav_hdr
 000000C4  E1D001B4  LDRH        R0,[R0,#0x14]
 000000C8  E1A01000  MOV         R1,R0
 000000CC  E3E00102  MVN         R0,#0x102 ; ??S_10
 000000D0  EBFFFFCA  BL          printf?A  ; Targ=0x0
  119:       printf ("Number of Channels: %01d\n",    p_wav_hdr->channels);
 000000D4  E5100000  LDR         R0,=p_wav_hdr ; p_wav_hdr
 000000D8  E5900000  LDR         R0,[R0,#0x0] ; p_wav_hdr
 000000DC  E1D001B6  LDRH        R0,[R0,#0x16]
 000000E0  E1A01000  MOV         R1,R0
 000000E4  E3E00102  MVN         R0,#0x102 ; ??S_11
 000000E8  EBFFFFC4  BL          printf?A  ; Targ=0x0
  120:       printf ("Sampling Rate     : %05d Hz\n", p_wav_hdr->sample_rate);
 000000EC  E5100000  LDR         R0,=p_wav_hdr ; p_wav_hdr
 000000F0  E5900000  LDR         R0,[R0,#0x0] ; p_wav_hdr
 000000F4  E5901018  LDR         R1,[R0,#0x18]
 000000F8  E3E00102  MVN         R0,#0x102 ; ??S_12
 000000FC  EBFFFFBF  BL          printf?A  ; Targ=0x0
  121:       printf ("Bytes per Second  : %05d\n",    p_wav_hdr->bytes_per_second);
 00000100  E5100000  LDR         R0,=p_wav_hdr ; p_wav_hdr
 00000104  E5900000  LDR         R0,[R0,#0x0] ; p_wav_hdr
 00000108  E590101C  LDR         R1,[R0,#0x1C]
 0000010C  E3E00102  MVN         R0,#0x102 ; ??S_13
 00000110  EBFFFFBA  BL          printf?A  ; Targ=0x0
  122:       printf ("Sample Alignment  : %s\n",      alignment[alignidx]);
 00000114  E1A00004  MOV         R0,R4 ; alignidx
 00000118  E3A01005  MOV         R1,#0x5
 0000011C  E0000091  MUL         R0,R1,R0
 00000120  E5101000  LDR         R1,=alignment ; alignment
 00000124  E0811000  ADD         R1,R1,R0 ; alignment
 00000128  E3E00102  MVN         R0,#0x102 ; ??S_14
ARM COMPILER V2.50a,  Main                                                                 23/09/08  18:04:45  PAGE 8   

 0000012C  EBFFFFB3  BL          printf?A  ; Targ=0x0
  123:       printf ("Sample resolution : %02d\n\n",  p_wav_hdr->precision);
 00000130  E5100000  LDR         R0,=p_wav_hdr ; p_wav_hdr
 00000134  E5900000  LDR         R0,[R0,#0x0] ; p_wav_hdr
 00000138  E1D002B2  LDRH        R0,[R0,#0x22]
 0000013C  E1A01000  MOV         R1,R0
 00000140  E3E00102  MVN         R0,#0x102 ; ??S_15
 00000144  EBFFFFAD  BL          printf?A  ; Targ=0x0
  124:     }
 00000148          L_15:
  125:   get_input();
 00000148  EBFFFFAC  BL          get_input?A  ; Targ=0x0
  126:   }
 0000014C  EAFFFFBE  B           L_13  ; Targ=0x4C
 00000150            ; SCOPE-END
  127: }
 00000150  E8BD0008  LDMIA       R13!,{R3}
 00000154  E12FFF13  BX          R3
 00000158          ENDP ; 'main'



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


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

⌨️ 快捷键说明

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