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

📄 main.lst

📁 完整的wav文件播放程序采用lpc2148芯片
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.50a,  Main                                                                 23/09/08  18:04:45  PAGE 1   


ARM COMPILER V2.50a, COMPILATION OF MODULE Main
OBJECT MODULE PLACED IN .\Obj\Main.obj
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe Main.c ARM OPTIMIZE(7,SPEED) BROWSE DEBUG PRINT(.\FLASH\MAIN.LST) TABS(4) OB
                    -JECT(.\Obj\Main.obj) 

stmt  level    source

    1          /******************************************************************************/
    2          /*  This file is part of the uVision/ARM development tools                    */
    3          /*  Copyright KEIL ELEKTRONIK GmbH 2002-2004                                  */
    4          /******************************************************************************/
    5          /*                                                                            */
    6          /*  MAIN.C:  Wave Player                                                      */
    7          /*                                                                            */
    8          /******************************************************************************/
    9                            
   10          #include <stdio.h>                         /* standard I/O .h-file */
   11          #include <LPC213x.H>                       /* LPC21xx definitions  */
   12          #include <math.h>
   13          
   14          extern int getkey(void);
   15          #include "arm.h"
   16          
   17          #include "modes.h"
   18          extern enum modes mode;
   19          
   20          #include "riffwave.h"
   21          static const unsigned char alignment[][5] = {{"ERR"},{"BYTE"},{"WORD"},{"ERR"},{"DWORD"}};
   22          
   23          extern void init_serial (void);            /* Initialize Serial Interface     */
   24          extern void init_timer (void);             /* 8kHz Timer Interrupt Routine */
   25          
   26          extern unsigned long timeval;
   27          extern unsigned char print_info;
   28          extern struct wav_hdr* p_wav_hdr;
   29          extern unsigned int blockindex;
   30          
   31          signed int volume;
   32          
   33          extern void IRQDisable(void);
   34          extern void IRQEnable(void);
   35          char test;
   36          void IRQDisable1 (void) __swi(0)
   37          {
   38   1          __asm
   39   1          {
   40   1          MRS     R0, SPSR
   41   1          ORR     R0, R0, #0x80
   42   1          MSR     SPSR_c, R0
   43   1      //  MOVS    PC, LR
   44   1          }
   45   1          
   46   1          test++;
   47   1      }
   48          void IRQEnable1 (void) __swi(1)
   49          {
   50   1          __asm
   51   1          {
   52   1          MRS   R0, SPSR
   53   1          BIC   R0, R0, #0x80
   54   1          MSR   SPSR_c, R0
   55   1      //  MOVS    PC, LR
   56   1          }
   57   1          
   58   1          test++;
ARM COMPILER V2.50a,  Main                                                                 23/09/08  18:04:45  PAGE 2   

   59   1      }
   60          
   61          
   62          void get_input(void) {                       /* HID processing function */
   63   1        unsigned int cnt=0;
   64   1        unsigned int val;
   65   1        unsigned int key;
   66   1      
   67   1        if(key=getkey()) {                        /* Next track    */
   68   2          switch(key){
   69   3            case 'n':
   70   3            case 'N':
   71   3              mode = NEXT;
   72   3              break;                               /* Previous track */
   73   3            case 'p':
   74   3            case 'P':
   75   3              mode = PREV;
   76   3              break;
   77   3          }
   78   2        }
   79   1      
   80   1        AD0CR |= 0x01000000;                  /* Start A/D Conversion           */
   81   1        do {
   82   2          val = AD0DR;                        /* Read A/D Data Register         */
   83   2        } while ((val & 0x80000000) == 0);    /* Wait for end of A/D Conversion */
   84   1        AD0CR &= ~0x01000000;                 /* Stop A/D Conversion            */
   85   1        volume = ((val >> 1) & 0x7FE0);       /* Extract AIN0 Value */
   86   1      }
   87          
   88          int main (void) {
   89   1        unsigned int alignidx;
   90   1      
   91   1        IODIR1  = 0x00FF0000;                     /* P1.16..23 defined as Outputs  */
   92   1        AD0CR   = 0x00200402;                     /* Setup A/D: 10-bit AIN0 @ 3MHz */
   93   1        PINSEL1 = 0x01080000;                     /* enable DAC */
   94   1      
   95   1          test=0;
   96   1      //  IRQDisable();
   97   1      //  IRQEnable();
   98   1      //  IRQDisable1();
   99   1          IRQEnable1();
  100   1      
  101   1        get_input();                              /* has to be called before starting the timer to get volume l
             -evel */
  102   1        
  103   1        init_serial();                            /* Initialize Serial Interface to 115200 baud */
  104   1        init_timer ();
  105   1        
  106   1        printf ("\nMCB2130 WAVE AUDIO PLAYER\n\n");
  107   1      
  108   1        while (1) {                               /* Loop forever */
  109   2          if (print_info)
  110   2          {
  111   3            alignidx = p_wav_hdr->sample_size;
  112   3              if (alignidx > 4) alignidx = 0; 
  113   3            print_info = 0;
  114   3            printf ("Playing Block %01d\n", blockindex);
  115   3            printf ("File information:\n");
  116   3            printf ("=================\n");
  117   3            printf ("File Size:        : %d\n",      p_wav_hdr->length);
  118   3            printf ("Format identifier : %01d\n",    p_wav_hdr->format);
  119   3            printf ("Number of Channels: %01d\n",    p_wav_hdr->channels);
  120   3            printf ("Sampling Rate     : %05d Hz\n", p_wav_hdr->sample_rate);
  121   3            printf ("Bytes per Second  : %05d\n",    p_wav_hdr->bytes_per_second);
  122   3            printf ("Sample Alignment  : %s\n",      alignment[alignidx]);
  123   3            printf ("Sample resolution : %02d\n\n",  p_wav_hdr->precision);
ARM COMPILER V2.50a,  Main                                                                 23/09/08  18:04:45  PAGE 3   

  124   3          }
  125   2        get_input();
  126   2        }
  127   1      }
  128          
