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

📄 uart.lst

📁 lpc2100_arm_keil实例,很好的实例
💻 LST
字号:
ARM COMPILER V2.53,  uart                                                                  28/12/07  23:55:14  PAGE 1   


ARM COMPILER V2.53, COMPILATION OF MODULE uart
OBJECT MODULE PLACED IN uart.OBJ
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe uart.c THUMB BROWSE DEBUG TABS(4) 

stmt  level    source

    1          /*******************************************************************************
    2          *File: main.C
    3          *功能: 串口发送数据
    4          *说明: 使用外部晶振,不使用PLL,Fpclk=Fcclk/4
    5          *******************************************************************************/
    6          #include   "config.h"
    7          
    8          /*******************************************************************************
    9          *名称: DelayNS()
   10          *功能: 长软件延时
   11          *******************************************************************************/
   12          void DelayNS(uint32 dly)
   13          { uint32 i;
   14   1      
   15   1         for(;dly>0;dly--)
   16   1             for(i=0;i<50000;i++);
   17   1      }
   18          /*******************************************************************************
   19          *名称: UART0_Ini()
   20          *功能: 初始化串口0.设置为8位数据位,1位停止位,无奇偶校验,波特率为9600
   21          *******************************************************************************/
   22          void UART0_Ini(void)
   23          {  U0LCR=0x83;                       //DLAB=1,可设置波特率
   24   1         U0DLL=0x12;
   25   1         U0DLM=0x00;
   26   1         U0LCR=0x03;
   27   1      }
   28          /*******************************************************************************
   29          *名称: UART0_SendByte()
   30          *功能: 向串口发送字节数据,并等待发送完毕
   31          *******************************************************************************/
   32          void UART0_SendByte(uint8 data)
   33          {   U0THR=data;                     //发送数据
   34   1          while((U0LSR&0x40)==0);         //等待数据发送完毕
   35   1          {
   36   2            uint32 i;
   37   2            for(i=0; i<5; i++);
   38   2         }
   39   1      }
   40          /*******************************************************************************
   41          *名称:UART0_SendStr()
   42          *功能:向串口发送一字符串
   43          *******************************************************************************/
   44          void UART0_SendStr(uint8  *str)
   45          {  while(1)
   46   1        { if(*str=='\0') 
   47   2          {UART0_SendByte('\r');
   48   3           UART0_SendByte('\n');
   49   3               break;
   50   3            } else
   51   2        UART0_SendByte(*str++);           //发送数据
   52   2        }
   53   1      }
   54          char UART0_RecvByte(void)
   55          {  while(!(U0LSR&0x01));
   56   1         return U0RBR;
   57   1      }
   58          /*******************************************************************************
   59          *名称: main()
ARM COMPILER V2.53,  uart                                                                  28/12/07  23:55:14  PAGE 2   

   60          *功能: 向串口UART0发送字符串"Hello World!"
   61          *******************************************************************************/
   62          int main(void)
   63          {  uint8   SEND_STRING[]="HELLO WORLD!\n";
   64   1         PINSEL0=0x00000005;              //设置I/O连接到UART0
   65   1         PINSEL1=0x00000000;
   66   1         UART0_Ini();
   67   1        
   68   1         UART0_SendStr(SEND_STRING);
   69   1         DelayNS(10);
   70   1         
   71   1          while(1)    
   72   1         {
   73   2            UART0_SendByte(UART0_RecvByte());
   74   2         }
   75   1         return(0);
   76   1      }
ARM COMPILER V2.53,  uart                                                                  28/12/07  23:55:14  PAGE 3   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN NUMBER (__startup)



*** PUBLICS:
 PUBLIC         DelayNS?T
 PUBLIC         UART0_Ini?T
 PUBLIC         UART0_SendByte?T
 PUBLIC         UART0_SendStr?T
 PUBLIC         UART0_RecvByte?T
 PUBLIC         main



*** DATA SEGMENT '?CON?uart':
 00000000          ?tpl?0001:
 00000000           BEGIN_INIT
 00000000            DB          'HELLO WORLD!',0x0A,0x00
 0000000E           END_INIT



