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

📄 blinky.lst

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


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

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          /*  BLINKY.C:  LED Flasher                                                    */
    7          /*                                                                            */
    8          /******************************************************************************/
    9                            
   10          #include <stdio.h>                          /* standard I/O .h-file */
   11          #include <LPC21xx.H>                        /* LPC21xx definitions  */
   12          
   13          extern void init_serial (void);             /* Initialize Serial Interface     */
   14          
   15          
   16          void sendhex(int hex)                       /* Write Hex Digit to Serial Port  */
   17          {  
   18   1          if(hex > 9) putchar('A' + (hex - 10));
   19   1          else        putchar('0' +  hex);
   20   1      }
   21          
   22          void sendstr(char *p)                       /* Write string */
   23          {  
   24   1          while(*p) 
   25   1          {
   26   2              putchar(*p++);
   27   2          }
   28   1      }
   29          
   30          void delay (void)                           /* Delay function */
   31          {  
   32   1          unsigned int cnt;
   33   1          unsigned int val;
   34   1      
   35   1          ADCR |= 0x01000000;                     /* Start A/D Conversion */
   36   1          do 
   37   1          {
   38   2              val = ADDR;                         /* Read A/D Data Register */
   39   2          }while((val & 0x80000000) == 0);        /* Wait for end of A/D Conversion */
   40   1          ADCR &= ~0x01000000;                    /* Stop A/D Conversion */
   41   1          val = (val >> 6) & 0x03FF;              /* Extract AIN0 Value */
   42   1      
   43   1          sendstr("\nAIN0 Result = 0x");          /* Output A/D Conversion Result */
   44   1          sendhex((val >> 8) & 0x0F);             /* Write 1. Hex Digit */
   45   1          sendhex((val >> 4) & 0x0F);             /* Write 2. Hex Digit */
   46   1          sendhex(val & 0x0F);                    /* Write 3. Hex Digit */
   47   1      
   48   1          val = (val >> 2) << 12;                 /* Adjust Delay Value */
   49   1          for (cnt = 0; cnt < val; cnt++);        /* Delay */
   50   1      }
   51            
   52          int main (void) 
   53          {
   54   1          unsigned int n;
   55   1      
   56   1          IODIR1 = 0x00FF0000;                    /* P1.16..23 defined as Outputs  */
   57   1          ADCR   = 0x002E0401;                    /* Setup A/D: 10-bit AIN0 @ 3MHz */
   58   1          init_serial();                          /* Initialize Serial Interface   */
   59   1      
ARM COMPILER V2.50a,  Blinky                                                               26/02/08  10:34:29  PAGE 2   

   60   1          while(1) 
   61   1          {                                       /* Loop forever */
   62   2              for(n = 0x00010000; n <= 0x00800000; n <<= 1) 
   63   2              {
   64   3                  /* Blink LED 0, 1, 2, 3, 4, 5, 6, 7 */
   65   3                  IOSET1 = n;                          /* Turn on LED */
   66   3                  delay();                             /* Delay */
   67   3                  IOCLR1 = 0x00FF0000;                 /* Turn off LEDs */
   68   3              }
   69   2          }
   70   1      }
ARM COMPILER V2.50a,  Blinky                                                               26/02/08  10:34:29  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (putchar?T)
 EXTERN CODE16 (init_serial?T)
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         sendhex?T
 PUBLIC         sendstr?T
 PUBLIC         delay?T
 PUBLIC         main



*** DATA SEGMENT '?CON?Blinky':
 00000000          ??S_1:
 00000000            DB          0x0A,'AIN0 Result = 0x',0x00

*** CODE SEGMENT '?PR?sendhex?T?Blinky':
   16: void sendhex(int hex)                       /* Write Hex Digit to Serial Port  */
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; hex
 00000004  ---- Variable 'hex' assigned to Register 'R4' ----
   18:     if(hex > 9) putchar('A' + (hex - 10));
 00000004  1C20      MOV         R0,R4 ; hex
 00000006  2809      CMP         R0,#0x9 ; hex
 00000008  DD04      BLE         L_1  ; T=0x00000014
 0000000A  1C20      MOV         R0,R4 ; hex
 0000000C  3037      ADD         R0,#0x37
 0000000E  F7FF      BL          putchar?T  ; T=0x0001  (1)
 00000010  FFF7      BL          putchar?T  ; T=0x0001  (2)
 00000012  E003      B           L_2  ; T=0x0000001C
 00000014          L_1:
   19:       else        putchar('0' +  hex);
 00000014  1C20      MOV         R0,R4 ; hex
 00000016  3030      ADD         R0,#0x30
 00000018  F7FF      BL          putchar?T  ; T=0x0001  (1)
 0000001A  FFF2      BL          putchar?T  ; T=0x0001  (2)
 0000001C          L_2:
   20: }
 0000001C  BC10      POP         {R4}
 0000001E  BC08      POP         {R3}
 00000020  4718      BX          R3
 00000022          ENDP ; 'sendhex?T'


