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

📄 main.lst

📁 掏美元培训得来的某外国公司推广keil ARM 和LPC2100的源码。
💻 LST
字号:
ARM COMPILER V2.42,  main                                                                  20/12/05  12:47:03  PAGE 1   


ARM COMPILER V2.42, COMPILATION OF MODULE main
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe main.c ARM OPTIMIZE(7,SIZE) BROWSE DEBUG TABS(4) 

stmt  level    source

    1          /************************************************************/
    2          /* PROJECT NAME: MAM                                        */
    3          /* Project:      LPC2100 Training course                    */
    4          /* Engineer:     T Martin       tmartin@hitex.co.uk         */
    5          /* Filename:     main.c                                     */
    6          /* Language:     C                                          */
    7          /* Compiler:     Keil ARM   V2.00b                          */
    8          /* Assembler:                                               */
    9          /*                                                          */
   10          /************************************************************/
   11          /* COPYRIGHT: Hitex UK Ltd      2005                        */
   12          /* LICENSE:   THIS VERSION CREATED FOR FREE DISTRIBUTION    */
   13          /************************************************************/
   14          /* Function:                                                */
   15          /*                                                          */
   16          /* Example Demo of Memory Accelerator Module performance    */
   17          /*                                                          */
   18          /* Demonstrates Use of the LPC2100 MAM                      */
   19          /*                                                          */  
   20          /* Oscillator frequency 12.000 Mhz                          */
   21          /* Target board Keil MCB21000                               */
   22          /************************************************************/
   23          
   24          #include <LPC21xx.H> 
   25          
   26          void ChangeGPIOPinState(unsigned int state);
   27          
   28          unsigned val;
   29          
   30          
   31          int main(void)
   32          {
   33   1      unsigned int delay;
   34   1      unsigned int flasher = 0x00010000;                      // define locals
   35   1      
   36   1      IODIR1      = 0x00FF0000;                                   // set all ports to output
   37   1      
   38   1      VPBDIV      = 0x00000002;
   39   1      
   40   1      ADCR        = 0x00270601;                                   // Setup A/D: 10-bit AIN0 @ 3MHz 
   41   1      ADCR        |= 0x01000000;                                      // Start A/D Conversion 
   42   1      
   43   1      while(1)
   44   1      {
   45   2      do
   46   2      {
   47   3          val     = ADDR;                                         // Read A/D Data Register 
   48   3      }        
   49   2      while ((val & 0x80000000) == 0x00000000);
   50   2      val         = ((val >> 6) & 0x000003FF);
   51   2      
   52   2      if (val <0x0000000080)
   53   2      {
   54   3      MAMCR       = 0x00000000;
   55   3      MAMTIM      = 0x00000004;
   56   3      MAMCR       = 0x00000002;
   57   3      }
   58   2      else
   59   2      {
ARM COMPILER V2.42,  main                                                                  20/12/05  12:47:03  PAGE 2   

   60   3      MAMCR       = 0x00000000;
   61   3      }
   62   2      
   63   2      for(delay = 0;delay<0x100000;delay++)                   //simple delay loop
   64   2      {
   65   3      ;
   66   3      }
   67   2      
   68   2      ChangeGPIOPinState(flasher);                            //set the state of the ports
   69   2      flasher = flasher <<1;                                  //shift the active led
   70   2      if(flasher&0x01000000) flasher = 0x00010000;            //Increment flasher led and test for overflow
   71   2      
   72   2      }
   73   1      }
   74          
   75          void ChangeGPIOPinState(unsigned int state)
   76          {
   77   1      IOCLR1 = ~state;                                        //clear output pins
   78   1      IOSET1 =  state;                                        //set output pins
   79   1      
   80   1      }
   81          
   82          
ARM COMPILER V2.42,  main                                                                  20/12/05  12:47:03  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         ChangeGPIOPinState?A
 PUBLIC         main
 PUBLIC         val



*** DATA SEGMENT '?DT0?main':
 00000000          val:
 00000000            DS          4



