crc.lst
来自「一个循环冗余校验的程序」· LST 代码 · 共 141 行
LST
141 行
C51 COMPILER V7.06 CRC 03/29/2008 23:46:17 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CRC
OBJECT MODULE PLACED IN .\output\CRC.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CRC\CRC.c BROWSE DEBUG OBJECTEXTEND PRINT(.\Listing\CRC.lst) OBJECT(.\outpu
-t\CRC.obj)
stmt level source
1
2
3
4 //unsigned char code crcbuff [] = { 0x00,0x00,0x00,0x00,0x06,0x0d,0xd2,0xe3};
5
6 //unsigned char code crcbuff [] = {0x7F,0xFE,0xFF,0x09,0xC4,0xD2,0x01,0x00,0x00,0x00};
7 unsigned char code crcbuff [] = {0x00,0x01,0x00,0xFA,0x8C,0x6D,0xFF,0xFF,0xFE,0xFF};
8 unsigned int crc; // CRC 码
9
10
11 unsigned int crc16l(unsigned char *ptr,unsigned char len) // ptr 为数据指针,len 为数据长度
12 {
13 1 unsigned char i;
14 1 while(len--)
15 1 {
16 2 for(i=0x80; i!=0; i>>=1)
17 2 {
18 3 if((crc&0x8000)!=0) {crc<<=1; crc^=0x1081;} // 1-1
19 3 else crc<<=1; // 1-2
20 3 if((*ptr&i)!=0) crc^=0x1081; // 1-3
21 3 }
22 2 ptr++;
23 2 }
24 1 return(crc);
25 1 }
26
27
28
29
30 /*
31 //全字节查表法
32
33 code uint crc_ta[256]={ // X16+X12+X5+1 余式表
34 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
35 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
36 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
37 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
38 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
39 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
40 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
41 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
42 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
43 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
44 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
45 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
46 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
47 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
48 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
49 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
50 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
51 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
52 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
53 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
54 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
C51 COMPILER V7.06 CRC 03/29/2008 23:46:17 PAGE 2
55 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
56 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
57 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
58 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
59 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
60 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
61 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
62 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
63 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
64 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
65 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
66 };
67
68
69
70 uint table_crc(uchar *ptr,uchar len) // 字节查表法求 CRC
71 {
72 uchar da;
73 while(len--!=0)
74 {
75 da=(uchar) (crc/256); // 以 8 位二进制数暂存 CRC 的高 8 位
76 crc<<=8; // 左移 8 位
77 crc^=crc_ta[da^*ptr]; // 高字节和当前数据 XOR 再查表
78 ptr++;
79 }
80 return(crc);
81 }
82
83 */
84
85
86
87 /*
88 //半字节查表法
89
90 code uint crc_ba[16]={
91 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
92 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
93 };
94
95 uint ban_crc(uchar *ptr,uchar len)
96 {
97 uchar da;
98 while(len--!=0)
99 {
100 da = ((uchar)(crc/256))/16;
101 crc <<= 4;
102 crc ^=crc_ba[da^(*ptr/16)];
103 da = ((uchar)(crc/256)/16);
104 crc <<= 4;
105 crc ^=crc_ba[da^(*ptr&0x0f)];
106 ptr++;
107 }
108 return(crc);
109 }
110
111 */
112
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 78 ----
C51 COMPILER V7.06 CRC 03/29/2008 23:46:17 PAGE 3
CONSTANT SIZE = 10 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?