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

📄 uart.lst

📁 基于c8051f040一个多机通讯程序,开发环境keil
💻 LST
字号:
C51 COMPILER V7.50   UART                                                                  04/25/2008 10:51:19 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE UART
OBJECT MODULE PLACED IN Uart.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Uart.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /************************************************************************************
   2          *  Copyright (c) 2004,西安铭朗电子科技有限责任公司
   3          *            All rights reserved.
   4          *
   5          * 文件名称: Uart.c
   6          * 文件标识: none
   7          * 适用器件: C8051F040
   8          * 
   9          * 摘 要: 本文件是串口0、1子程序;使用外部22.1184MHz晶振. Uart驱动程序,包括初始化、
  10          *         波特率设置,单字节发送接收、字符串发送接受等。将跳线器JP7、短接。
  11          *         使用外部22.1184MHz晶振。
  12          * 
  13          * 当前版本:1.2
  14          * 作 者:张宁强
  15          * 完成日期:2006年1月10日
  16          *
  17          * 历史版本:1.0 
  18          * 原作者 : 李林利 卢阳
  19          * 完成日期:2005年6月1日
  20          *************************************************************************************/
  21          
  22          /************************************************************************************/
  23          // 引用外部头文件
  24          
  25          #include "c8051F040.h"
  26          #include "intrins.h"
  27          #include "const.h"
  28          #include "uart.h"
  29          
  30          /************************************************************************************/
  31          
  32          /************************************************************************************
  33          // 常量及全局变量定义
  34          *************************************************************************************/
  35          unsigned char data utxok=1;
  36          
  37          /************************************************************************************
  38          *  Uart子程序
  39          *************************************************************************************/
  40          
  41          /***********************************************************************************
  42          * 函数名称:Uart1_Init;
  43          *
  44          * 函数功能描述:Uart1初始化;
  45          *              
  46          * 输入参数:unsigned char类型,发送数据波特率;
  47          *
  48          * 返回数据:none;
  49          *
  50          * 注意:    none;
  51          ************************************************************************************/
  52          void Uart1_Init(unsigned long BaudRate)    //Uart1初始化                             
  53          {   
  54   1              char data SFRPAGE_SAVE = SFRPAGE;     // Save Current SFR page
  55   1              SFRPAGE = SFR_PAGE_0;           // set SFR page 0
C51 COMPILER V7.50   UART                                                                  04/25/2008 10:51:19 PAGE 2   

  56   1      
  57   1              TR1=0;                              // 关闭定时器Timer1
  58   1              ET1=0;                              // 关闭定时器Timer1中断 
  59   1              PT1=0;                              // 关闭定时器Timer1中断优先权
  60   1              TMOD&= 0x0f;                        // TMOD: 定时器1, 模式2, 8位重载 
  61   1              TMOD|= 0x20;                        // TMOD: 定时器1, 模式2, 8位重载 
  62   1       
  63   1          if (BaudRate>=57600)
  64   1              {
  65   2                      CKCON |= 0x10;                       // 定时器Timer1使用系统时钟作为时间基准
  66   2                      TH1    = 256-(SYSCLK/(BaudRate*2));     // 设置定时器Timer1重载值
  67   2              }
  68   1              else if ((BaudRate<57600)&&(BaudRate>=9600))
  69   1              {
  70   2                      CKCON = 0x00;           // 定时器Timer1使用系统时钟作为时间/12基准
  71   2                      TH1    = 256-(SYSCLK/(BaudRate*2*12));     // 设置定时器Timer1重载值
  72   2              }
  73   1              else
  74   1              {
  75   2      
  76   2                      CKCON = 0x02;              // 定时器Timer1使用系统时钟作为时间/48基准
  77   2                      TH1    = 256-(SYSCLK/(BaudRate*2*48));     // 设置定时器Timer1重载值
  78   2              }
  79   1         
  80   1              //ES0=0;                                         // 打开串口Uart1中断
  81   1              EIE2 |= 0x40;
  82   1              //PS=0;                                          // 串口Uart1中断优先权设为"低"
  83   1              EIP2 &= 0xBF;
  84   1              utxok=1;                                                //can send bytes
  85   1          TR1=1;                                                       // 打开串口Uart1
  86   1                      
  87   1              
  88   1              SFRPAGE = SFR_PAGE_1;// set SFR page 1
  89   1              SCON1=0x56;               // SCON1:模式1, 8字节UART, 打开RX, TI1=1,RI1=0
  90   1              SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
  91   1      }
  92          
  93          /***********************************************************************************
  94          * 函数名称:Uart1_Enable;
  95          *
  96          * 函数功能描述:Uart0初始化;
  97          *              
  98          * 输入参数:bool类型,打开输入1;关闭输入0;
  99          *
 100          * 返回数据:none;
 101          *
 102          * 注意:    none;
 103          ************************************************************************************/
 104          /*
 105          void Uart1_Enable(bool Flag)
 106          {
 107                  char data SFRPAGE_SAVE = SFRPAGE;     // Save Current SFR page
 108                  SFRPAGE = SFR_PAGE_2;      
 109          
 110                  if (Flag)
 111                          TMR4CN|=0x04;      // 打开Uart1
 112                  else
 113                  TMR4CN&=~0x04;     // 关闭Uart1
 114          
 115                  SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 116          }
 117          */
