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

📄 uart.lst

📁 基于keil 3环境下的lpc2132的pwm试验
💻 LST
📖 第 1 页 / 共 2 页
字号:
ARM COMPILER V2.53,  UART                                                                  29/01/08  11:33:05  PAGE 1   


ARM COMPILER V2.53, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\UART.obj
COMPILER INVOKED BY: C:\Keil\ARM\BIN\CA.exe ..\Source\UART.c THUMB BROWSE DEBUG PRINT(.\UART.LST) TABS(4) OBJECT(.\UART.
                    -obj) 

stmt  level    source

    1          /****************************************Copyright (c)**************************************************
    2          **
    3          UART0通讯实验,中断方式,使用FIFO。
    4          **
    5          ********************************************************************************************************/
    6          
    7          #include  <LPC213x.h> 
    8          #include "config.h"
    9          
   10          /********************************************************************************************************
             -**
   11          ** 函数名称 :UART0_Init()
   12          ** 函数功能 :串口初始化,设置工作模式和波特率。
   13          ** 入口参数 :baud  波特率
   14          **            set   模式设置(UARTMODE数据结构)
   15          ** 出口参数 :1-初始化成功,  0-初始化失败
   16          *********************************************************************************************************
             -*/
   17          int8 UART0_Init (uint32 baud,uint8 datab,uint8 stopb,uint8 parity)
   18          {
   19   1          uint32 bak;
   20   1          
   21   1          PINSEL0 = (PINSEL0&(~0x0F))|0x05;   // 设置I/O连接到UART0   
   22   1          
   23   1          /* 参数过滤 */
   24   1          if ((baud ==0 ) || (baud > 115200)) return (0);
   25   1          if ((datab <5) || (datab > 8))  return (0);
   26   1          if ((stopb == 0) || (stopb > 2))    return (0);
   27   1          if (parity > 4) return (0);
   28   1          
   29   1          /* 设置串口波特率 */
   30   1          U0LCR = 0x80;                       // DLAB = 1 
   31   1          bak   = (Fpclk >> 4) / baud;
   32   1          U0DLM = bak >> 8;
   33   1          U0DLL = bak & 0xFF;
   34   1          
   35   1          /* 设置串口模式 */
   36   1          bak   = datab - 5;              // 设置字长
   37   1          if (stopb == 2) bak |= 0x04;    // 判断是否为2位停止位
   38   1          
   39   1          if (parity != 0)
   40   1          {
   41   2              parity = parity - 1;
   42   2              bak |= 0x08;
   43   2          }
   44   1          bak |= parity << 4;             // 设置奇偶校验
   45   1          
   46   1          U0LCR = bak;
   47   1          
   48   1          return (1);
   49   1      }
   50          
   51          
   52          /********************************************************************************************************
             -**
   53          ** 函数名称 :UART0_GetByte()
   54          ** 函数功能 :从串口接收1字节数据,使用查询方式接收。
   55          ** 入口参数 :无
ARM COMPILER V2.53,  UART                                                                  29/01/08  11:33:05  PAGE 2   

   56          ** 出口参数 :接收到的数据
   57          *********************************************************************************************************
             -*/
   58          uint8 UART0_GetByte (void)
   59          {
   60   1          uint8 rcv_dat;
   61   1          
   62   1          while ((U0LSR & 0x01) == 0);
   63   1          rcv_dat = U0RBR;
   64   1          
   65   1          return (rcv_dat);   
   66   1      }
   67          
   68          /********************************************************************************************************
             -**
   69          ** 函数名称 :UART0_GetStr()
   70          ** 函数功能 :从串口接收
   71          ** 入口参数 :  s   指向接收数据数组的指针
   72          **              n   接收的个数
   73          ** 出口参数 :  无
   74          *********************************************************************************************************
             -*/
   75          void UART0_GetStr (uint8 *s, uint32 n)
   76          {
   77   1          for ( ; n>0; n--)
   78   1          {
   79   2              *s++ = UART0_GetByte();
   80   2          }
   81   1      }
   82          /*****************************************************************
   83          接收字符串,不定数
   84          *****************************************************************/
   85          void UART0_Get(uint8 *s)
   86              {while(1)
   87   1             { if (*s == '\0')    break;
   88   2               *s++= UART0_GetByte();
   89   2             }
   90   1          } 
   91          /********************************************************************************************************
             -**
   92          ** 函数名称 :UART0_SendByte()
   93          ** 函数功能 :向串口发送字节数据,并等待发送完毕,查询方式。
   94          ** 入口参数 :dat   要发送的数据
   95          ** 出口参数 :无
   96          *********************************************************************************************************
             -*/
   97          void UART0_SendByte (uint8 dat)
   98          {
   99   1          U0THR = dat;
  100   1          while ((U0LSR & 0x40) == 0);        // 等待数据发送完毕
  101   1      }
  102          
  103          /********************************************************************************************************
             -**
  104          ** 函数名称 :UART0_SendStr()
  105          ** 函数功能 :向串口发送一字符串
  106          ** 入口参数 :str   要发送的字符串的指针
  107          ** 出口参数 :无
  108          *********************************************************************************************************
             -*/
  109          void UART0_SendStr (uint8 const *str)
  110          {
  111   1          while (1)
  112   1          {
  113   2              if (*str == '\0')   break;      // 遇到结束符,退出
  114   2              UART0_SendByte(*str++);         // 发送数据
ARM COMPILER V2.53,  UART                                                                  29/01/08  11:33:05  PAGE 3   

  115   2          }
  116   1      }
  117          
  118          
  119          
  120          /********************************************************************************************************
             -*
  121          **                            End Of File
  122          ********************************************************************************************************/
