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

📄 serial.lst

📁 完整的wav文件播放程序采用lpc2148芯片
💻 LST
字号:
ARM COMPILER V2.50a,  Serial                                                               23/09/08  18:04:45  PAGE 1   


ARM COMPILER V2.50a, COMPILATION OF MODULE Serial
OBJECT MODULE PLACED IN .\Obj\Serial.obj
COMPILER INVOKED BY: d:\Keil\ARM\BIN\CA.exe Serial.c ARM OPTIMIZE(7,SPEED) BROWSE DEBUG PRINT(.\FLASH\SERIAL.LST) TABS(4
                    -) OBJECT(.\Obj\Serial.obj) 

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          /*  SERIAL.C:  Low Level Serial Routines                                      */
    7          /*                                                                            */
    8          /******************************************************************************/
    9          
   10          #include <LPC21xx.H>                     /* LPC21xx definitions               */
   11          
   12          #define CR     0x0D
   13          
   14          
   15          void init_serial (void)  {               /* Initialize Serial Interface       */
   16   1      
   17   1          PINSEL0 &= ~(0x0F << 0);
   18   1          PINSEL0 |= (0x05 << 0);// 设置I/O连接到UART0 P0.0 P0.1
   19   1      
   20   1      
   21   1      //  PINSEL0 = 0x00050000;                  /* Enable RxD1 and TxD1              */
   22   1        U0LCR = 0x83;                          /* 8 bits, no Parity, 1 Stop bit     */
   23   1        U0DLL = 0x08;                          /* 115200 Baud Rate @ 15MHz VPB Clock  */
   24   1        U0LCR = 0x03;                          /* DLAB = 0                          */
   25   1      }
   26          
   27          
   28          int putchar1 (int ch)  {                  /* Write character to Serial Port    */
   29   1      
   30   1        if (ch == '\n')  {
   31   2          while (!(U0LSR & 0x20));
   32   2          U0THR = CR;                          /* output CR */
   33   2        }
   34   1        while (!(U0LSR & 0x20));
   35   1        return (U0THR = ch);
   36   1      }
   37          
   38          
   39          int getkey (void)  {                    /* Read character from Serial Port   */
   40   1      
   41   1        if (U0LSR & 0x01)
   42   1        {
   43   2          return (U0RBR);
   44   2        } else {
   45   2          return 0;
   46   2        }
   47   1      }
ARM COMPILER V2.50a,  Serial                                                               23/09/08  18:04:45  PAGE 2   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** PUBLICS:
 PUBLIC         init_serial?A
 PUBLIC         putchar1?A
 PUBLIC         getkey?A



*** CODE SEGMENT '?PR?init_serial?A?Serial':
   17:     PINSEL0 &= ~(0x0F << 0);
 00000000  E5100000  LDR         R0,=0xE002C000
 00000004  E5901000  LDR         R1,[R0,#0x0]
 00000008  E3C1100F  BIC         R1,R1,#0x000F
 0000000C  E5801000  STR         R1,[R0,#0x0]
   18:     PINSEL0 |= (0x05 << 0);// 设置I/O连接到UART0 P0.0 P0.1
 00000010  E5100000  LDR         R0,=0xE002C000
 00000014  E5901000  LDR         R1,[R0,#0x0]
 00000018  E3811005  ORR         R1,R1,#0x0005
 0000001C  E5801000  STR         R1,[R0,#0x0]
   22:   U0LCR = 0x83;                          /* 8 bits, no Parity, 1 Stop bit     */
 00000020  E3A01083  MOV         R1,#0x83
 00000024  E5100000  LDR         R0,=0xE000C00C
 00000028  E5C01000  STRB        R1,[R0,#0x0]
   23:   U0DLL = 0x08;                          /* 115200 Baud Rate @ 15MHz VPB Clock  */
 0000002C  E3A01008  MOV         R1,#0x8
 00000030  E5100000  LDR         R0,=0xE000C000
 00000034  E5C01000  STRB        R1,[R0,#0x0]
   24:   U0LCR = 0x03;                          /* DLAB = 0                          */
 00000038  E3A01003  MOV         R1,#0x3
 0000003C  E5100000  LDR         R0,=0xE000C00C
 00000040  E5C01000  STRB        R1,[R0,#0x0]
   25: }
 00000044  E12FFF1E  BX          R14
 00000048          ENDP ; 'init_serial?A'


*** CODE SEGMENT '?PR?putchar1?A?Serial':
   28: int putchar1 (int ch)  {                  /* Write character to Serial Port    */
 00000000  E1A01000  MOV         R1,R0 ; ch
 00000004  ---- Variable 'ch' assigned to Register 'R1' ----
   30:   if (ch == '\n')  {
 00000004  E1A00001  MOV         R0,R1 ; ch
 00000008  E350000A  CMP         R0,#0x000A ; ch
 0000000C  1A000006  BNE         L_9  ; Targ=0x2C
   31:     while (!(U0LSR & 0x20));
 00000010          L_2:
 00000010  E5100000  LDR         R0,=0xE000C014
 00000014  E5D00000  LDRB        R0,[R0,#0x0]
 00000018  E3100020  TST         R0,#0x0020
 0000001C  0AFFFFFB  BEQ         L_2  ; Targ=0x10
   32:     U0THR = CR;                          /* output CR */
 00000020  E3A0200D  MOV         R2,#0xD
 00000024  E5100000  LDR         R0,=0xE000C000
 00000028  E5C02000  STRB        R2,[R0,#0x0]
   34:   while (!(U0LSR & 0x20));
 0000002C          L_9:
 0000002C          L_6:
 0000002C  E5100000  LDR         R0,=0xE000C014
 00000030  E5D00000  LDRB        R0,[R0,#0x0]
 00000034  E3100020  TST         R0,#0x0020
 00000038  0AFFFFFB  BEQ         L_6  ; Targ=0x2C
   35:   return (U0THR = ch);
 0000003C  E1A00001  MOV         R0,R1 ; ch
 00000040  E1A00C00  MOV         R0,R0,LSL #24 ; ch
 00000044  E1A00C20  MOV         R0,R0,LSR #24
 00000048  E5101000  LDR         R1,=0xE000C000
 0000004C  E5C10000  STRB        R0,[R1,#0x0]
 00000050  E1A00C00  MOV         R0,R0,LSL #24
ARM COMPILER V2.50a,  Serial                                                               23/09/08  18:04:45  PAGE 3   

 00000054  E1A00C20  MOV         R0,R0,LSR #24
   36: }
 00000058  E12FFF1E  BX          R14
 0000005C          ENDP ; 'putchar1?A'


*** CODE SEGMENT '?PR?getkey?A?Serial':
   41:   if (U0LSR & 0x01)
 00000000  E5100000  LDR         R0,=0xE000C014
 00000004  E5D00000  LDRB        R0,[R0,#0x0]
 00000008  E3100001  TST         R0,#0x0001
 0000000C  0A000002  BEQ         L_11  ; Targ=0x1C
   43:     return (U0RBR);
 00000010  E5100000  LDR         R0,=0xE000C000
 00000014  E5D00000  LDRB        R0,[R0,#0x0]
 00000018  EA000000  B           L_12  ; Targ=0x20
   44:   } else {
 0000001C          L_11:
   45:     return 0;
 0000001C  E3A00000  MOV         R0,#0x0
   47: }
 00000020          L_12:
 00000020  E12FFF1E  BX          R14
 00000024          ENDP ; 'getkey?A'



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 + -