C51 COMPILER V7.50   UART                                                                  04/25/2008 10:51:19 PAGE 3   

 118          /***********************************************************************************
 119          * 函数名称: Uart1_SendString;
 120          *
 121          * 函数功能描述:Uart0初始化;
 122          *              
 123          * 输入参数:unsigned char类型指针,发送数据;
 124          *
 125          * 返回数据:none;
 126          *
 127          * 注意:    none;
 128          ************************************************************************************/
 129          
 130          void Uart1_SendString(unsigned char *pt)
 131          {
 132   1              while(*pt)
 133   1              {
 134   2                      Uart1_SendByte(*pt++);
 135   2              }
 136   1      }
 137          
 138          /***********************************************************************************
 139          * 函数名称:Uart1_SendByte;
 140          *
 141          * 函数功能描述:Uart0初始化;
 142          *              
 143          * 输入参数:unsigned char类型指针,发送数据;
 144          *
 145          * 返回数据:none;
 146          *
 147          * 注意:    none;
 148          ************************************************************************************/
 149          
 150          void Uart1_SendByte(unsigned char value)
 151          {
 152   1              char data SFRPAGE_SAVE = SFRPAGE;     // Save Current SFR page
 153   1              SFRPAGE = SFR_PAGE_1;      
 154   1      /*
 155   1              while(utxok!=1);                                // 等待发送1个字节数据完成
 156   1              SBUF1=value;                            // 发送数据到uart1
 157   1              utxok=0;
 158   1           //SCON1&=~0x02;              // 清除中断标志
 159   1      */
 160   1              while(!(SCON1&0x02));
 161   1              SBUF1 = value;
 162   1              SCON1 &= ~0x02;
 163   1              SFRPAGE = SFRPAGE_SAVE;          // Restore SFR page
 164   1      }
 165          
 166          /***********************************************************************************
 167          * 函数名称:Uart1_ReceiveData;
 168          *
 169          * 函数功能描述:Uart0初始化;
 170          *              
 171          * 输入参数:none;
 172          *
 173          * 返回数据:unsigned char类型,接收数据;
 174          *
 175          * 注意:    none;
 176          ************************************************************************************/
 177          
 178          unsigned char Uart1_ReceiveData(void)
 179          {
C51 COMPILER V7.50   UART                                                                  04/25/2008 10:51:19 PAGE 4   

 180   1              char data SFRPAGE_SAVE = SFRPAGE;     // Save Current SFR page
 181   1              SFRPAGE = SFR_PAGE_1;      
 182   1              while(!(SCON1&0x01));
 183   1              SCON1 &= ~0x01;
 184   1              return SBUF1;
 185   1      }
 186          
 187          void Uart1_ReceiveLong(char command[])
 188          {
 189   1              unsigned int i;
 190   1              char data SFRPAGE_SAVE = SFRPAGE;     // Save Current SFR page
 191   1              SFRPAGE = SFR_PAGE_1;      
 192   1              for (i=0;i<3;i++)
 193   1              {
 194   2                      command[i] = Uart1_ReceiveData();//当收到3个字节命令的时候,command收满了跳到主函数main()
 195   2                      
 196   2              }
 197   1      
 198   1      }
 199          /***********************************************************************************/
 200          // 文件结束
 201          /***********************************************************************************/
 202          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    276    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1      13
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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