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

📄 blinky.lst

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


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

   60   3            delay();                             /* Delay */
   61   3            IOCLR1 = 0x00FF0000;                 /* Turn off LEDs */
   62   3          }
   63   2        }
   64   1      }
ARM COMPILER V2.42,  Blinky                                                                20/12/05  21:08:42  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' ----
   17:   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:
   18:   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:
   19: }
 0000001C  BC10      POP         {R4}
 0000001E  BC08      POP         {R3}
 00000020  4718      BX          R3
 00000022          ENDP ; 'sendhex?T'


*** CODE SEGMENT '?PR?sendstr?T?Blinky':
   21: void sendstr (char *p) {                   /* Write string */
 00000000  B510      PUSH        {R4,LR}
 00000002  1C04      MOV         R4,R0 ; p
 00000004  ---- Variable 'p' assigned to Register 'R4' ----
   22:   while (*p) {
 00000004  E004      B           L_3  ; T=0x00000010
 00000006          L_5:
   23:     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)
   24:   }
 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
   25: }
 00000018  BC10      POP         {R4}
 0000001A  BC08      POP         {R3}
ARM COMPILER V2.42,  Blinky                                                                20/12/05  21:08:42  PAGE 4   

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


*** CODE SEGMENT '?PR?delay?T?Blinky':
   28: void delay (void) {                        /* Delay function */
 00000000  B510      PUSH        {R4,LR}
 00000002            ; SCOPE-START
   32:   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]
   33:   do {
 0000000C          L_7:
   34:     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' ----
   35:   } 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
   36:   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]
   37:   val = (val >> 6) & 0x03FF;               /* Extract AIN0 Value */
 00000022  09A4      LSR         R4,R4,#0x6 ; val
 00000024  4800      LDR         R0,=0x3FF
 00000026  4004      AND         R4,R0
   39:   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)
   40:   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)
   41:   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)
   42:   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)
   44:   val = (val >> 2) << 12;                  /* Adjust Delay Value */
 00000050  08A4      LSR         R4,R4,#0x2 ; val
 00000052  0324      LSL         R4,R4,#0xC
   45:   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:
 00000058  3001      ADD         R0,#0x1
ARM COMPILER V2.42,  Blinky                                                                20/12/05  21:08:42  PAGE 5   

 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
   46: }
 00000062  BC10      POP         {R4}
 00000064  BC08      POP         {R3}
 00000066  4718      BX          R3
 00000068          ENDP ; 'delay?T'


*** CODE SEGMENT '?PR?main?Blinky':
   49: int main (void) {
 00000000  B500      PUSH        {LR}
 00000002            ; SCOPE-START
   52:   IODIR1 = 0x00FF0000;                     /* P1.16..23 defined as Outputs  */
 00000002  4800      LDR         R1,=0xFF0000
 00000004  4800      LDR         R0,=0xE0028018
 00000006  6001      STR         R1,[R0,#0x0]
   53:   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]
   54:   init_serial();                           /* Initialize Serial Interface   */
 0000000E  F7FF      BL          init_serial?T  ; T=0x0001  (1)
 00000010  FFF7      BL          init_serial?T  ; T=0x0001  (2)
   57:     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:
   59:       IOSET1 = n;                          /* Turn on LED */
 00000014  1C21      MOV         R1,R4 ; n
 00000016  4800      LDR         R0,=0xE0028014
 00000018  6001      STR         R1,[R0,#0x0]
   60:       delay();                             /* Delay */
 0000001A  F7FF      BL          delay?T  ; T=0x0001  (1)
 0000001C  FFF1      BL          delay?T  ; T=0x0001  (2)
   61:       IOCLR1 = 0x00FF0000;                 /* Turn off LEDs */
 0000001E  4800      LDR         R1,=0xFF0000
 00000020  4800      LDR         R0,=0xE002801C
 00000022  6001      STR         R1,[R0,#0x0]
   62:     }
 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
   63:   }
 0000002E  E7F0      B           L_24  ; T=0x00000012
 00000030            ; SCOPE-END
   64: }
 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 + -