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

📄 main.lst

📁 ARM开发例程,KEIL_ARM编译环境.
💻 LST
字号:
ARM COMPILER V2.50a,  main                                                                 26/02/08  10:37:47  PAGE 1   


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

stmt  level    source

    1          /************************************************************/
    2          /* PROJECT NAME: GPIO                                       */
    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.0b                           */
    8          /* Assembler:                                               */
    9          /*                                                          */
   10          /************************************************************/
   11          /* COPYRIGHT: Hitex UK Ltd      2005                        */
   12          /* LICENSE:   THIS VERSION CREATED FOR FREE DISTRIBUTION    */
   13          /************************************************************/
   14          /* Function:                                                */
   15          /*                                                          */
   16          /* Example                                                  */
   17          /*                                                          */
   18          /* Demonstrates Use of the LPC2100 GPIO                     */
   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          
   29          int main(void)
   30          {
   31   1          unsigned int delay;
   32   1          unsigned int flasher = 0x00010000;                      // define locals
   33   1      
   34   1          IODIR1               = 0x00FF0000;                      // set all ports to output
   35   1      
   36   1          while(1)
   37   1          {
   38   2      
   39   2              for(delay = 0;delay<0xA0000;delay++)                //simple delay loop
   40   2              {
   41   3                  ;
   42   3              }
   43   2      
   44   2              ChangeGPIOPinState(flasher);                        //set the state of the ports
   45   2              flasher = flasher << 1;                             //shift the active led
   46   2              if(flasher & 0x01000000) 
   47   2              flasher = 0x00010000;                               //Increment flasher led and test for overflow
   48   2      
   49   2          }
   50   1      }
   51          
   52          void ChangeGPIOPinState(unsigned int state)
   53          {
   54   1          IOCLR1  = ~state;                                       //clear output pins
   55   1          IOSET1  =  state;                                       //set output pins   
   56   1      }
   57          
   58          
ARM COMPILER V2.50a,  main                                                                 26/02/08  10:37:47  PAGE 2   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         ChangeGPIOPinState?T
 PUBLIC         main



*** CODE SEGMENT '?PR?main?main':
   29: int main(void)
 00000000  B500      PUSH        {LR}
   30: {
 00000002            ; SCOPE-START
   32:     unsigned int flasher = 0x00010000;                      // define locals
 00000002  4800      LDR         R4,=0x10000
 00000004  ---- Variable 'flasher' assigned to Register 'R4' ----
   34:     IODIR1               = 0x00FF0000;                      // set all ports to output
 00000004  4800      LDR         R1,=0xFF0000
 00000006  4800      LDR         R0,=0xE0028018
 00000008  6001      STR         R1,[R0,#0x0]
   39:         for(delay = 0;delay<0xA0000;delay++)                //simple delay loop
 0000000A          L_9:
 0000000A  2000      MOV         R0,#0x0
 0000000C  ---- Variable 'delay' assigned to Register 'R0' ----
   42:         }
 0000000C          L_5:
 0000000C  3001      ADD         R0,#0x1
 0000000E  1C01      MOV         R1,R0 ; delay
 00000010  4800      LDR         R2,=0xA0000
 00000012  4291      CMP         R1,R2 ; delay
 00000014  D3FA      BCC         L_5  ; T=0x0000000C
   44:         ChangeGPIOPinState(flasher);                        //set the state of the ports
 00000016  1C20      MOV         R0,R4 ; flasher
 00000018  F7FF      BL          ChangeGPIOPinState?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          ChangeGPIOPinState?T  ; T=0x0001  (2)
   45:         flasher = flasher << 1;                             //shift the active led
 0000001C  0064      LSL         R4,R4,#0x1 ; flasher
   46:         if(flasher & 0x01000000) 
 0000001E  1C20      MOV         R0,R4 ; flasher
 00000020  4800      LDR         R1,=0x1000000
 00000022  4208      TST         R0,R1 ; flasher
 00000024  D0F1      BEQ         L_9  ; T=0x0000000A
   47:         flasher = 0x00010000;                               //Increment flasher led and test for overflow
 00000026  4800      LDR         R4,=0x10000
   49:     }
 00000028  E7EF      B           L_9  ; T=0x0000000A
 0000002A            ; SCOPE-END
   50: }
 0000002A  BC08      POP         {R3}
 0000002C  4718      BX          R3
 0000002E          ENDP ; 'main'


*** CODE SEGMENT '?PR?ChangeGPIOPinState?T?main':
   52: void ChangeGPIOPinState(unsigned int state)
 00000000  ---- Variable 'state' assigned to Register 'R0' ----
   54:     IOCLR1  = ~state;                                       //clear output pins
 00000000  1C02      MOV         R2,R0 ; state
 00000002  43D2      MVN         R2,R2
 00000004  4800      LDR         R1,=0xE002801C
 00000006  600A      STR         R2,[R1,#0x0]
   55:     IOSET1  =  state;                                       //set output pins   
 00000008  1C01      MOV         R1,R0 ; state
 0000000A  4800      LDR         R0,=0xE0028014
 0000000C  6001      STR         R1,[R0,#0x0]
   56: }
ARM COMPILER V2.50a,  main                                                                 26/02/08  10:37:47  PAGE 3   

 0000000E  4770      BX          R14
 00000010          ENDP ; 'ChangeGPIOPinState?T'



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


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

⌨️ 快捷键说明

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