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

📄 crc16.lst

📁 c8051f310xmodembootloader.rar
💻 LST
字号:
C51 COMPILER V8.16   CRC16                                                                 12/10/2009 11:17:10 PAGE 1   


C51 COMPILER V8.16, COMPILATION OF MODULE CRC16
OBJECT MODULE PLACED IN crc16.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE crc16.c LARGE BROWSE INTVECTOR(0X1000) DEBUG OBJECTEXTEND

line level    source

   1          /******************************************************************************
   2          ** 函数: cal_crc
   3          ** 入参: unsigned char *ptr, unsigned char len
   4          ** 返回: unsigned int crc
   5          ** 作者: jerkoh
   6          ** 说明:CRC16-CCITT x16+x12+x5+1    1021  初始crc=0; crc=0xffff
   7                   CRC寄存器组初始化为全"0"(0x0000)。
   8                           注意:CRC寄存器组初始化全为1时,最后CRC应取反    
   9          ******************************************************************************/
  10          #include "global.h"
  11          
  12          
  13          unsigned int cal_crc(unsigned char *ptr, unsigned char len)
  14          {
  15   1        unsigned char i;
  16   1        unsigned int crc=0xffff;
  17   1      
  18   1        while(len--!=0)
  19   1         {
  20   2          for(i=0x80;i!=0;i/=2)                         /*8字节*/
  21   2                {
  22   3                  if((crc&0x8000)!=0)
  23   3                        {
  24   4                         crc*=2;
  25   4                         crc^=0x1021;                           /*左移异或CRC*/
  26   4                        }
  27   3                      else
  28   3                        {
  29   4                        crc*=2;
  30   4                        }
  31   3                      if((*ptr&i)!=0)  crc^=0x1021;  
  32   3                }
  33   2                ptr++;
  34   2          
  35   2         }
  36   1         return(crc);
  37   1      }
  38          
  39          
  40          /******************************************************************************
  41          ** 函数: cksum()
  42          ** 入参: rxdata
  43          ** 返回: sum
  44          ** 说明:
  45          ******************************************************************************/
  46           UINT cksum(UCHAR xdata *check,UINT length) //计算校验和            
  47          {
  48   1              LONG sum=0;
  49   1              UINT i;
  50   1              UINT xdata *ptr; 
  51   1          ptr=(UINT xdata *)check;
  52   1              for (i=0;i<(length)/2;i++)
  53   1              {
  54   2                      sum+=*ptr++;
  55   2              }
C51 COMPILER V8.16   CRC16                                                                 12/10/2009 11:17:10 PAGE 2   

  56   1              if (length&0x01)//表示长度为单数          
  57   1              {
  58   2                      sum=sum+((*ptr)&0xff00);
  59   2              }
  60   1              sum=(sum&0xffff)+((sum>>16)&0xffff);    //高16位和低16位相加        
  61   1              if(sum&0xffff0000)
  62   1              {//表示有进位  
  63   2                      sum++;
  64   2              }
  65   1              return ( (UINT)((sum)&0xffff));
  66   1      //      return ( (UINT)(~((sum)&0xffff)));
  67   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    385    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----      12
   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 + -