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

📄 process.lst

📁 湖北水文信息系统水位雨量采集器的C51源代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 1   


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

line level    source

   1          /*****--------------文件信息-----------------------------------------------------
   2          **文   件   名: process.C
   3          **最后修改日期: 2006-4-13
   4          **描        述: 对串口接收的数据进行处理
   5          **设计者      : jxf
   6          ***********************************************************************************/
   7          #include "process.h"
   8          #include "proccomm.h"
   9          #include "recframe.h"
  10          #include "scan.h"
  11          #include "string.h"
  12          #include "time.h"
  13          #include "cond.h"
  14          
  15          uchar  i2c_addr=0x00;   
  16          
  17          /*******************************************************************
  18                               字符转二进制函数               
  19          函数原型: uint CHAR_TO_INT(uchar tmp[],uchar len)
  20          功  能:       
  21            
  22          ********************************************************************/
  23          uint CHAR_TO_INT(uchar tmp[],uchar len)
  24          {
  25   1              uint xdata hex=0;
  26   1              uchar i;
  27   1      
  28   1              for(i=0;i<len;i++)
  29   1        {
  30   2                      hex=(tmp[i]&0x0f)+hex*10;
  31   2        }
  32   1        return hex;
  33   1      }
  34          
  35          /*******************************************************************
  36                               字符转二进制函数               
  37          函数原型: ulong CHAR_TO_LONG(uchar tmp[],uchar len)
  38          功  能:       
  39            
  40          ********************************************************************/
  41          ulong CHAR_TO_LONG(uchar tmp[],uchar len)
  42          {
  43   1              ulong xdata hex=0;
  44   1              uchar i;
  45   1      
  46   1              for(i=0;i<len;i++)
  47   1        {
  48   2                      hex=(tmp[i]&0x0f)+hex*10;
  49   2        }
  50   1        return hex;
  51   1      }
  52          
  53          
  54          /*******************************************************************
  55                               改变发送状态             
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 2   

  56          函数原型: void Rec_to_Send(void)
  57          功  能:       
  58            
  59          ********************************************************************/
  60          void Rec_to_Send(void)
  61          {
  62   1                      r_end=0;
  63   1                      s_end=0;
  64   1                      p_end=1;                                        
  65   1                      con_485=S_CON;
  66   1                      TI=1;
  67   1                      send_lamp=!send_lamp;   
  68   1      }
  69          
  70          
  71          /*******************************************************************
  72                               采集器应答集中器函数设置               
  73          函数原型: void  cl_ack_ct(unsigned char p,unsigned char t,unsigned char ack)
  74          功  能:       
  75            
  76          ********************************************************************/
  77          void  cl_ack_ct(unsigned char p,unsigned char t,unsigned char ack)
  78          {
  79   1              unsigned char i;
  80   1        
  81   1        SenBuf[3]=t; 
  82   1        
  83   1        if(ack>0)
  84   1                              SenBuf[5]=(p|0x80); 
  85   1              else
  86   1                              SenBuf[5]=(p|0xc0);  
  87   1                               
  88   1              SenBuf[6]=0;
  89   1              
  90   1              for(i=0;i<SenBuf[6]+7;i++)
  91   1                              cs+=SenBuf[i];
  92   1            
  93   1        SenBuf[SenBuf[6]+7]=cs;
  94   1              SenBuf[SenBuf[6]+8]=FRAME_END_CHAR;
  95   1              Senlen=SenBuf[6]+9;     
  96   1      }
  97          
  98          
  99          /*******************************************************************
 100                               雨量数据函数               
 101          函数原型: char RainFall_Process(uchar cntr,ulong rain, uchar len)
 102          功  能:       
 103            
 104          ********************************************************************/
 105          char RainFall_Process(uchar cntr,ulong rain, uchar len)
 106          {
 107   1        uchar i;
 108   1              ulong  xdata Total_RainFall=0;
 109   1              uchar  xdata Send_RainFall[5];
 110   1              static uchar Last_RainFall[5]={0x30,0x30,0x30,0x30,0x30};
 111   1              
 112   1              for(i=0;i<5;i++)
 113   1                      Send_RainFall[i]=0;
 114   1         
 115   1        SenBuf[3]=0x01;   
 116   1              SenBuf[5]=(cntr|0x80);
 117   1              
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 3   

 118   1              switch(len)
 119   1              {
 120   2                      case 0:
 121   2                                                      Total_RainFall=rain*Mult_Rainfall;
 122   2                                                      break;
 123   2                      case 1:
 124   2                                                      Total_RainFall=rain;
 125   2                                                      break;
 126   2              
 127   2                case 2 : 
 128   2                                                      Total_RainFall=rain*Mult_Rainfall;
 129   2                                                      break;
 130   2              }               
 131   1              
 132   1              Send_RainFall[4]=Total_RainFall%10+0x30;
 133   1              Send_RainFall[3]=(Total_RainFall/10)%10+0x30;
 134   1              Send_RainFall[2]=(Total_RainFall/100)%10+0x30;
 135   1              Send_RainFall[1]=(Total_RainFall/1000)%10+0x30;
 136   1              Send_RainFall[0]=(Total_RainFall/10000)%10+0x30;
 137   1              
 138   1              SenBuf[6]=0x00;         
 139   1                              
 140   1              switch(len)
 141   1              {
 142   2                      case 0:
 143   2                                                      SenBuf[6]=0x05; 
 144   2      
 145   2                                                      for(i=0;i<5;i++)
 146   2                                                                      SenBuf[7+i]=Send_RainFall[i];
 147   2                                                      break;          
 148   2                                                      
 149   2                      case 1:
 150   2                                                      SenBuf[6]=0x07; 
 151   2      
 152   2                                                      SenBuf[8]=0x30; 
 153   2                                                      for(i=0;i<5;i++)
 154   2                                                                      SenBuf[8+len+i]=Send_RainFall[i];
 155   2                                                      break;
 156   2              
 157   2                case 2 : 
 158   2                                                      //add by jxf    060807  
 159   2                                                      SenBuf[6]=0x0b; 
 160   2                                                      SenBuf[7]=0x32; 
 161   2                                                      
 162   2                                                      for(i=0;i<5;i++)
 163   2                                                                      SenBuf[8+i]=Send_RainFall[i];           
 164   2                                                              
 165   2                                                      for(i=0;i<5;i++)
 166   2                                                                      SenBuf[13+i]=Last_RainFall[i];          
 167   2                                                                      
 168   2                                                      for(i=0;i<5;i++)
 169   2                                                                      Last_RainFall[i]=Send_RainFall[i];
 170   2                                                                      
 171   2                                                      break;
 172   2              }                       
 173   1      
 174   1        cs=0;
 175   1        for(i=0;i<SenBuf[6]+7;i++)
 176   1                              cs+=SenBuf[i];
 177   1      
 178   1              SenBuf[7+SenBuf[6]]=cs;
 179   1              SenBuf[8+SenBuf[6]]=FRAME_END_CHAR;
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 4   

 180   1              Senlen=SenBuf[6]+9;   
 181   1                      
 182   1              return 1; 
 183   1      }
 184          
 185          
 186          /*******************************************************************
 187                               水位数据处理函数               
 188          函数原型: void WaterLevel_Process(void)
 189          功  能: 
 190            
 191          ********************************************************************/
 192          
 193          void WaterLevel_Process(void)
 194          {
 195   1              char i,k;
 196   1              uint xdata tmp[5],t;
 197   1              
 198   1              for(i=0;i<5;i++)
 199   1                      tmp[i]=Scan_WaterLevel[i];
 200   1      
 201   1              for(i=1;i<4;i++)
 202   1              for(k=0;k<4-i;k++)
 203   1              {
 204   2                              if(tmp[k]>tmp[k+1])
 205   2                              {
 206   3                                              t=tmp[k];tmp[k]=tmp[k+1];tmp[k+1]=t;
 207   3                              }
 208   2              }        
 209   1              
 210   1              WaterLevel=tmp[2]+Basic_WaterLevel;
 211   1      
 212   1      }
 213          
 214          /*******************************************************************
 215                               水位数据函数               
 216          函数原型: char Waterlevel(unsigned char p,unsigned char len)
 217          功  能: 
 218            
 219          ********************************************************************/
 220          char Waterlevel(unsigned char p,unsigned char len)
 221          {
 222   1         char i,k;
 223   1         ulong   xdata Total_WaterLevel=0;
 224   1         uchar   xdata Send_WaterLevel[5];   
 225   1               static  uchar last_waterlevel[5]={0x30,0x30,0x30,0x30,0x30};  
 226   1               
 227   1          for(i=0;i<5;i++)
 228   1                                      Send_WaterLevel[i]=0;
 229   1      
 230   1                      Total_WaterLevel=WaterLevel;
 231   1      
 232   1                      for(k=4;k>=0;k--)
 233   1              {               
 234   2                              Send_WaterLevel[k]=(Total_WaterLevel%10)+0x30;
 235   2                                      Total_WaterLevel=Total_WaterLevel/10;
 236   2                      }
 237   1              
 238   1                      cs=0;
 239   1                      SenBuf[3]=0x02;
 240   1                      SenBuf[5]=(p|0x80);
 241   1                      
C51 COMPILER V7.50   PROCESS                                                               10/08/2006 08:51:41 PAGE 5   

 242   1                      SenBuf[6]=0x00; 
 243   1              

⌨️ 快捷键说明

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