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

📄 main.lst

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


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

stmt  level    source

    1          
    2          /*************************************************************/
    3          /* PROJECT NAME: UART                                       */
    4          /* Project:      LPC2100 Training course                    */
    5          /* Engineer:     T Martin      tmartin@hitex.co.uk          */
    6          /* Filename:     main.c                                     */
    7          /* Language:     C                                          */
    8          /* Compiler:     Keil ARM   V2.00b                          */
    9          /* Assembler:                                               */
   10          /*                                                          */
   11          /************************************************************/
   12          /* COPYRIGHT: Hitex UK Ltd      2005                        */
   13          /* LICENSE:   THIS VERSION CREATED FOR FREE DISTRIBUTION    */
   14          /************************************************************/
   15          /* Function:                                                */
   16          /*                                                          */
   17          /* Example                                                  */
   18          /*                                                          */
   19          /*          Demonstrates RS232 Comms                        */
   20          /*                                                          */  
   21          /* Oscillator frequency 12.000 Mhz                          */
   22          /* Target board Keil MCB2100                                */
   23          /************************************************************/
   24          
   25          
   26          #define CR     0x0D
   27          #include <LPC21xx.H>
   28           
   29          void init_serial (void);
   30          int putchar (int ch);
   31          int getchar (void);
   32          
   33          
   34          unsigned char test;
   35          
   36          int main(void)
   37          {
   38   1      VPBDIV = 0x02;                      //Divide Pclk by two
   39   1      init_serial();
   40   1      
   41   1      while(1)
   42   1      {
   43   2      
   44   2      putchar(getchar());                 //Echo terminal
   45   2      }
   46   1      }
   47          
   48          void init_serial (void)           /* Initialize Serial Interface       */
   49          {                      
   50   1        PINSEL0   = 0x00050000;         /* Enable RxD1 and TxD1              */ 
   51   1        U1LCR     = 0x00000083;         /* 8 bits, no Parity, 1 Stop bit     */
   52   1        U1DLL     = 0x000000C2;         /* 9600 Baud Rate @ 30MHz VPB Clock  */
   53   1        U1LCR     = 0x00000003;        /* DLAB = 0                          */
   54   1      }
   55          
   56          
   57          int putchar (int ch)              /* Write character to Serial Port    */
   58          {                       
   59   1      
ARM COMPILER V2.00f,  main                                                                 20/02/05  12:36:10  PAGE 2   

   60   1        if (ch == '\n')  {
   61   2          while (!(U1LSR & 0x20));
   62   2          U1THR = CR;                    /* output CR */
   63   2        }
   64   1        while (!(U1LSR & 0x20));
   65   1        return (U1THR = ch);
   66   1      }
   67          
   68          
   69          int getchar (void)              /* Read character from Serial Port   */
   70          {                    
   71   1      
   72   1        while (!(U1LSR & 0x01));
   73   1      
   74   1        return (U1RBR);
   75   1      }
ARM COMPILER V2.00f,  main                                                                 20/02/05  12:36:10  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         init_serial?T
 PUBLIC         putchar?T
 PUBLIC         getchar?T
 PUBLIC         main
 PUBLIC         test



*** DATA SEGMENT '?DT0?main':
 00000000          test:
 00000000            DS          1



*** CODE SEGMENT '?PR?main?main':
   36: int main(void)
 00000000  B500      PUSH        {LR}
   38: VPBDIV = 0x02;                      //Divide Pclk by two
 00000002  2102      MOV         R1,#0x2
 00000004  4800      LDR         R0,=0xE01FC100
 00000006  7001      STRB        R1,[R0,#0x0]
   39: init_serial();
 00000008  F7FF      BL          init_serial?T  ; T=0x0001  (1)
 0000000A  FFFA      BL          init_serial?T  ; T=0x0001  (2)
   41: while(1)
 0000000E          L_3:
   44: putchar(getchar());                 //Echo terminal
 0000000E  F7FF      BL          getchar?T  ; T=0x0001  (1)
 00000010  FFF7      BL          getchar?T  ; T=0x0001  (2)
 00000014  F7FF      BL          putchar?T  ; T=0x0001  (1)
 00000016  FFF4      BL          putchar?T  ; T=0x0001  (2)
   45: }
 0000001A  E7F8      B           L_3  ; T=0x0000000E
 0000001C  BC08      POP         {R3}
 0000001E  4718      BX          R3
 00000020          ENDP ; 'main'