*** CODE SEGMENT '?PR?sendstr?T?Blinky':
   22: void sendstr(char *p)                       /* Write string */
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; p
 00000004  ---- Variable 'p' assigned to Register 'R4' ----
   24:     while(*p) 
 00000004  E004      B           L_3  ; T=0x00000010
 00000006          L_5:
   26:         putchar(*p++);
 00000006  1C20      MOV         R0,R4 ; p
 00000008  3401      ADD         R4,#0x1
 0000000A  7800      LDRB        R0,[R0,#0x0] ; p
 0000000C  F7FF      BL          putchar?T  ; T=0x0001  (1)
 0000000E  FFF8      BL          putchar?T  ; T=0x0001  (2)
   27:       }
 00000010          L_3:
 00000010  1C20      MOV         R0,R4 ; p
 00000012  7800      LDRB        R0,[R0,#0x0] ; p
 00000014  2800      CMP         R0,#0x0
 00000016  D1F6      BNE         L_5  ; T=0x00000006
   28: }
 00000018  BC10      POP         {R4}
 0000001A  BC08      POP         {R3}
ARM COMPILER V2.50a,  Blinky                                                               26/02/08  10:34:29  PAGE 4   

 0000001C  4718      BX          R3
 0000001E          ENDP ; 'sendstr?T'


