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

📄 crc.lst

📁 用C8051F芯片完成的温度远程采集程序,发送,接受两个模块通信完成,内嵌CRC算法.
💻 LST
字号:
C51 COMPILER V8.02   CRC                                                                   07/13/2007 17:09:26 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE CRC
OBJECT MODULE PLACED IN CRC.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CRC.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <crc.h>
   2          
   3          #define uchar unsigned char
   4          #define uint  unsigned int
   5          
   6          //#define  CRCPLOY16 0x8005                     //校验方式
   7          
   8          uint code CRCTable[256]={
   9          0x0000,0x8005,0x800f,0x000a,0x801b,0x001e,0x0014,0x8011,
  10          0x8033,0x0036,0x003c,0x8039,0x0028,0x802d,0x8027,0x0022,
  11          0x8063,0x0066,0x006c,0x8069,0x0078,0x807d,0x8077,0x0072,
  12          0x0050,0x8055,0x805f,0x005a,0x804b,0x004e,0x0044,0x8041,
  13          0x80c3,0x00c6,0x00cc,0x80c9,0x00d8,0x80dd,0x80d7,0x00d2,
  14          0x00f0,0x80f5,0x80ff,0x00fa,0x80eb,0x00ee,0x00e4,0x80e1,
  15          0x00a0,0x80a5,0x80af,0x00aa,0x80bb,0x00be,0x00b4,0x80b1,
  16          0x8093,0x0096,0x009c,0x8099,0x0088,0x808d,0x8087,0x0082,
  17          0x8183,0x0186,0x018c,0x8189,0x0198,0x819d,0x8197,0x0192,
  18          0x01b0,0x81b5,0x81bf,0x01ba,0x81ab,0x01ae,0x01a4,0x81a1,
  19          0x01e0,0x81e5,0x81ef,0x01ea,0x81fb,0x01fe,0x01f4,0x81f1,
  20          0x81d3,0x01d6,0x01dc,0x81d9,0x01c8,0x81cd,0x81c7,0x01c2,
  21          0x0140,0x8145,0x814f,0x014a,0x815b,0x015e,0x0154,0x8151,
  22          0x8173,0x0176,0x017c,0x8179,0x0168,0x816d,0x8167,0x0162,
  23          0x8123,0x0126,0x012c,0x8129,0x0138,0x813d,0x8137,0x0132,
  24          0x0110,0x8115,0x811f,0x011a,0x810b,0x010e,0x0104,0x8101,
  25          0x8303,0x0306,0x030c,0x8309,0x0318,0x831d,0x8317,0x0312,
  26          0x0330,0x8335,0x833f,0x033a,0x832b,0x032e,0x0324,0x8321,
  27          0x0360,0x8365,0x836f,0x036a,0x837b,0x037e,0x0374,0x8371,
  28          0x8353,0x0356,0x035c,0x8359,0x0348,0x834d,0x8347,0x0342,
  29          0x03c0,0x83c5,0x83cf,0x03ca,0x83db,0x03de,0x03d4,0x83d1,
  30          0x83f3,0x03f6,0x03fc,0x83f9,0x03e8,0x83ed,0x83e7,0x03e2,
  31          0x83a3,0x03a6,0x03ac,0x83a9,0x03b8,0x83bd,0x83b7,0x03b2,
  32          0x0390,0x8395,0x839f,0x039a,0x838b,0x038e,0x0384,0x8381,
  33          0x0280,0x8285,0x828f,0x028a,0x829b,0x029e,0x0294,0x8291,
  34          0x82b3,0x02b6,0x02bc,0x82b9,0x02a8,0x82ad,0x82a7,0x02a2,
  35          0x82e3,0x02e6,0x02ec,0x82e9,0x02f8,0x82fd,0x82f7,0x02f2,
  36          0x02d0,0x82d5,0x82df,0x02da,0x82cb,0x02ce,0x02c4,0x82c1,
  37          0x8243,0x0246,0x024c,0x8249,0x0258,0x825d,0x8257,0x0252,
  38          0x0270,0x8275,0x827f,0x027a,0x826b,0x026e,0x0264,0x8261,
  39          0x0220,0x8225,0x822f,0x022a,0x823b,0x023e,0x0234,0x8231,
  40          0x8213,0x0216,0x021c,0x8219,0x0208,0x820d,0x8207,0x0202
  41          
  42          };
  43          
  44          //得到16位CRC校验数据
  45          CRC16_Get(uchar *pMsg,uchar len)
  46          {
  47   1         uchar i;
  48   1         uint CRCIndex;
  49   1         uint  CRC16Temp;
  50   1         CRC16Temp = 0x0000;
  51   1         pMsg += (len-1);            //跳过数组低两字节,存入得到CRC值
  52   1         for(i=(len-2);i>0;i--,pMsg--)
  53   1          {
  54   2              CRCIndex = (CRC16Temp>>8)^*pMsg;
  55   2              CRC16Temp <<=8;
C51 COMPILER V8.02   CRC                                                                   07/13/2007 17:09:26 PAGE 2   

  56   2              CRC16Temp ^=CRCTable[CRCIndex]; 
  57   2          }
  58   1         *pMsg = CRC16Temp>>8;       //高位存CRC值高位
  59   1         *(pMsg-1) = CRC16Temp;      //低位存CRC值低位
  60   1         return CRC16Temp;
  61   1      }
  62          
  63          
  64          //校验收到的数据是否正确
  65          CRC16_Check(uchar *pMsg,uchar len)
  66          {
  67   1         uchar i;
  68   1         uint CRCIndex;
  69   1         uint  CRC16Temp;
  70   1         uint  temp;
  71   1         temp <<=8;
  72   1         temp |= *(pMsg+1);
  73   1         temp <<=8;
  74   1         temp |= *pMsg;
  75   1      
  76   1         CRC16Temp = 0x0000;
  77   1         pMsg += (len-1);            //跳过数组低两字节,存入得到CRC值
  78   1         for(i=(len-2);i>0;i--,pMsg--)
  79   1          {
  80   2              CRCIndex = (CRC16Temp>>8)^*pMsg;
  81   2              CRC16Temp <<=8;
  82   2              CRC16Temp ^=CRCTable[CRCIndex]; 
  83   2          }
  84   1      
  85   1         if(CRC16Temp!=temp)
  86   1          {
  87   2             return 0;
  88   2          }
  89   1         else
  90   1          {
  91   2             return 1;
  92   2          }
  93   1         
  94   1      }
  95          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    242    ----
   CONSTANT SIZE    =    512    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       8
   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 + -