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

📄 1.lst

📁 本文件是单片机的串口通信(接收显示并发送)含有C程序。
💻 LST
字号:
C51 COMPILER V7.09   1                                                                     10/15/2008 14:42:40 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE 1
OBJECT MODULE PLACED IN 1.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE 1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************/
   2          /*
   3          *文件名:1.c
   4          *功能描述:单片机系统复位后等待数据的接收,单片机将接收到的数据在液晶上显示并从串口发送出去
   5          *参数:波特率为19200,8位数据位,无校验位
   6          *返回值:无
   7          *作者:黄英杰
   8          *单位:吉首大学
   9          *时间:2008.9.27
  10          */
  11          /****************************************************/
  12          #include"reg52.h"
  13          #include"absacc.h"
  14          
  15          
  16          #define A_LCDCODE XBYTE[0x4000]//定义给液晶写命令的绝对地址变量
  17          #define A_LCDDATA XBYTE[0x4001]//定义给液晶写数据的绝对地址变量
  18          #define Data_Len 8//接收数据长度
  19          
  20          
  21          void Send_Data(void);//串口发送数据函数
  22          void delay(unsigned int t);
  23          void init_lcd(void);
  24          void lcd_code(unsigned char lcdcode);
  25          void lcd_data(unsigned char lcddata);
  26          void display_char();
  27          
  28          
  29          unsigned char idata Buffer[200];
  30          unsigned char Count=0;//建立一数组存放接收到的数据,Count存储数据个数
  31          bit Receive_flag=0;//接收完成标志位
  32          
  33          
  34          void main(void)
  35          {       
  36   1              init_lcd();//初始化液晶
  37   1                      T2CON=0x30;//T2作为波特率发生器
  38   1                      RCAP2H=0xff;
  39   1              RCAP2L=0xec;//波特率为19200
  40   1                  ES=1;
  41   1                      EA=1;//开总中断,允许串口中断
  42   1                      SCON=0x50;// 串口工作方式为工作方式1,允许接收
  43   1                      PCON=0x00;
  44   1              TI=0;
  45   1                      RI=0;
  46   1                      TR2=1;
  47   1                      while(1)
  48   1                      {
  49   2                            if(Receive_flag==1)
  50   2                                {
  51   3                                              Receive_flag=0;
  52   3                          lcd_code(0x01);//清屏指令
  53   3                                              lcd_code(0x80);
  54   3                          display_char();//将接收到的数据在液晶上显示
  55   3                          Send_Data();//将接收到的数据发送出去
C51 COMPILER V7.09   1                                                                     10/15/2008 14:42:40 PAGE 2   

  56   3                                }
  57   2                      }
  58   1      }
  59          
  60          
  61          /*************************串口接收中断函数***********************/
  62          void Receive_Data() interrupt 4 using 1
  63          {
  64   1           unsigned char num;
  65   1           if(RI)//判断是接收还是发送引起的中断
  66   1           {
  67   2              RI=0;
  68   2                      num=SBUF;
  69   2              Buffer[Count]=num;//将接收到的数据保存到数据缓冲区
  70   2                      Count++;
  71   2                      if(Count==Data_Len)
  72   2                      {
  73   3                              Receive_flag=1;//数据接收完成,置位标志位
  74   3                      }
  75   2           }
  76   1      }
  77          
  78          
  79          /*************************串口发送数据函数***********************/
  80          void Send_Data(void)
  81          {
  82   1           unsigned char j;
  83   1               for(j=0;j<Count;j++)
  84   1               {
  85   2                   SBUF=Buffer[j];//发送数据
  86   2                   while(!TI);//等待发送,若未发送完则等待
  87   2                   TI=0;
  88   2               }
  89   1               Count=0;
  90   1      }
  91          
  92          
  93          /*********************延时函数********************/
  94          void delay(unsigned int t)
  95          {
  96   1              unsigned int i;
  97   1              for(i=0;i<=t;i++);
  98   1      }
  99          
 100          
 101          
 102          /************向液晶写一个命令的函数***************/
 103          void lcd_code(unsigned char lcdcode)
 104          { 
 105   1                 delay(3);
 106   1                 A_LCDCODE=lcdcode;
 107   1                 delay(200);
 108   1      } 
 109          
 110          
 111          
 112          /**************向液晶写一个数据的函数*************/
 113          void lcd_data(unsigned char lcddata)
 114          {
 115   1                 delay(3);
 116   1                 A_LCDDATA=lcddata;
 117   1                 delay(60);
C51 COMPILER V7.09   1                                                                     10/15/2008 14:42:40 PAGE 3   

 118   1      }
 119          
 120          
 121          
 122          /******************初始化液晶屏函数**************/
 123          void  init_lcd(void)
 124          {
 125   1                  delay(1000);
 126   1              lcd_code(0x38);//功能设定,5*7点阵,8位数据接口
 127   1              delay(1000);
 128   1              lcd_code(0x0c);//显示画面设置,开显示
 129   1              delay(1000);
 130   1              lcd_code(0x01);//清屏指令
 131   1              delay(1000);
 132   1              lcd_code(0x06);//当读或写一个字符后地址指针加1,且光标加1
 133   1              delay(1000);
 134   1      }
 135          
 136          
 137          
 138          /***************显示接收字符数据的函数*******************/
 139          void display_char()
 140          {
 141   1          unsigned char i=0;
 142   1              while(i<Count)
 143   1              {
 144   2                      lcd_data(Buffer[i]);
 145   2                      i++;
 146   2              }
 147   1      }
 148          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    227    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =    200    ----
   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 + -