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

📄 uart.lst

📁 51读写u盘 uart.c main.c rwudiskdemo.c
💻 LST
字号:
C51 COMPILER V7.06   UART                                                                  07/01/2007 16:03:04 PAGE 1   


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

stmt level    source

   1          #include <reg52.h>
   2          #include "config.h"
   3          
   4          //参数配置
   5          #define MCLK            11059200L       //定义CPU主频(Hz)
   6          //#define BAUD_RATE     9600L           //设置波特率
   7          
   8          
   9          
  10          
  11          void ReceOneChar(char ReceChar);
  12          
  13          void UartSendChar(char c);
  14          
  15          
  16          
  17          uint8 RS323BaudNumber(uint32 bps)
  18          {
  19   1              uint8  RS323Baud;
  20   1              switch(bps)
  21   1              {
  22   2              /*      case 115200:
  23   2                              RS323Baud = 7;
  24   2                              break;
  25   2              */      case 57600:             //6
  26   2                              RS323Baud = 0xFF;
  27   2                              break;
  28   2              /*      case 56000:
  29   2                              RS323Baud = 5;     
  30   2                              break;     */
  31   2                      case 38400:               //4
  32   2                              RS323Baud = 0xfe;
  33   2                              break;           
  34   2                      case 19200:        //3
  35   2                              RS323Baud = 0xfd;
  36   2                              break;           
  37   2                      case 14400:        //2
  38   2                              RS323Baud = 0xfc;
  39   2                              break;
  40   2                      case 9600:        //1
  41   2                              RS323Baud = 0xfa;
  42   2                              break;
  43   2                      case 4800:
  44   2                              RS323Baud = 0xf4;
  45   2                              break;
  46   2                      default:
  47   2                              RS323Baud = 0xfa;
  48   2                              break;  
  49   2              }
  50   1              return   RS323Baud;
  51   1      }
  52          
  53          //********************************************************************************************************
  54          // 函数名称:SendResponse
  55          // 输入参数:buff,字符串指针,类型:unsigned char
C51 COMPILER V7.06   UART                                                                  07/01/2007 16:03:04 PAGE 2   

  56          //           len,字符长度,类型:unsigned short
  57          // 输出参数:无
  58          // 功能描述:发送帧函数为底层字符发送处理函数,ZLG/MODBUS RTU协议栈中使用该函数发送帧数据
  59          //********************************************************************************************************
  60          void SendResponse(uint8 *buff,uint16 len)
  61          {
  62   1              uint16  i;
  63   1              for(i=0;i<len;i++)
  64   1              {
  65   2                      UartSendChar(*(buff+i));
  66   2              }
  67   1      }
  68          
  69                    
  70          
  71          
  72          
  73          
  74          //定义发送中断辅助标志(仅用于发送)
  75          static volatile bit _TI_;
  76          
  77          
  78          //串行口初始化
  79          void UART0Init(uint32 bps)
  80          {
  81   1              char t;
  82   1              EA = 0;
  83   1              RXD = 1;
  84   1              TXD = 1;
  85   1              _TI_ = 1;
  86   1              SCON = 0x50;    //串口方式1
  87   1              PCON |= 0x80;   //波特率加倍
  88   1              t = TMOD;
  89   1              t &= 0x0F;
  90   1              t |= 0x20;
  91   1              TMOD = t;
  92   1      //      TH1 = 256 - ( MCLK / 12 ) / ( 16 * 9600L );
  93   1              TH1 = RS323BaudNumber(bps) ;
  94   1              TL1 = TH1;
  95   1              TR1 = 1;
  96   1              ES = 1;                 //允许串行口中断
  97   1              EA = 1;                 //允许中断
  98   1      }
  99          
 100          
 101          //串行口中断服务程序
 102          static void UartINTSVC() interrupt 4
 103          {
 104   1              char c;
 105   1              if ( RI )       //接收中断
 106   1              {
 107   2                      c = SBUF;
 108   2                      RI = 0;
 109   2                      ReceOneChar(c);
 110   2              }
 111   1              if ( TI )       //发送中断
 112   1              {
 113   2                      TI = 0;
 114   2                      _TI_ = 1;
 115   2              }
 116   1      }
 117          
C51 COMPILER V7.06   UART                                                                  07/01/2007 16:03:04 PAGE 3   

 118          
 119          /*
 120          功能:
 121                  通过串行口发送单个字节
 122          参数:
 123                  c:被发送的字节数据,取值0x00~0xFF
 124          */
 125          void UartSendChar(uint8 c)
 126          {
 127   1              while ( !_TI_ );
 128   1              _TI_ = 0;
 129   1              SBUF = c;
 130   1      }
 131          
 132          
 133          /*********************************************************************************************************
 134          **                            End Of File
 135          ********************************************************************************************************/


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


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

⌨️ 快捷键说明

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