📄 crc16.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 + -