*** CODE SEGMENT '?PR?main?main':
   31: int main(void)
 00000000  E92D4000  STMDB       R13!,{LR}
   32: {
 00000004            ; SCOPE-START
   34: unsigned int flasher = 0x00010000;                      // define locals
 00000004  E3A04801  MOV         R4,#0x10000
 00000008  ---- Variable 'flasher' assigned to Register 'R4' ----
   36: IODIR1         = 0x00FF0000;                                   // set all ports to output
 00000008  E3A018FF  MOV         R1,#0xFF0000
 0000000C  E5100000  LDR         R0,=0xE0028018
 00000010  E5801000  STR         R1,[R0,#0x0]
   38: VPBDIV         = 0x00000002;
 00000014  E3A01002  MOV         R1,#0x2
 00000018  E5100000  LDR         R0,=0xE01FC100
 0000001C  E5C01000  STRB        R1,[R0,#0x0]
   40: ADCR           = 0x00270601;                                   // Setup A/D: 10-bit AIN0 @ 3MHz 
 00000020  E5101000  LDR         R1,=0x270601
 00000024  E5100000  LDR         R0,=0xE0034000
 00000028  E5801000  STR         R1,[R0,#0x0]
   41: ADCR         |= 0x01000000;                                      // Start A/D Conversion 
 0000002C  E5100000  LDR         R0,=0xE0034000
 00000030  E5901000  LDR         R1,[R0,#0x0]
 00000034  E3811401  ORR         R1,R1,#0x1000000
 00000038  E5801000  STR         R1,[R0,#0x0]
   45: do
 0000003C          L_6:
 0000003C          L_5:
   47:     val     = ADDR;                                         // Read A/D Data Register 
 0000003C  E5100000  LDR         R0,=0xE0034004
 00000040  E5901000  LDR         R1,[R0,#0x0]
 00000044  E5100000  LDR         R0,=val ; val
 00000048  E5801000  STR         R1,[R0,#0x0] ; val
   48: }        
 0000004C  E5100000  LDR         R0,=val ; val
 00000050  E5901000  LDR         R1,[R0,#0x0] ; val
 00000054  E3110102  TST         R1,#0x80000000
 00000058  0AFFFFF7  BEQ         L_5  ; Targ=0x3C
   50: val         = ((val >> 6) & 0x000003FF);
 0000005C  E1A01321  MOV         R1,R1,LSR #6
 00000060  E5100000  LDR         R0,=0x3FF
 00000064  E0011000  AND         R1,R1,R0
 00000068  E5100000  LDR         R0,=val ; val
 0000006C  E5801000  STR         R1,[R0,#0x0] ; val
   52: if (val <0x0000000080)
 00000070  E5100000  LDR         R0,=val ; val
 00000074  E5900000  LDR         R0,[R0,#0x0] ; val
 00000078  E3500080  CMP         R0,#0x0080
 0000007C  2A000009  BCS         L_9  ; Targ=0xA8
   54: MAMCR         = 0x00000000;
 00000080  E3A01000  MOV         R1,#0x0
ARM COMPILER V2.42,  main                                                                  20/12/05  12:47:03  PAGE 4   

 00000084  E5100000  LDR         R0,=0xE01FC000
 00000088  E5C01000  STRB        R1,[R0,#0x0]
   55: MAMTIM         = 0x00000004;
 0000008C  E3A01004  MOV         R1,#0x4
 00000090  E5100000  LDR         R0,=0xE01FC004
 00000094  E5C01000  STRB        R1,[R0,#0x0]
   56: MAMCR         = 0x00000002;
 00000098  E3A01002  MOV         R1,#0x2
 0000009C  E5100000  LDR         R0,=0xE01FC000
 000000A0  E5C01000  STRB        R1,[R0,#0x0]
   57: }
 000000A4  EA000002  B           L_15  ; Targ=0xB4
 000000A8          L_9:
   60: MAMCR         = 0x00000000;
 000000A8  E3A01000  MOV         R1,#0x0
 000000AC  E5100000  LDR         R0,=0xE01FC000
 000000B0  E5C01000  STRB        R1,[R0,#0x0]
   63: for(delay = 0;delay<0x100000;delay++)                   //simple delay loop
 000000B4          L_15:
 000000B4  E3A00000  MOV         R0,#0x0
 000000B8  ---- Variable 'delay' assigned to Register 'R0' ----
   66: }
 000000B8          L_11:
 000000B8  E2800001  ADD         R0,R0,#0x0001 ; delay
 000000BC  E1A01000  MOV         R1,R0 ; delay
 000000C0  E3510601  CMP         R1,#0x100000 ; delay
 000000C4  3AFFFFFB  BCC         L_11  ; Targ=0xB8
   68: ChangeGPIOPinState(flasher);                            //set the state of the ports
 000000C8  E1A00004  MOV         R0,R4 ; flasher
 000000CC  EBFFFFCB  BL          ChangeGPIOPinState?A  ; Targ=0x0
   69: flasher = flasher <<1;                                  //shift the active led
 000000D0  E1A04084  MOV         R4,R4,LSL #1 ; flasher
   70: if(flasher&0x01000000) flasher = 0x00010000;            //Increment flasher led and test for overflow
 000000D4  E1A00004  MOV         R0,R4 ; flasher
 000000D8  E3100401  TST         R0,#0x1000000 ; flasher
 000000DC  0AFFFFD6  BEQ         L_6  ; Targ=0x3C
 000000E0  E3A04801  MOV         R4,#0x10000
   72: }
 000000E4  EAFFFFD4  B           L_6  ; Targ=0x3C
 000000E8            ; SCOPE-END
   73: }
 000000E8  E8BD0008  LDMIA       R13!,{R3}
 000000EC  E12FFF13  BX          R3
 000000F0          ENDP ; 'main'


*** CODE SEGMENT '?PR?ChangeGPIOPinState?A?main':
   75: void ChangeGPIOPinState(unsigned int state)
 00000000  ---- Variable 'state' assigned to Register 'R0' ----
   77: IOCLR1 = ~state;                                        //clear output pins
 00000000  E1A02000  MOV         R2,R0 ; state
 00000004  E1E02002  MVN         R2,R2
 00000008  E5101000  LDR         R1,=0xE002801C
 0000000C  E5812000  STR         R2,[R1,#0x0]
   78: IOSET1 =  state;                                        //set output pins
 00000010  E1A01000  MOV         R1,R0 ; state
 00000014  E5100000  LDR         R0,=0xE0028014
 00000018  E5801000  STR         R1,[R0,#0x0]
   80: }
 0000001C  E12FFF1E  BX          R14
 00000020          ENDP ; 'ChangeGPIOPinState?A'



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

ARM COMPILER V2.42,  main                                                                  20/12/05  12:47:03  PAGE 5   


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

⌨️ 快捷键说明

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