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

📄 rec_analysis.lst

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


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

line level    source

   1          #include "recframe.h"
   2          #include "Rec_Analysis.h"
   3          #include "process.h"
   4          /*********************************************************************
   5          * 函 数 名: Rec_Analysis
   6          * 功能描述: 判断每一个接收字节,进行状态转移,置标识位
   7          * 函数说明: 帧头68H,帧尾16H
   8          * 调用函数: 无
   9          * 全局变量:无
  10          * 输 入: 无
  11          * 返 回: 无
  12          * 设 计 者:
  13          ***********************************************************************/
  14          void Rec_Analysis(void)
  15          {
  16   1              uchar ch,i;
  17   1              static uchar RecCount,RecState,count, DataLen,cs;
  18   1              
  19   1        if(s_end==0) //数据没有发送完,返回
  20   1                              return; 
  21   1        
  22   1              ch=SBUF;
  23   1              RecBuf[RecCount]=ch; //将接收到的字节存入缓冲区
  24   1        RecCount++;
  25   1              
  26   1              switch(RecState)
  27   1              {
  28   2                      case RS_WAIT:
  29   2                                                                      if(ch==FRAME_START_CHAR) 
  30   2                                                                      {
  31   3                                                                                  RecState++;
  32   3                                                                                  count=1;
  33   3                                                                      }
  34   2                                                                      else
  35   2                                                                                  RecCount=0;                                         
  36   2                                                                      break;
  37   2      
  38   2                      case RS_HEADER:
  39   2                                                                      count++;
  40   2                                  
  41   2                                                                      if(count==5)
  42   2                                                              {
  43   3                                                                                              if(RecBuf[4]!=FRAME_START_CHAR)     //若不是帧起始字符,返回到等待状态
  44   3                                                                                              {
  45   4                                                                                                                      RecCount=0;
  46   4                                                                                  RecState=RS_WAIT;
  47   4                                                                                                                      break;
  48   4                                                                                              }
  49   3                                                                      }  
  50   2      
  51   2                                       if(count==6)
  52   2                                                       {
  53   3                                                                              fc_flag=0;
  54   3                                                                              switch(RecBuf[5])
  55   3                                                                              {                                                   
C51 COMPILER V7.50   REC_ANALYSIS                                                          10/08/2006 08:51:41 PAGE 2   

  56   4                                                                                      case 0:
  57   4                                                                                                              fc_flag=0x00;                                              
  58   4                                                                                                              break;
  59   4                                                                                      case 1:
  60   4                                                                                                              fc_flag=0x01;
  61   4                                                                                                              break;
  62   4                                                                                      case 2:
  63   4                                                                                                              fc_flag=0x02;                                              
  64   4                                                                                                              break;
  65   4                                                                                      case 4:
  66   4                                                                                                              fc_flag=0x04;
  67   4                                                                                                              break;
  68   4                                                                                      case 5:
  69   4                                                                                                              fc_flag=0x05;
  70   4                                                                                                              break;
  71   4                                                                                      case 6:
  72   4                                                                                                              fc_flag=0x06;
  73   4                                                                                                              break;
  74   4                                                                                      case 7:
  75   4                                                                                                              fc_flag=0x07;
  76   4                                                                                                              break;
  77   4                                                                                      case 10:
  78   4                                                                                                              fc_flag=0x0a;
  79   4                                                                                                              break;                                                                          
  80   4                                                                                      case 11:
  81   4                                                                                                              fc_flag=0x0b;
  82   4                                                                                                              break;
  83   4                                                                                      case 12:
  84   4                                                                                                              fc_flag=0x0c;
  85   4                                                                                                              break;
  86   4                                                                                      default:
  87   4                                                                                                              RecCount=0;
  88   4                                                                  RecState=RS_WAIT;
  89   4                                                                                                              break;
  90   4                                                                              }
  91   3                                                              }
  92   2      
  93   2                                               if(count==7) //第7个字节为数据域长度字节
  94   2                                               {
  95   3                                                                              DataLen=ch;     
  96   3                                                                              if(ch==0)        RecState++;
  97   3                                                                              RecState++;
  98   3                                                                              count=0;
  99   3                                                                              break;                          
 100   3                                      }       
 101   2                                                      break;
 102   2      
 103   2                      case RS_DATA:
 104   2                                                      count++;
 105   2                                      if(count==DataLen) 
 106   2                                                                                      RecState++;
 107   2                                                      break;
 108   2      
 109   2                      case RS_CHECK:
 110   2                                                      cs=0;
 111   2                                                      for(i=0;i<RecCount-1;i++)
 112   2                                                                         cs+=RecBuf[i];
 113   2                                                      if(cs!=RecBuf[RecCount-1])                       //校验和不正确,返回到等待状态
 114   2                                              {
 115   3                                                                              RecCount=0;
 116   3                        RecState=RS_WAIT;
 117   3                                                                              break;
C51 COMPILER V7.50   REC_ANALYSIS                                                          10/08/2006 08:51:41 PAGE 3   

 118   3                                                      }
 119   2                                      else  
 120   2                                                                              RecState++;
 121   2                                                      break;
 122   2      
 123   2                      case RS_END:
 124   2                  RecState=RS_WAIT;   
 125   2                                                      if(ch==FRAME_END_CHAR) //如果帧结束字符正确,置接收结束标识位
 126   2                                      {
 127   3                                                                              r_end=1;
 128   3                                                                              p_end=0;
 129   3                                                                              s_end=0;                        
 130   3                                                                              RecCount=0;
 131   3                                                                              rec_lamp=!rec_lamp;
 132   3                                                      }
 133   2                                                      else
 134   2                                                                              RecCount=0;
 135   2                                                      break;
 136   2                      } 
 137   1                      
 138   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    345    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    129    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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