*** CODE SEGMENT '?PR?init_serial?T?main':
   50:   PINSEL0   = 0x00050000;         /* Enable RxD1 and TxD1              */ 
 00000000  4800      LDR         R1,=0x50000
 00000002  4800      LDR         R0,=0xE002C000
 00000004  6001      STR         R1,[R0,#0x0]
   51:   U1LCR     = 0x00000083;         /* 8 bits, no Parity, 1 Stop bit     */
 00000006  2183      MOV         R1,#0x83
 00000008  4800      LDR         R0,=0xE001000C
 0000000A  7001      STRB        R1,[R0,#0x0]
   52:   U1DLL     = 0x000000C2;         /* 9600 Baud Rate @ 30MHz VPB Clock  */
 0000000C  21C2      MOV         R1,#0xC2
 0000000E  4800      LDR         R0,=0xE0010000
 00000010  7001      STRB        R1,[R0,#0x0]
   53:   U1LCR     = 0x00000003;        /* DLAB = 0                          */
 00000012  2103      MOV         R1,#0x3
 00000014  4800      LDR         R0,=0xE001000C
 00000016  7001      STRB        R1,[R0,#0x0]
   54: }
 00000018  4770      BX          R14
 0000001A          ENDP ; 'init_serial?T'


*** CODE SEGMENT '?PR?putchar?T?main':
   57: int putchar (int ch)              /* Write character to Serial Port    */
 00000000  ---- Variable 'ch' assigned to Register 'R0' ----
   60:   if (ch == '\n')  {
 00000000  280A      CMP         R0,#0xA ; ch
 00000002  D107      BNE         L_13  ; T=0x00000014
   61:     while (!(U1LSR & 0x20));
ARM COMPILER V2.00f,  main                                                                 20/02/05  12:36:10  PAGE 4   

 00000004          L_6:
 00000004  4800      LDR         R1,=0xE0010014
 00000006  7809      LDRB        R1,[R1,#0x0]
 00000008  2220      MOV         R2,#0x20
 0000000A  4211      TST         R1,R2
 0000000C  D0FA      BEQ         L_6  ; T=0x00000004
   62:     U1THR = CR;                    /* output CR */
 0000000E  220D      MOV         R2,#0xD
 00000010  4800      LDR         R1,=0xE0010000
 00000012  700A      STRB        R2,[R1,#0x0]
   64:   while (!(U1LSR & 0x20));
 00000014          L_13:
 00000014          L_10:
 00000014  4800      LDR         R1,=0xE0010014
 00000016  7809      LDRB        R1,[R1,#0x0]
 00000018  2220      MOV         R2,#0x20
 0000001A  4211      TST         R1,R2
 0000001C  D0FA      BEQ         L_10  ; T=0x00000014
   65:   return (U1THR = ch);
 0000001E  4800      LDR         R1,=0xE0010000
 00000020  7008      STRB        R0,[R1,#0x0]
 00000022  0600      LSL         R0,R0,#0x18 ; ch
 00000024  0E00      LSR         R0,R0,#0x18
   66: }
 00000026  4770      BX          R14
 00000028          ENDP ; 'putchar?T'


*** CODE SEGMENT '?PR?getchar?T?main':
   72:   while (!(U1LSR & 0x01));
 00000000          L_15:
 00000000  4800      LDR         R0,=0xE0010014
 00000002  7800      LDRB        R0,[R0,#0x0]
 00000004  2101      MOV         R1,#0x1
 00000006  4208      TST         R0,R1
 00000008  D0FA      BEQ         L_15  ; T=0x00000000
   74:   return (U1RBR);
 0000000A  4800      LDR         R0,=0xE0010000
 0000000C  7800      LDRB        R0,[R0,#0x0]
   75: }
 0000000E  4770      BX          R14
 00000010          ENDP ; 'getchar?T'



Module Information          Static
----------------------------------
  code size            =    ------
  data size            =         1
  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 + -