ARM COMPILER V2.50a,  Main                                                                 23/09/08  18:04:45  PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE32 (printf?A)
 EXTERN CODE32 (getkey?A)
 EXTERN DATA (mode)
 EXTERN CODE32 (init_serial?A)
 EXTERN CODE32 (init_timer?A)
 EXTERN DATA (print_info)
 EXTERN DATA (p_wav_hdr)
 EXTERN DATA (blockindex)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         IRQDisable1?A
 PUBLIC         IRQEnable1?A
 PUBLIC         get_input?A
 PUBLIC         main
 PUBLIC         volume
 PUBLIC         test



*** DATA SEGMENT '?CON?Main':
 00000000          ??S_15:
 00000000            DB          'Sample resolution : %02d',0x0A,0x0A,0x00
 0000001B          ??S_14:
 0000001B            DB          'Sample Alignment  : %s',0x0A,0x00
 00000033          ??S_13:
 00000033            DB          'Bytes per Second  : %05d',0x0A,0x00
 0000004D          ??S_12:
 0000004D            DB          'Sampling Rate     : %05d Hz',0x0A,0x00
 0000006A          ??S_11:
 0000006A            DB          'Number of Channels: %01d',0x0A,0x00
 00000084          ??S_10:
 00000084            DB          'Format identifier : %01d',0x0A,0x00
 0000009E          ??S_9:
 0000009E            DB          'File Size:        : %d',0x0A,0x00
 000000B6          ??S_8:
 000000B6            DB          '=================',0x0A,0x00
 000000C9          ??S_7:
 000000C9            DB          'File information:',0x0A,0x00
 000000DC          ??S_6:
 000000DC            DB          'Playing Block %01d',0x0A,0x00
 000000F0          ??S_5:
 000000F0            DB          0x0A,'MCB2130 WAVE AUDIO PLAYER',0x0A,0x0A
 0000010C            DB          0x00
 0000010D          alignment:
 0000010D           BEGIN_INIT
 0000010D            DB          'ERR',0x00
 00000111            SPACE       1
 00000112            DB          'BYTE',0x00
 00000117            DB          'WORD',0x00
 0000011C            DB          'ERR',0x00
 00000120            SPACE       1
 00000121            DB          'DWORD'
 00000126           END_INIT

*** DATA SEGMENT '?DT0?Main':
 00000000          volume:
 00000000            DS          4
 00000004          test:
 00000004            DS          1



*** CODE SEGMENT '?PR?IRQDisable1?A?Main':
   40:     MRS     R0, SPSR
 00000000  E14F0000  MRS         R0,SPSR
   41:     ORR     R0, R0, #0x80
ARM COMPILER V2.50a,  Main                                                                 23/09/08  18:04:45  PAGE 5   

 00000004  E3800080  ORR         R0,R0,#0x0080
   42:     MSR     SPSR_c, R0
 00000008  E161F000  MSR         SPSR_c,R0
   46:     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
   47: }
 0000001C  E12FFF1E  BX          R14
 00000020          ENDP ; 'IRQDisable1?A'

⌨️ 快捷键说明

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