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

📄 cmdparse.lst

📁 个人学习参考!禁止使用到产品上! 任何人不得公开发布!
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.10   CMDPARSE                                                              02/03/2005 10:45:39 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE CMDPARSE
OBJECT MODULE PLACED IN CmdParse.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CmdParse.c OPTIMIZE(7,SIZE) BROWSE INCDIR(E:\WorkHome\932-DDSF\DDSF-932-002
                    -\;F:\WorkHome\932-DDSF\DDSF-932-003\) DEBUG OBJECTEXTEND

line level    source

   1          /*========================================*/
   2          /*系统名称:DDSF-CECG-JiangSu             */
   3          /*函数名称:数据解析                          */
   4          /*程序编写:步爱军                                    */
   5          /*开始日期:2005-01-01                            */
   6          /*完成日期:                                          */
   7          /*修改记录:                                          */
   8          /*软件版本:DDSF-CECG-002                 */
   9          /*版本说明:用户数据保存在外部            */
  10          /*外部器件:LM75、AT24C02、HT1621、LPC932 */
  11          /*          R8025、ADE7755                */
  12          /*========================================*/
  13          
  14          #include <REG932.H>
  15          #include <Define.h>
  16          #include <Stdio.h>
  17          #include <Intrins.h>
  18          
  19          //数据发送
  20          void SeriesSend(void)
  21          {
  22   1              unsigned char data i,CheckSum;
  23   1              //发送标志有效,开始发送(上位机延时接收)
  24   1              if(SeriesSendFg)
  25   1              {
  26   2                      ComDataBuf[8]=ComDataBuf[8]|0x80;
  27   2                      CheckSum=0;     
  28   2                      ComDataBuf[0]=0x68;
  29   2                      for(i=10;i<(ComDataBuf[9]+11);i++)
  30   2                      {
  31   3                              ComDataBuf[i]=ComDataBuf[i]+0x33;
  32   3                      }
  33   2                      for(i=0;i<(ComDataBuf[9]+10);i++)
  34   2                  {
  35   3                    CheckSum=CheckSum+ComDataBuf[i];
  36   3                  }
  37   2                  ComDataBuf[ComDataBuf[9]+10]=CheckSum;
  38   2                  ComDataBuf[ComDataBuf[9]+11]=0x16;
  39   2                      SeriesSentByte(0xfe);
  40   2                      SeriesSentByte(0xfe);
  41   2                      for(i=0;i<ComDataBuf[9]+12;i++)
  42   2                      {
  43   3                              SeriesSentByte(ComDataBuf[i]);
  44   3                      }
  45   2                      SeriesSentByte(0xff);
  46   2                      SeriesSentByte(0xff);
  47   2                      ClerBuf();
  48   2                      SeriesSendFg=0;
  49   2                      SendOverFg=1;
  50   2              }
  51   1      }
  52          //编程密码校验---清零密码校验
  53          unsigned char SnCheck(void)
  54          {
C51 COMPILER V7.10   CMDPARSE                                                              02/03/2005 10:45:39 PAGE 2   

  55   1              unsigned char i,j,k,m,n,SnIdA,SnIdB,SnCheckData;
  56   1              j=0x4c;
  57   1              k=0x50;
  58   1              m=13;
  59   1              SnCheckData=0;
  60   1              for(i=0;i<3;i++)
  61   1              {
  62   2                      n=IicByteRead(0xa0,j);
  63   2                      if(ComDataBuf[m]==IicByteRead(0xa0,j))
  64   2              {
  65   3                 SnIdA=0x55;
  66   3              }
  67   2              else
  68   2              {
  69   3                 SnIdA=0x00;
  70   3                         break;
  71   3              }
  72   2              j++;
  73   2              }
  74   1              m=13;
  75   1              for(i=0;i<3;i++)
  76   1              {
  77   2                      if(ComDataBuf[m]==IicByteRead(0xa0,k))
  78   2              {
  79   3                 SnIdB=0x55;
  80   3              }
  81   2              else
  82   2              {
  83   3                 SnIdB=0x00;
  84   3                         break;
  85   3              }
  86   2                      k++;
  87   2              }
  88   1              if(SnIdA==0x55)
  89   1              {
  90   2                      SnCheckData=0x01;
  91   2              }
  92   1          else 
  93   1              {
  94   2                      SnCheckData=0;
  95   2              }
  96   1              if(SnIdB==0x55)
  97   1          {       
  98   2              SnCheckData=0x01;
  99   2          }
 100   1              return SnCheckData;
 101   1      }
 102          //接收到的数据减0x33
 103          void DataDeal(void)
 104          {
 105   1              unsigned char i;
 106   1              CmdParseFg=0;
 107   1              for(i=10;i<ComDataBuf[9]+10;i++)
 108   1              {
 109   2                      ComDataBuf[i]=ComDataBuf[i]-0x33;
 110   2                      ComDataBuf[ComDataBuf[9]+10]=ComDataBuf[ComDataBuf[9]+10]-0x33;
 111   2              }
 112   1      }
 113          //数据提取
 114          void CmdPick(unsigned char Device,unsigned char PickupAdd,unsigned char DataLen,bit MoveBit,unsigned char 
             -*value,unsigned char Lend,bit DataForIic,bit BcdChange)
 115          {    
C51 COMPILER V7.10   CMDPARSE                                                              02/03/2005 10:45:39 PAGE 3   

 116   1           unsigned char i,j;
 117   1      
 118   1               if(DataForIic)
 119   1               {
 120   2                      if(MoveBit)
 121   2                  {
 122   3                     for(i=12;i<DataLen+12;i++)
 123   3                     {
 124   4                         j=PickupAdd; 
 125   4                         ComDataBuf[i]=IicByteRead(Device,j<<4);
 126   4                         PickupAdd++;
 127   4                     }
 128   3                  }
 129   2                      else
 130   2                      {
 131   3                          for(i=12;i<DataLen+12;i++)
 132   3                          {
 133   4                             ComDataBuf[i]=IicByteRead(Device,PickupAdd);
 134   4                             PickupAdd++;
 135   4                          }
 136   3                      }
 137   2                      Lend=DataLen;
 138   2               }
 139   1               else
 140   1               {
 141   2                      if(BcdChange)
 142   2              {
 143   3                  for(i=12;i<Lend+12;i++)
 144   3                  {
 145   4                      ComDataBuf[i]=HexToBcd(*value);
 146   4                              value++;
 147   4                  }
 148   3              }
 149   2              else
 150   2              {
 151   3                  for(i=12;i<Lend+12;i++)
 152   3                  {
 153   4                      ComDataBuf[i]=*value;
 154   4                              value++;
 155   4                  }
 156   3              }
 157   2               }
 158   1               ComDataBuf[9]=Lend+2;
 159   1               SeriesSendFg=1;
 160   1      }
 161          //接收到的数据保存
 162          void CmdSave(unsigned char Device,unsigned char PickupAdd,unsigned char SaveAdd,unsigned char DataLen,bit 
             -MoveBit)
 163          {
 164   1          unsigned char i,j,k;
 165   1              k=SnCheck();
 166   1              if(k)
 167   1              {
 168   2                      if(MoveBit)
 169   2                  {
 170   3                      for(i=0;i<DataLen;i++)
 171   3                      {
 172   4                          j=SaveAdd;
 173   4                          IicByteWrite(Device,j<<4,ComDataBuf[PickupAdd+i]);
 174   4                          SaveAdd++;
 175   4                      }
 176   3                  }
C51 COMPILER V7.10   CMDPARSE                                                              02/03/2005 10:45:39 PAGE 4   

 177   2                      else
 178   2                      {
 179   3                          for(i=0;i<DataLen;i++)
 180   3                          {
 181   4                              IicByteWrite(Device,SaveAdd,ComDataBuf[PickupAdd+i]);
 182   4                              SaveAdd++;
 183   4                          }
 184   3                      }               
 185   2                      for(i=10;i<14;i++)
 186   2                      {
 187   3                               ComDataBuf[i]=ComDataBuf[i+4];
 188   3                      }
 189   2                      SeriesSendFg=1;
 190   2              }
 191   1              else
 192   1              {
 193   2                      SeriesSendFg=0;
 194   2                      CmdParseFg=0;
 195   2              }
 196   1      }
 197          //命令解析
 198          void CmdParse(void)
 199          {
 200   1          unsigned char data  CheckSum;
 201   1          unsigned char data i,j,k;
 202   1          unsigned char data IdRight;
 203   1          j=0x40; 
 204   1          //判断是否有未发送数据
 205   1              if(TimeSendFg)
 206   1              {
 207   2                      if(ComTimeA>=5)
 208   2                      {                       
 209   3                              SeriesSend();   
 210   3                              SendOverFg=0;
 211   3                              TimeSendFg=0;
 212   3                              SendOverFg=1;                   
 213   3                      }
 214   2              }
 215   1              else
 216   1              {
 217   2              //数据解析标志是否有效
 218   2                      if(CmdParseFg)
 219   2              {
 220   3                        DataDeal();
 221   3                        CmdParseFg=0;
 222   3                CheckSum=0;
 223   3                //数据校验
 224   3                for(i=0;i<(ComDataBuf[9]+10);i++)
 225   3                {
 226   4                  CheckSum=CheckSum+ComDataBuf[i]; 
 227   4                }
 228   3                //校验和是否相等--如果相等开始校验地址
 229   3                if(CheckSum==ComDataBuf[ComDataBuf[9]+10])
 230   3                {            
 231   4                  for(i=0;i<6;i++)
 232   4                  {
 233   5                    k=IicByteRead(0xa0,j);
 234   5                                if(ComDataBuf[1+i]==k)
 235   5                    {
 236   6                      IdRight=0x55;
 237   6                    }

⌨️ 快捷键说明

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