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

📄 485.lst

📁 485多机通信+lcd液晶显示
💻 LST
字号:
C51 COMPILER V7.50   485                                                                   05/04/2009 16:50:31 PAGE 1   


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

line level    source

   1          /*************************************************************************************************
   2          * 文 件 名:485.c
   3          * 功    能:485主机通信模块
   4          * 硬件条件: 1.CPU型号:ATMEL2051
   5          *            2.晶振:11.0592
   6          * 作    者:zwb
   7          * 日    期:2009年04月24号
   8          *************************************************************************************************/
   9          //-----------------------函数声明,变量定义--------------------------------------------------------
  10          #include <reg51.h>
  11          #include <lcd1602.h>
  12          #include <string.h>
  13          #define  unchar  unsigned char
  14          #define COUNT 10          // 定义接收缓冲区大小 
  15          unchar Receive_buffer[COUNT]; //定义接收缓冲区
  16          unchar Memory_buff[COUNT];//定义存储区
  17          unchar  Dis_horse[3];
  18          unchar point,ask=0;    //定义接收数据个数指示变量
  19          unchar FIFO;
  20          unchar COM_dzdata[2]={0x41,0x42};//定义主机发送地址和命令
  21          sbit    L0 = P3^5;
  22          sbit    L1 = P3^7;
  23          //========================================================================================
  24          //函数名称:delay()
  25          //输入函数:无
  26          //输出函数:无
  27          //函数功能:延时子函数
  28          //=======================================================================================
  29          void delay(void)
  30          {
  31   1              unchar i=30;
  32   1              while(i--);
  33   1      }
  34          //--------------------------------------------------------------------------------------------------
  35          // 函数名称: UART_init()串口初始化函数
  36          // 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
  37          //            串口接收中断允许,发送中断禁止
  38          //--------------------------------------------------------------------------------------------------
  39          void UART_init()//初始化串行口和波特率发生器 
  40          {                 
  41   1              SCON =0xd0;          //选择串口工作方式3,打开接收允许
  42   1              TMOD =0x20;          //定时器1工作在方式2
  43   1              PCON = 0x80;         //波特率加倍
  44   1              TH1 =0xf4;           //实现波特率4800(系统时钟11.0592MHZ)
  45   1              TL1 =0xf4;
  46   1              TR1 =1;              //启动定时器T1
  47   1              ET1 =1; 
  48   1              EA = 1;
  49   1              PS = 1;
  50   1              ES=0;
  51   1      }
  52          
  53          //--------------------------------------------------------------------------------------------------
  54          // 函数名称: serial()串口接收中断处理函数
  55          // 函数功能: 接收十位数据到数据缓冲区
C51 COMPILER V7.50   485                                                                   05/04/2009 16:50:31 PAGE 2   

  56          //--------------------------------------------------------------------------------------------------
  57          void SerialInt(void) interrupt 4  
  58          {
  59   1              unchar RECEIVR_buffer;
  60   1      
  61   1              if(TI)TI=0;
  62   1      /*
  63   1              if(RI)                                //处理接收中断
  64   1              {
  65   1              RI=0;                              //清除中断标志位
  66   1              RECEIVR_buffer=SBUF;            //接收串口数据
  67   1              if(point>=0&&point<10)     //判断是否接收够十位数据
  68   1              {
  69   1              Receive_buffer[point++]=RECEIVR_buffer;//不够,把接收到的数据放入接收缓存区
  70   1      
  71   1              else point=0;                   //缓冲区已满,清除缓存区内数据重新接收
  72   1                      
  73   1              }
  74   1      }
  75   1      */            
  76   1              if(RI)                                //处理接收中断
  77   1              {
  78   2              RI=0;                              //清除中断标志位
  79   2              RECEIVR_buffer=SBUF;            //接收串口数据
  80   2              if((ask>=0)&&(ask<3))      //判断是否接收够十位数据
  81   2              {
  82   3              Receive_buffer[ask++]=RECEIVR_buffer;//不够,把接收到的数据放入接收缓存区
  83   3              }
  84   2              else ask=0;     
  85   2              }
  86   1      }
  87          //--------------------------------------------------------------------------------------------------
  88          // 函数名称: CLU_checkdata()计算校验位函数
  89          // 输入变量: 无
  90          // 输出变量: checkdata,包括六位数据的校验和
  91          // 函数功能: 计算校验和
  92          //--------------------------------------------------------------------------------------------------
  93          
  94          unsigned char CLU_checkdata()
  95          {           //计算校验位
  96   1              unchar i,checkdata=0;
  97   1              for(i=2;i<7;i++)
  98   1               {
  99   2                      checkdata=checkdata^Receive_buffer[i];
 100   2               }
 101   1         return(checkdata);
 102   1       }
 103          
 104          //====================================================================
 105          //函数名称:SurveyData(void)
 106          //输入变量:测量数据
 107          //输出变量:无
 108          //函数功能:存放从机发来的测量数据
 109          //====================================================================
 110          
 111          void SurveyData(void)
 112          {  
 113   1              strcpy(Memory_buff,Receive_buffer);//把缓冲区的数据拷贝到指定区域
 114   1      }
 115          //=====================================================================
 116          //函数名称:Senddata(void)
 117          //输入变量:data
C51 COMPILER V7.50   485                                                                   05/04/2009 16:50:31 PAGE 3   

 118          //输出变量:data
 119          //函数功能:发送数据
 120          //=====================================================================
 121          void Senddata(unchar date)
 122          {
 123   1              SBUF=date;
 124   1              while(TI==0);
 125   1              TI=0;
 126   1      }
 127          
 128          //- - - - - - - - - - - - - -  ------------------------------------------------------------------ --------
 129          //函数名称:发送命令
 130          //函数功能:主机发送通信命令
 131          // --------------------------------------------------------------------------------------------------
 132          void send_COM(void)
 133          {
 134   1              TB8=1;
 135   1              Senddata(COM_dzdata[0]);
 136   1              TB8=0;
 137   1              delay();
 138   1              Senddata(COM_dzdata[1]);
 139   1              ES=1;   //允许串行口中断
 140   1              L0=1;
 141   1      }
 142          //--------------------------------------------------------------------------------------------------
 143          // 函数名称: 主函数
 144          // 函数功能: 调度函数,完成通信过程
 145          //--------------------------------------------------------------------------------------------------
 146           void main(void)
 147           {
 148   1              unchar checkdata;
 149   1              L0=0;
 150   1              L1=0;
 151   1              UART_init();       //初始化串口
 152   1              LCD_initial();
 153   1              send_COM();
 154   1              point=0;        
 155   1       do
 156   1       {
 157   2                if(ask==3)       //判断数据是否接收完成
 158   2                {     SurveyData();
 159   3                      L1=1;
 160   3                      LCD_set_position(0x00);
 161   3              LCD_prints(Memory_buff); 
 162   3      
 163   3                      //checkdata=CLU_checkdata();    //调用求校验和函数
 164   3                //    if(checkdata==Receive_buffer[8])        //判断校验和是否正确
 165   3                      {SurveyData();}
 166   3                      
 167   3                      //point=0;
 168   3                      ask=0;
 169   3                }
 170   2        } while(1);
 171   1      }
*** WARNING C280 IN LINE 148 OF 485.C: 'checkdata': unreferenced local variable
 172          
 173          
 174          
 175          
 176          
 177          
 178           
C51 COMPILER V7.50   485                                                                   05/04/2009 16:50:31 PAGE 4   



MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    453    ----
   CONSTANT SIZE    =      6    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     28      11
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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