*** CODE SEGMENT '?PR?delay?T?Blinky':
   30: void delay (void)                           /* Delay function */
 00000000  B510      PUSH        {R4,LR}
   31: {  
 00000002            ; SCOPE-START
   35:       ADCR |= 0x01000000;                       /* Start A/D Conversion */
 00000002  4800      LDR         R2,=0x1000000
 00000004  4800      LDR         R0,=0xE0034000
 00000006  6801      LDR         R1,[R0,#0x0]
 00000008  4311      ORR         R1,R2
 0000000A  6001      STR         R1,[R0,#0x0]
   36:       do 
 0000000C          L_7:
   38:         val = ADDR;                         /* Read A/D Data Register */
 0000000C  4800      LDR         R0,=0xE0034004
 0000000E  6804      LDR         R4,[R0,#0x0]
 00000010  ---- Variable 'val' assigned to Register 'R4' ----
   39:       }while((val & 0x80000000) == 0);          /* Wait for end of A/D Conversion */
 00000010  1C20      MOV         R0,R4 ; val
 00000012  4800      LDR         R1,=0x80000000
 00000014  4208      TST         R0,R1 ; val
 00000016  D0F9      BEQ         L_7  ; T=0x0000000C
   40:       ADCR &= ~0x01000000;                  /* Stop A/D Conversion */
 00000018  4800      LDR         R2,=0x1000000
 0000001A  4800      LDR         R0,=0xE0034000
 0000001C  6801      LDR         R1,[R0,#0x0]
 0000001E  4391      BIC         R1,R2
 00000020  6001      STR         R1,[R0,#0x0]
   41:       val = (val >> 6) & 0x03FF;                /* Extract AIN0 Value */
 00000022  09A4      LSR         R4,R4,#0x6 ; val
 00000024  4800      LDR         R0,=0x3FF
 00000026  4004      AND         R4,R0
   43:       sendstr("\nAIN0 Result = 0x");            /* Output A/D Conversion Result */
 00000028  4800      LDR         R0,=??S_1 ; ??S_1
 0000002A  F7FF      BL          sendstr?T  ; T=0x0001  (1)
 0000002C  FFE9      BL          sendstr?T  ; T=0x0001  (2)
   44:       sendhex((val >> 8) & 0x0F);           /* Write 1. Hex Digit */
 0000002E  1C20      MOV         R0,R4 ; val
 00000030  0A00      LSR         R0,R0,#0x8 ; val
 00000032  210F      MOV         R1,#0xF
 00000034  4008      AND         R0,R1
 00000036  F7FF      BL          sendhex?T  ; T=0x0001  (1)
 00000038  FFE3      BL          sendhex?T  ; T=0x0001  (2)
   45:       sendhex((val >> 4) & 0x0F);           /* Write 2. Hex Digit */
 0000003A  1C20      MOV         R0,R4 ; val
 0000003C  0900      LSR         R0,R0,#0x4 ; val
 0000003E  210F      MOV         R1,#0xF
 00000040  4008      AND         R0,R1
 00000042  F7FF      BL          sendhex?T  ; T=0x0001  (1)
 00000044  FFDD      BL          sendhex?T  ; T=0x0001  (2)
   46:       sendhex(val & 0x0F);                    /* Write 3. Hex Digit */
 00000046  1C20      MOV         R0,R4 ; val
 00000048  210F      MOV         R1,#0xF
 0000004A  4008      AND         R0,R1
 0000004C  F7FF      BL          sendhex?T  ; T=0x0001  (1)
 0000004E  FFD8      BL          sendhex?T  ; T=0x0001  (2)
   48:       val = (val >> 2) << 12;               /* Adjust Delay Value */
 00000050  08A4      LSR         R4,R4,#0x2 ; val
 00000052  0324      LSL         R4,R4,#0xC
   49:       for (cnt = 0; cnt < val; cnt++);      /* Delay */
 00000054  2000      MOV         R0,#0x0
 00000056  ---- Variable 'cnt' assigned to Register 'R0' ----
 00000056  E000      B           L_13  ; T=0x0000005A
 00000058          L_11:
ARM COMPILER V2.50a,  Blinky                                                               26/02/08  10:34:29  PAGE 5   

 00000058  3001      ADD         R0,#0x1
 0000005A          L_13:
 0000005A  1C22      MOV         R2,R4 ; val
 0000005C  1C01      MOV         R1,R0 ; cnt
 0000005E  4291      CMP         R1,R2 ; cnt
 00000060  D3FA      BCC         L_11  ; T=0x00000058
 00000062            ; SCOPE-END
   50: }
 00000062  BC10      POP         {R4}
 00000064  BC08      POP         {R3}
 00000066  4718      BX          R3
 00000068          ENDP ; 'delay?T'


*** CODE SEGMENT '?PR?main?Blinky':
   52: int main (void) 
 00000000  B500      PUSH        {LR}
   53: {
 00000002            ; SCOPE-START
   56:       IODIR1 = 0x00FF0000;                  /* P1.16..23 defined as Outputs  */
 00000002  4800      LDR         R1,=0xFF0000
 00000004  4800      LDR         R0,=0xE0028018
 00000006  6001      STR         R1,[R0,#0x0]
   57:       ADCR   = 0x002E0401;                  /* Setup A/D: 10-bit AIN0 @ 3MHz */
 00000008  4800      LDR         R1,=0x2E0401
 0000000A  4800      LDR         R0,=0xE0034000
 0000000C  6001      STR         R1,[R0,#0x0]
   58:       init_serial();                        /* Initialize Serial Interface   */
 0000000E  F7FF      BL          init_serial?T  ; T=0x0001  (1)
 00000010  FFF7      BL          init_serial?T  ; T=0x0001  (2)
   62:         for(n = 0x00010000; n <= 0x00800000; n <<= 1) 
 00000012          L_24:
 00000012  4800      LDR         R4,=0x10000
 00000014  ---- Variable 'n' assigned to Register 'R4' ----
 00000014          L_23:
   65:               IOSET1 = n;                          /* Turn on LED */
 00000014  1C21      MOV         R1,R4 ; n
 00000016  4800      LDR         R0,=0xE0028014
 00000018  6001      STR         R1,[R0,#0x0]
   66:               delay();                             /* Delay */
 0000001A  F7FF      BL          delay?T  ; T=0x0001  (1)
 0000001C  FFF1      BL          delay?T  ; T=0x0001  (2)
   67:               IOCLR1 = 0x00FF0000;                 /* Turn off LEDs */
 0000001E  4800      LDR         R1,=0xFF0000
 00000020  4800      LDR         R0,=0xE002801C
 00000022  6001      STR         R1,[R0,#0x0]
   68:         }
 00000024  0064      LSL         R4,R4,#0x1 ; n
 00000026  1C20      MOV         R0,R4 ; n
 00000028  4800      LDR         R1,=0x800000
 0000002A  4288      CMP         R0,R1 ; n
 0000002C  D9F2      BLS         L_23  ; T=0x00000014
   69:       }
 0000002E  E7F0      B           L_24  ; T=0x00000012
 00000030            ; SCOPE-END
   70: }
 00000030  BC08      POP         {R3}
 00000032  4718      BX          R3
 00000034          ENDP ; 'main'



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


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

⌨️ 快捷键说明

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