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

📄 main.lst

📁 UART基本收发
💻 LST
字号:
C51 COMPILER V7.06   MAIN                                                                  09/27/2006 14:03:28 PAGE 1   


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

stmt level    source

   1          /***********************************************************************************
   2          程序名称:串行口收发
   3          硬件接法:RXD和TXD通过RS-232电平转换电路接到电脑的串行口上
   4          运行效果:开机时向电脑发送Hello,然后接收电脑发出的字符并回显
   5          ***********************************************************************************/
   6          
   7          
   8          #include <reg51.h>
   9          
  10          
  11          //设置波特率(取值1200、2400、4800、9600、19200等)
  12          #define BaudRate        9600L
  13          
  14          
  15          /***********************************************************************************
  16          函数:UartInit()
  17          功能:串行口初始化
  18          ***********************************************************************************/
  19          void UartInit()
  20          {
  21   1              SCON = 0x50;    //串口方式1(8位Uart),允许接收
  22   1              PCON |= 0x80;   //波特率加倍
  23   1              TMOD &= 0x0F;   //设置T1为8位自动重装定时器,用于产生波特率
  24   1              TMOD |= 0x20;
  25   1              TH1 = TL1 = 256 - (11059200L / 12) / (16 * BaudRate);   //根据波特率设置T1初值
  26   1              TR1 = 1;                //启动T1
  27   1      }
  28          
  29          
  30          /***********************************************************************************
  31          函数:UartSendChar()
  32          功能:通过串行口发送单个字节
  33          参数:c是被发送的字节数据,取值0x00~0xFF
  34          ***********************************************************************************/
  35          void UartSendChar(char c)
  36          {
  37   1              SBUF = c;               //数据写入SBUF,同时启动硬件发送过程
  38   1              while ( !TI );  //等待发送完毕
  39   1              TI = 0;                 //清除发送标志
  40   1      }
  41          
  42          
  43          /***********************************************************************************
  44          函数:UartSendStr()
  45          功能:通过串行口发送一个字符串
  46          参数:*s是被发送的字符串
  47          ***********************************************************************************/
  48          void UartSendStr(char *s)
  49          {
  50   1              char c;
  51   1              for (;;)
  52   1              {
  53   2                      c = *s++;
  54   2                      if ( c == '\0' ) break;
  55   2                      UartSendChar(c);
C51 COMPILER V7.06   MAIN                                                                  09/27/2006 14:03:28 PAGE 2   

  56   2              }
  57   1      }
  58          
  59          
  60          //主函数
  61          void main()
  62          {
  63   1              unsigned char c;
  64   1              UartInit();
  65   1              UartSendStr("Hello\r\n");
  66   1              for (;;)
  67   1              {
  68   2                      if ( RI )               //如果收到数据
  69   2                      {
  70   3                              RI = 0;         //清除接收标志
  71   3                              c = SBUF;       //读取收到的数据
  72   3                              UartSendChar(c);        //回送收到的数据
  73   3                      }
  74   2              }
  75   1      }
  76          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     89    ----
   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       3
   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 + -