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

📄 hex.lst

📁 C51单片机端
💻 LST
字号:
C51 COMPILER V8.01   HEX                                                                   12/04/2006 10:50:21 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE HEX
OBJECT MODULE PLACED IN HEX.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE HEX.C LARGE OPTIMIZE(7,SPEED) BROWSE ORDER MODDP2 DEBUG OBJECTEXTEND

line level    source

   1          
   2          #include <ctype.h>
   3          #include <stdio.h>
   4          
   5          #include "config.h"
   6          #include "isp.h"
   7          #include "lcd.h"
   8          #include "hex.h"
   9          
  10          unsigned char mBuffer[256];
  11          unsigned int  offset;
  12          unsigned char Msg;
  13          unsigned char m_BankSector;
  14          unsigned char type, data_value, sum, sum_1, sum_2;
  15          unsigned int  mlength;  
  16          unsigned int  mbyte;
  17          
  18          void hex_decoder(unsigned char mRxData)
  19          {
  20   1              static state = REC_MARK;
  21   1              switch(state)
  22   1              {
  23   2                      case REC_MARK: 
  24   2                              if (mRxData == ':') 
  25   2                              {
  26   3                                      state = REC_LEN_1; 
  27   3                                      mbyte=0;
  28   3                              }
  29   2                              else
  30   2                                      state = REC_MARK; 
  31   2                              break;
  32   2                      
  33   2                      case REC_LEN_1: 
  34   2                              mlength = toint(mRxData) * 16;
  35   2                              state = REC_LEN_2;
  36   2                              break;
  37   2                      
  38   2                      case REC_LEN_2: 
  39   2                              mlength = mlength + toint(mRxData);
  40   2                              state = OFFSET_1;
  41   2                              break;
  42   2      
  43   2                      case OFFSET_1: 
  44   2                              offset = toint(mRxData) * 4096;
  45   2                              state = OFFSET_2;
  46   2                              break;
  47   2      
  48   2                      case OFFSET_2: 
  49   2                              offset = offset + toint(mRxData) * 256;
  50   2                              sum_1= offset / 256;
  51   2                              state = OFFSET_3;
  52   2                              break;
  53   2      
  54   2                      case OFFSET_3: 
  55   2                              offset = offset + toint(mRxData) * 16;
C51 COMPILER V8.01   HEX                                                                   12/04/2006 10:50:21 PAGE 2   

  56   2                              state = OFFSET_4;
  57   2                              break;
  58   2      
  59   2                      case OFFSET_4: 
  60   2                              offset = offset + toint(mRxData);
  61   2                              sum_2 = offset - sum_1 * 256;
  62   2                              state = REC_TYP_1;
  63   2                              break;
  64   2      
  65   2                      case REC_TYP_1: 
  66   2                              type = toint(mRxData) * 16;
  67   2                              state =REC_TYP_2;
  68   2                              break;
  69   2      
  70   2                      case REC_TYP_2: 
  71   2                              type = type + toint(mRxData);
  72   2                              sum = (unsigned char)mlength + sum_1 + sum_2 + type;
  73   2                              if(mlength==0x00)state=CHEKSUM_1; 
  74   2                              else state = DATA_1; 
  75   2                              break;
  76   2      
  77   2                      case DATA_1: 
  78   2                              data_value = toint(mRxData) * 16 ;
  79   2                              state = DATA_2;
  80   2                              break;
  81   2      
  82   2                      case DATA_2: 
  83   2                              data_value = data_value + toint(mRxData);
  84   2                              sum = sum + data_value;
  85   2                              mBuffer[mbyte] =  data_value;
  86   2                              mbyte++;
  87   2                              if(mlength<0xFF)
  88   2                              {
  89   3                                      if(mbyte == mlength)state = CHEKSUM_1;
  90   3                                      else state = DATA_1; 
  91   3                              }
  92   2                              else
  93   2                              {
  94   3                                      if(mbyte == (mlength+1))state = CHEKSUM_1;
  95   3                                      else state = DATA_1; 
  96   3                              }
  97   2                              break;
  98   2      
  99   2                      case CHEKSUM_1: 
 100   2                              sum_1 = toint(mRxData) * 16;
 101   2                              sum = (~sum) + 1; 
 102   2                              state = CHEKSUM_2;
 103   2                              break;
 104   2      
 105   2                      case CHEKSUM_2: 
 106   2                          sum_1 = sum_1 + toint(mRxData);
 107   2                              state = REC_MARK; 
 108   2                              if(sum_1 != sum)
 109   2                              {
 110   3                                      if(type==0x00)Msg = HEX_DEC_FRAME_ERR;       //帧错误
 111   3                                      else if(type==0x02)Msg = HEX_DEC_SEG_ERR;    //段错误
 112   3                                      else if(type==0x12)Msg = HEX_DEC_SEG_VERIFY_ERR;   //段地址错误
 113   3      
 114   3                              }
 115   2                              else
 116   2                              {
 117   3                                      if(type==0x00)Msg = HEX_DEC_FRAME_DATA;      //帧数据
C51 COMPILER V8.01   HEX                                                                   12/04/2006 10:50:21 PAGE 3   

 118   3                                      else if(type==0x01)Msg = HEX_DEC_END;        //结束
 119   3                                      else if(type==0x02)                                                      //段地址
 120   3                                      {
 121   4                                              Msg = HEX_DEC_SEG_DATA;          //段数据地址
 122   4                                              m_BankSector =  mBuffer[1];
 123   4                                      }
 124   3                                      else if(type==0x03)Msg = HEX_DEC_START;            //开始下载
 125   3                                      else if(type==0x0A)Msg = HEX_DEC_SEG_IRQ;          //段请求
 126   3                                      else if(type==0x0D)Msg = HEX_DEC_FRAME_IRQ;        //帧请求
 127   3                                      else if(type==0x10)Msg = HEX_DEC_VERIFY_START;     //帧比较开始
 128   3                                      else if(type==0x12)
 129   3                                      {
 130   4                                              Msg = HEX_DEC_SEG_VERIFY_DATA;   //段比较数据
 131   4                                              m_BankSector =  mBuffer[1];
 132   4                                      }
 133   3                                      else if(type==0x15)             //帧比较地址
 134   3                                      {
 135   4                                              Msg = HEX_DEC_FRAME_VERIFY_DATA; //比较帧地址
 136   4                                              offset = mBuffer[0]*256+mBuffer[1];
 137   4                                      }
 138   3                                      else if(type==0x16)Msg = HEX_DEC_VERIFY_FRAME_IRQ;  //比较帧请求
 139   3                                      else if(type==0x19)Msg = HEX_DEC_VERIFY_FRAME_END;  //比较结束
 140   3                                      else if(type==0x1B)Msg = HEX_DEC_PROGRAM_ERR;       //错误结束
 141   3                                      else if(type==0x1C)Msg = HEX_DEC_SECTOR_IRQ;        //扇区设置命令
 142   3                                      else if(type==0x1D)
 143   3                                      {
 144   4                                              Msg = HEX_DEC_SECTOR_BANK;          //扇区设置命令
 145   4                                              offset = mBuffer[0]*256+mBuffer[1];
 146   4                                      }
 147   3                              }
 148   2                              break;
 149   2                      default : 
 150   2                              state = REC_MARK; 
 151   2                              break;
 152   2              }
 153   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    915    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    271       1
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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