ARM COMPILER V2.53,  UART                                                                  29/01/08  11:33:05  PAGE 4   

ASSEMBLY LISTING OF GENERATED OBJECT CODE



*** EXTERNALS:
 EXTERN CODE16 (?C?UDIV?T)



*** PUBLICS:
 PUBLIC         UART0_Init?T
 PUBLIC         UART0_GetByte?T
 PUBLIC         UART0_GetStr?T
 PUBLIC         UART0_Get?T
 PUBLIC         UART0_SendByte?T
 PUBLIC         UART0_SendStr?T



*** CODE SEGMENT '?PR?UART0_Init?T?UART':
   17: int8 UART0_Init (uint32 baud,uint8 datab,uint8 stopb,uint8 parity)
 00000000  B530      PUSH        {R4-R5,LR}
 00000002  ---- Variable 'parity' assigned to Register 'R3' ----
 00000002  ---- Variable 'stopb' assigned to Register 'R2' ----
 00000002  1C0C      MOV         R4,R1 ; datab
 00000004  ---- Variable 'datab' assigned to Register 'R4' ----
 00000004  1C05      MOV         R5,R0 ; baud
 00000006  ---- Variable 'baud' assigned to Register 'R5' ----
   18: {
 00000006            ; SCOPE-START
   21:     PINSEL0 = (PINSEL0&(~0x0F))|0x05;   // 设置I/O连接到UART0   
 00000006  4800      LDR         R0,=0xE002C000
 00000008  6801      LDR         R1,[R0,#0x0]
 0000000A  200F      MOV         R0,#0xF
 0000000C  4381      BIC         R1,R0
 0000000E  2005      MOV         R0,#0x5
 00000010  4301      ORR         R1,R0
 00000012  4800      LDR         R0,=0xE002C000
 00000014  6001      STR         R1,[R0,#0x0]
   24:     if ((baud ==0 ) || (baud > 115200)) return (0);
 00000016  1C28      MOV         R0,R5 ; baud
 00000018  2800      CMP         R0,#0x0 ; baud
 0000001A  D003      BEQ         L_2  ; T=0x00000024
 0000001C  1C28      MOV         R0,R5 ; baud
 0000001E  4800      LDR         R1,=0x1C200
 00000020  4288      CMP         R0,R1 ; baud
 00000022  D901      BLS         L_1  ; T=0x00000028
 00000024          L_2:
 00000024  2000      MOV         R0,#0x0
 00000026  E056      B           L_3  ; T=0x000000D6
 00000028          L_1:
   25:     if ((datab <5) || (datab > 8))  return (0);
 00000028  1C20      MOV         R0,R4 ; datab
 0000002A  0600      LSL         R0,R0,#0x18 ; datab
 0000002C  0E00      LSR         R0,R0,#0x18
 0000002E  2805      CMP         R0,#0x5
 00000030  DB04      BLT         L_5  ; T=0x0000003C
 00000032  1C20      MOV         R0,R4 ; datab
 00000034  0600      LSL         R0,R0,#0x18 ; datab
 00000036  0E00      LSR         R0,R0,#0x18
 00000038  2808      CMP         R0,#0x8
 0000003A  DD01      BLE         L_4  ; T=0x00000040
 0000003C          L_5:
 0000003C  2000      MOV         R0,#0x0
 0000003E  E04A      B           L_3  ; T=0x000000D6
 00000040          L_4:
   26:     if ((stopb == 0) || (stopb > 2))    return (0);
 00000040  1C10      MOV         R0,R2 ; stopb
 00000042  0600      LSL         R0,R0,#0x18 ; stopb
 00000044  0E00      LSR         R0,R0,#0x18
 00000046  2800      CMP         R0,#0x0
ARM COMPILER V2.53,  UART                                                                  29/01/08  11:33:05  PAGE 5   

 00000048  D004      BEQ         L_7  ; T=0x00000054
 0000004A  1C10      MOV         R0,R2 ; stopb
 0000004C  0600      LSL         R0,R0,#0x18 ; stopb
 0000004E  0E00      LSR         R0,R0,#0x18
 00000050  2802      CMP         R0,#0x2
 00000052  DD01      BLE         L_6  ; T=0x00000058
 00000054          L_7:
 00000054  2000      MOV         R0,#0x0
 00000056  E03E      B           L_3  ; T=0x000000D6
 00000058          L_6:
   27:     if (parity > 4) return (0);

⌨️ 快捷键说明

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