*** CODE SEGMENT '?PR?DelayNS?T?uart':
   12: void DelayNS(uint32 dly)
 00000000  ---- Variable 'dly' assigned to Register 'R0' ----
   13: { uint32 i;
 00000000            ; SCOPE-START
   15:    for(;dly>0;dly--)
 00000000  E006      B           L_3  ; T=0x00000010
   16:        for(i=0;i<50000;i++);
 00000002          L_10:
 00000002  2100      MOV         R1,#0x0
 00000004  ---- Variable 'i' assigned to Register 'R1' ----
 00000004          L_6:
 00000004  3101      ADD         R1,#0x1
 00000006  1C0A      MOV         R2,R1 ; i
 00000008  4800      LDR         R3,=0xC350
 0000000A  429A      CMP         R2,R3 ; i
 0000000C  D3FA      BCC         L_6  ; T=0x00000004
 0000000E  3801      SUB         R0,#0x1
 00000010          L_3:
 00000010  1C01      MOV         R1,R0 ; dly
 00000012  2900      CMP         R1,#0x0 ; dly
 00000014  D8F5      BHI         L_10  ; T=0x00000002
 00000016            ; SCOPE-END
   17: }
 00000016  4770      BX          R14
 00000018          ENDP ; 'DelayNS?T'


