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

📄 uart.lst

📁 ucos系统
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.50   UART                                                                  04/25/2007 16:01:14 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN .\output\Uart.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE driver\Uart.c LARGE BROWSE DEBUG OBJECTEXTEND PRINT(.\output\Uart.lst) OBJE
                    -CT(.\output\Uart.obj)

line level    source

   1          /************************************************************************************
   2          *  Copyright (c) 2004,西安铭朗电子科技有限责任公司
   3          *            All rights reserved.
   4          *
   5          * 文件名称: uart.c
   6          * 文件标识: none
   7          * 适用器件: c8051f020
   8          * 
   9          * 摘 要: 本文件是uart0,uart1硬件驱动程序;
  10          * 
  11          * 当前版本:1.0
  12          * 作 者:李林利
  13          * 完成日期:2004年11月14日
  14          *
  15          * 历史版本:0.9 
  16          * 原作者 : 李林利
  17          * 完成日期:2004年1月1日
  18          *************************************************************************************/
  19          
  20          /************************************************************************************/
  21          // 引用外部头文件
  22          #include  "..\config\common.h"
  23          #include  "uart.h"
  24          /************************************************************************************/
  25          
  26          
  27          /************************************************************************************
  28          // 常量及全局变量定义
  29          *************************************************************************************/
  30          
  31          
  32          
  33          /************************************************************************************
  34          *  Uart0 功能子程序
  35          *************************************************************************************/
  36          
  37          /***********************************************************************************
  38          * 函数名称:uart0_init;
  39          *
  40          * 函数功能描述:uart0 初始化函数,使用定时器1作为时钟,关闭了发送和接收中断;
  41          *              
  42          * 输入参数:BaudRate: byte, 波特率变量,可选择以下波特率:
  43          *                       BaudRate_1200,BaudRate_2400,BaudRate_4800,BaudRate_4800,BaudRate_9600;
  44          *                               BaudRate_19200,BaudRate_38400,BaudRate_57600,BaudRate_115200;
  45          *
  46          * 返回数据:none;
  47          *
  48          * 注意: 定时器1资源被占用,SYSCLK = 22.1184Mhz;
  49          ************************************************************************************/
  50          void uart0_init(INT32U BaudRate)            // Init Uart0        
  51          {                                    
  52   1           TR1=0;                                              // Close Timer1
  53   1               ET1=0;                                              // Disable Timer1 interrupt 
  54   1               PT1=0;                                                  // Disable Timer1 interrupt Priority
C51 COMPILER V7.50   UART                                                                  04/25/2007 16:01:14 PAGE 2   

  55   1               TMOD&= 0x0f;                        // TMOD: timer 1, mode 2, 8-bit reload 
  56   1               TMOD|= 0x20;                        // TMOD: timer 1, mode 2, 8-bit reload 
  57   1      
  58   1           SCON   = 0x50;                     // SCON0: mode 1, 8-bit UART, enable RX
  59   1           PCON  |= 0x80;                      // SMOD00 = 1
  60   1               
  61   1               
  62   1              if (BaudRate>=9600)
  63   1              {
  64   2                      CKCON |= 0x10;                                // Timer1 uses SYSCLK as time base
  65   2                      TH1    = -(SYSCLK/(BaudRate*16));        // set Timer1 reload value for baudrate
  66   2              }
  67   1              else
  68   1              {
  69   2                      CKCON &= ~0x10;                               // Timer1 uses SYSCLK as time base
  70   2                      TH1    = -(SYSCLK/(BaudRate*16*12));     // set Timer1 reload value for baudrate
  71   2              }
  72   1      
  73   1              ES=0;                                            // Disable Uart0 Interrupt 
  74   1              PS0=0;                                           // Disable Uart0 Interrupt Priority 
  75   1      
  76   1              TI  = 1;                        // Indicate TX0 ready
  77   1          RI  = 0;                        // Indicate RX0 ready 
  78   1      
  79   1          TR1=1;
  80   1       }
  81          
  82          
  83          /***********************************************************************************
  84          * 函数名称:Uart0_ChangeBaudRate;
  85          *
  86          * 函数功能描述:重新设置uart0波特率;
  87          *              
  88          * 输入参数:BaudRate: byte, 波特率变量,可选择以下波特率:
  89          *                       BaudRate_1200,BaudRate_2400,BaudRate_4800,BaudRate_4800,BaudRate_9600;
  90          *                               BaudRate_19200,BaudRate_38400,BaudRate_57600,BaudRate_115200;
  91          *
  92          * 返回数据:none;
  93          *
  94          * 注意: 定时器1资源被占用,SYSCLK = 22.1184Mhz;
  95          ************************************************************************************/
  96          void Uart0_ChangeBaudRate(INT32U BaudRate)
  97          {
  98   1              
  99   1              TR1=0;                                                                            // Close Timer1
 100   1      
 101   1              if (BaudRate>=9600)
 102   1              {
 103   2                      CKCON |= 0x10;                                // Timer1 uses SYSCLK as time base
 104   2                      TH1    = -(SYSCLK/(BaudRate*16));        // set Timer1 reload value for baudrate
 105   2              }
 106   1              else
 107   1              {
 108   2                      CKCON &= ~0x10;                               // Timer1 uses SYSCLK as time base
 109   2                      TH1    = -(SYSCLK/(BaudRate*16*12));     // set Timer1 reload value for baudrate
 110   2              }
 111   1           
 112   1          TR1=1;
 113   1      }
 114          
 115          /***********************************************************************************
 116          * 函数名称:Uart0_Enable;
C51 COMPILER V7.50   UART                                                                  04/25/2007 16:01:14 PAGE 3   

 117          *
 118          * 函数功能描述:uart0使能函数,打开或关闭uart0;
 119          *              
 120          * 输入参数:Flag: bool, uart0使能变量; 
 121          *                       Flag: true,打开uart0;  Flag: false,关闭uart0;
 122          *
 123          * 返回数据:none;
 124          *
 125          * 注意: none;
 126          ************************************************************************************/
 127          void Uart0_Enable(bool Flag)
 128          {
 129   1              if (Flag)
 130   1                      TR1=1;                          // Open Uart0
 131   1              else
 132   1              TR1=0;                          // Close Uart0
 133   1      }
 134          
 135          
 136          /***********************************************************************************
 137          * 函数名称:Uart0_ISR_Enable;
 138          *
 139          * 函数功能描述:uart0中断使能函数;
 140          *              
 141          * 输入参数:Flag: bool, uart0中断使能变量; 
 142          *                       Flag: true,允许uart0中断;  Flag: false,关闭uart0中断;
 143          *
 144          * 返回数据:none;
 145          *
 146          * 注意: none;
 147          ************************************************************************************/
 148          void Uart0_ISR_Enable(bool Flag)
 149          {
 150   1      
 151   1              if (Flag)
 152   1                      ES=1;                           // Enable Uart0 Interrupt 
 153   1              else
 154   1              ES=0;                   // Disable Uart0 Interrupt      
 155   1                      
 156   1      }
 157          
 158          
 159          /***********************************************************************************
 160          * 函数名称:Uart0_ISR;
 161          *
 162          * 函数功能描述:uart0中断函数;
 163          *              
 164          * 输入参数:none;
 165          *
 166          * 返回数据:none;
 167          *
 168          * 注意: 在中断程序内处理尽可能少的事情;
 169          ************************************************************************************/
 170          void Uart0_ISR(void) interrupt 4
 171          {
 172   1                 
 173   1      }
 174          
 175          
 176          /***********************************************************************************
 177          * 函数名称:Uart0_SendByte;
 178          *
C51 COMPILER V7.50   UART                                                                  04/25/2007 16:01:14 PAGE 4   

 179          * 函数功能描述:通过uart0发送一个字节数据;
 180          *              
 181          * 输入参数:value:unsigned char, 要发送的数据变量;
 182          *
 183          * 返回数据:none;
 184          *
 185          * 注意: 发送完数据要清除中断标志;
 186          ************************************************************************************/
 187          void Uart0_SendByte(unsigned char value)
 188          {
 189   1              while(!TI);                     // Wait send 1 byte data finish
 190   1          SBUF=value;                     // Send the data to uart0
 191   1              TI=0;                                            // Clear interrupt flag
 192   1      }
 193          
 194          /***********************************************************************************
 195          * 函数名称:Uart0_SendString;
 196          *
 197          * 函数功能描述:通过uart0发送一个字符串数据;
 198          *              
 199          * 输入参数:pt: unsigned char xdata *, 要发送的字符串数据变量的指针;
 200          *
 201          * 返回数据:none;
 202          *
 203          * 注意: 字符串数据要以零为结束符;
 204          ************************************************************************************/
 205          void Uart0_SendString(unsigned char code *pt)
 206          {
 207   1          while(*pt)
 208   1              Uart0_SendByte(*pt++);
 209   1      }
 210          
 211          
 212          /***********************************************************************************
 213          * 函数名称:Uart0_ReceiveData;
 214          *
 215          * 函数功能描述:通过uart0接收一个字节数据;
 216          *              

⌨️ 快捷键说明

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