*** CODE SEGMENT '?PR?UART0_Ini?T?uart':
   23: {  U0LCR=0x83;                       //DLAB=1,可设置波特率
 00000000  2183      MOV         R1,#0x83
 00000002  4800      LDR         R0,=0xE000C00C
 00000004  7001      STRB        R1,[R0,#0x0]
   24:    U0DLL=0x12;
 00000006  2112      MOV         R1,#0x12
 00000008  4800      LDR         R0,=0xE000C000
 0000000A  7001      STRB        R1,[R0,#0x0]
   25:    U0DLM=0x00;
 0000000C  2100      MOV         R1,#0x0
 0000000E  4800      LDR         R0,=0xE000C004
 00000010  7001      STRB        R1,[R0,#0x0]
   26:    U0LCR=0x03;
 00000012  2103      MOV         R1,#0x3
 00000014  4800      LDR         R0,=0xE000C00C
 00000016  7001      STRB        R1,[R0,#0x0]
   27: }
 00000018  4770      BX          R14
 0000001A          ENDP ; 'UART0_Ini?T'

ARM COMPILER V2.53,  uart                                                                  28/12/07  23:55:14  PAGE 4   


*** CODE SEGMENT '?PR?UART0_SendByte?T?uart':
   32: void UART0_SendByte(uint8 data)
 00000000  1C02      MOV         R2,R0 ; data
 00000002  ---- Variable 'data' assigned to Register 'R2' ----
   33: {   U0THR=data;                     //发送数据
 00000002  1C11      MOV         R1,R2 ; data
 00000004  4800      LDR         R0,=0xE000C000
 00000006  7001      STRB        R1,[R0,#0x0]
   34:     while((U0LSR&0x40)==0);         //等待数据发送完毕
 00000008          L_11:
 00000008  4800      LDR         R0,=0xE000C014
 0000000A  7800      LDRB        R0,[R0,#0x0]
 0000000C  2140      MOV         R1,#0x40
 0000000E  4208      TST         R0,R1
 00000010  D0FA      BEQ         L_11  ; T=0x00000008
   35:     {
 00000012            ; SCOPE-START
   37:       for(i=0; i<5; i++);
 00000012  2000      MOV         R0,#0x0
 00000014  ---- Variable 'i' assigned to Register 'R0' ----
 00000014          L_15:
 00000014  3001      ADD         R0,#0x1
 00000016  1C01      MOV         R1,R0 ; i
 00000018  2905      CMP         R1,#0x5 ; i
 0000001A  D3FB      BCC         L_15  ; T=0x00000014
 0000001C            ; SCOPE-END
   39: }
 0000001C  4770      BX          R14
 0000001E          ENDP ; 'UART0_SendByte?T'


*** CODE SEGMENT '?PR?UART0_SendStr?T?uart':
   44: void UART0_SendStr(uint8  *str)
 00000000  B500      PUSH        {LR}
 00000002  1C03      MOV         R3,R0 ; str
 00000004  ---- Variable 'str' assigned to Register 'R3' ----
   45: {  while(1)
 00000004          L_22:
   46:   { if(*str=='\0') 
 00000004  1C18      MOV         R0,R3 ; str
 00000006  7800      LDRB        R0,[R0,#0x0] ; str
 00000008  2800      CMP         R0,#0x0
 0000000A  D106      BNE         L_24  ; T=0x0000001A
   47:     {UART0_SendByte('\r');
 0000000C  200D      MOV         R0,#0xD
 0000000E  F7FF      BL          UART0_SendByte?T  ; T=0x0001  (1)
 00000010  FFF7      BL          UART0_SendByte?T  ; T=0x0001  (2)
   48:      UART0_SendByte('\n');
 00000012  200A      MOV         R0,#0xA
 00000014  F7FF      BL          UART0_SendByte?T  ; T=0x0001  (1)
 00000016  FFF4      BL          UART0_SendByte?T  ; T=0x0001  (2)
   49:          break;
 00000018  E005      B           L_21  ; T=0x00000026
   50:       } else
 0000001A          L_24:
   51:   UART0_SendByte(*str++);           //发送数据
 0000001A  1C18      MOV         R0,R3 ; str
 0000001C  3301      ADD         R3,#0x1
 0000001E  7800      LDRB        R0,[R0,#0x0] ; str
 00000020  F7FF      BL          UART0_SendByte?T  ; T=0x0001  (1)
 00000022  FFEE      BL          UART0_SendByte?T  ; T=0x0001  (2)
   52:   }
 00000024  E7EE      B           L_22  ; T=0x00000004
 00000026          L_21:
   53: }
 00000026  BC08      POP         {R3}
 00000028  4718      BX          R3
 0000002A          ENDP ; 'UART0_SendStr?T'

ARM COMPILER V2.53,  uart                                                                  28/12/07  23:55:14  PAGE 5   


*** CODE SEGMENT '?PR?UART0_RecvByte?T?uart':
   55: {  while(!(U0LSR&0x01));
 00000000          L_26:
 00000000  4800      LDR         R0,=0xE000C014
 00000002  7800      LDRB        R0,[R0,#0x0]
 00000004  2101      MOV         R1,#0x1
 00000006  4208      TST         R0,R1
 00000008  D0FA      BEQ         L_26  ; T=0x00000000
   56:    return U0RBR;
 0000000A  4800      LDR         R0,=0xE000C000
 0000000C  7800      LDRB        R0,[R0,#0x0]
   57: }
 0000000E  4770      BX          R14
 00000010          ENDP ; 'UART0_RecvByte?T'


*** CODE SEGMENT '?PR?main?uart':
   62: int main(void)
 00000000  B500      PUSH        {LR}
 00000002  B084      SUB         R13,#0x10
   63: {  uint8   SEND_STRING[]="HELLO WORLD!\n";
 00000004            ; SCOPE-START
 00000004  4800      LDR         R1,=?tpl?0001 ; ?tpl?0001
 00000006  A800      ADD         R0,R13,#0x0
 00000008  220E      MOV         R2,#0xE
 0000000A          L_37:
 0000000A  780B      LDRB        R3,[R1,#0x0]
 0000000C  7003      STRB        R3,[R0,#0x0]
 0000000E  1C49      ADD         R1,R1,#0x1
 00000010  1C40      ADD         R0,R0,#0x1
 00000012  1E52      SUB         R2,R2,#0x1
 00000014  D1F9      BNE         L_37  ; T=0x0000000A
   64:    PINSEL0=0x00000005;              //设置I/O连接到UART0
 00000016  2105      MOV         R1,#0x5
 00000018  4800      LDR         R0,=0xE002C000
 0000001A  6001      STR         R1,[R0,#0x0]
   65:    PINSEL1=0x00000000;
 0000001C  2100      MOV         R1,#0x0
 0000001E  4800      LDR         R0,=0xE002C004
 00000020  6001      STR         R1,[R0,#0x0]
   66:    UART0_Ini();
 00000022  F7FF      BL          UART0_Ini?T  ; T=0x0001  (1)
 00000024  FFED      BL          UART0_Ini?T  ; T=0x0001  (2)
   68:    UART0_SendStr(SEND_STRING);
 00000026  A800      ADD         R0,R13,#0x0
 00000028  F7FF      BL          UART0_SendStr?T  ; T=0x0001  (1)
 0000002A  FFEA      BL          UART0_SendStr?T  ; T=0x0001  (2)
   69:    DelayNS(10);
 0000002C  200A      MOV         R0,#0xA
 0000002E  F7FF      BL          DelayNS?T  ; T=0x0001  (1)
 00000030  FFE7      BL          DelayNS?T  ; T=0x0001  (2)
   71:     while(1)    
 00000032          L_33:
   73:       UART0_SendByte(UART0_RecvByte());
 00000032  F7FF      BL          UART0_RecvByte?T  ; T=0x0001  (1)
 00000034  FFE5      BL          UART0_RecvByte?T  ; T=0x0001  (2)
 00000036  0600      LSL         R0,R0,#0x18 ; UART0_RecvByte?T
 00000038  0E00      LSR         R0,R0,#0x18
 0000003A  F7FF      BL          UART0_SendByte?T  ; T=0x0001  (1)
 0000003C  FFE1      BL          UART0_SendByte?T  ; T=0x0001  (2)
   74:    }
 0000003E  E7F8      B           L_33  ; T=0x00000032
   75:    return(0);
 00000040            ; SCOPE-END
 00000040  B004      ADD         R13,#0x10
 00000042  BC08      POP         {R3}
 00000044  4718      BX          R3
 00000046          ENDP ; 'main'

ARM COMPILER V2.53,  uart                                                                  28/12/07  23:55:14  PAGE 6   



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


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

⌨️ 快捷键说明

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