打印

DS18B20的CRC校验程序(查表)

[复制链接]
6718|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
佰财MCU|  楼主 | 2011-8-21 17:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人还不会用C,大家将就着看,欢迎指正!
check_crc:   ;CRC检验子程序
     ;R1,需校验的数据首字节地址
     ;R2,需校验的字节总数
     ;R3,CRC寄存器
  MOV R1,#temp_l ;temp_l为温度数据的低八位
  MOV R2,#9
  MOV R3,#00H
  MOV DPTR,#tab_crc
CRC:
  MOV A,@R1
  XRL A,R3
  MOVC A,@A+DPTR
  MOV R3,A
  INC R1
  DJNZ R2,CRC
  mov a,r3
  jnz err_crc ;err_crc为校验出错子程序
  ret

;以下为CRC的数据表格
tab_crc:   
DB  0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65
DB 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220
DB 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98
DB 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255
DB 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7
DB 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154
DB 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36
DB 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185
DB 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205
DB 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80
DB 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238
DB 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115
DB 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139
DB 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22
DB 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168
DB 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53





  ret

相关帖子

沙发
佰财MCU|  楼主 | 2011-8-21 17:40 | 只看该作者
数据表后面多了一个 ret

使用特权

评论回复
板凳
hotpower| | 2011-8-21 17:48 | 只看该作者
http://www.hotpower.net/HotPower_HotAjax.html自动生成呀。
选择crc8_maxim
功能:CRC位域表及算法
文件选:".c"

点击“大表”:

//CRC位域8表(小端):
const unsigned char CRCR8_8C_Table[256] = {
  0x00,0x5E,0xBC,0xE2,0x61,0x3F,0xDD,0x83,0xC2,0x9C,0x7E,0x20,0xA3,0xFD,0x1F,0x41,
  0x9D,0xC3,0x21,0x7F,0xFC,0xA2,0x40,0x1E,0x5F,0x01,0xE3,0xBD,0x3E,0x60,0x82,0xDC,
  0x23,0x7D,0x9F,0xC1,0x42,0x1C,0xFE,0xA0,0xE1,0xBF,0x5D,0x03,0x80,0xDE,0x3C,0x62,
  0xBE,0xE0,0x02,0x5C,0xDF,0x81,0x63,0x3D,0x7C,0x22,0xC0,0x9E,0x1D,0x43,0xA1,0xFF,
  0x46,0x18,0xFA,0xA4,0x27,0x79,0x9B,0xC5,0x84,0xDA,0x38,0x66,0xE5,0xBB,0x59,0x07,
  0xDB,0x85,0x67,0x39,0xBA,0xE4,0x06,0x58,0x19,0x47,0xA5,0xFB,0x78,0x26,0xC4,0x9A,
  0x65,0x3B,0xD9,0x87,0x04,0x5A,0xB8,0xE6,0xA7,0xF9,0x1B,0x45,0xC6,0x98,0x7A,0x24,
  0xF8,0xA6,0x44,0x1A,0x99,0xC7,0x25,0x7B,0x3A,0x64,0x86,0xD8,0x5B,0x05,0xE7,0xB9,
  0x8C,0xD2,0x30,0x6E,0xED,0xB3,0x51,0x0F,0x4E,0x10,0xF2,0xAC,0x2F,0x71,0x93,0xCD,
  0x11,0x4F,0xAD,0xF3,0x70,0x2E,0xCC,0x92,0xD3,0x8D,0x6F,0x31,0xB2,0xEC,0x0E,0x50,
  0xAF,0xF1,0x13,0x4D,0xCE,0x90,0x72,0x2C,0x6D,0x33,0xD1,0x8F,0x0C,0x52,0xB0,0xEE,
  0x32,0x6C,0x8E,0xD0,0x53,0x0D,0xEF,0xB1,0xF0,0xAE,0x4C,0x12,0x91,0xCF,0x2D,0x73,
  0xCA,0x94,0x76,0x28,0xAB,0xF5,0x17,0x49,0x08,0x56,0xB4,0xEA,0x69,0x37,0xD5,0x8B,
  0x57,0x09,0xEB,0xB5,0x36,0x68,0x8A,0xD4,0x95,0xCB,0x29,0x77,0xF4,0xAA,0x48,0x16,
  0xE9,0xB7,0x55,0x0B,0x88,0xD6,0x34,0x6A,0x2B,0x75,0x97,0xC9,0x4A,0x14,0xF6,0xA8,
  0x74,0x2A,0xC8,0x96,0x15,0x4B,0xA9,0xF7,0xB6,0xE8,0x0A,0x54,0xD7,0x89,0x6B,0x35
};
//CRC位域8查表算法(小端):
unsigned char GetCRCR8_8C_00_00_Table(unsigned char *crcBuff, unsigned char crcLen) {
unsigned char i;
unsigned char crc = 0x00;
  for(i = 0; i < crcLen; i ++) {
    crc = CRCR8_8C_Table[crc ^ crcBuff[i]];
  }
  return crc;
}
void main() {
const unsigned char dataTable[] = "\x01\x23\x45\x67\x89\xAB\xCD\xEF";
unsigned char crc;
  crc = GetCRCR8_8C_00_00_Table((unsigned char *)dataTable, sizeof(dataTable) - 1);
  while(1);
}

使用特权

评论回复
地板
hotpower| | 2011-8-21 17:49 | 只看该作者
http://www.hotpower.net/HotPower_HotAjax.html自动生成呀。
选择crc8_maxim
功能:CRC位域表及算法
文件选:".c"

点击“小表”:

//CRC位域4表(小端):
const unsigned char CRCR8_8C_Table[16] = {
  0x00,0x9D,0x23,0xBE,0x46,0xDB,0x65,0xF8,0x8C,0x11,0xAF,0x32,0xCA,0x57,0xE9,0x74
};
//CRC位域4查表算法(小端):
unsigned char GetCRCR8_8C_00_00_Table(unsigned char *crcBuff, unsigned char crcLen) {
unsigned char i;
unsigned char crc = 0x00;
unsigned char crcTemp;
  for(i = 0; i < (crcLen * 2); i ++) {
    if (i & 1) crcTemp = crcBuff[i >> 1] >> 4;
    else crcTemp = crcBuff[i >> 1] & 0x0F;
    crc = (crc >> 4) ^ CRCR8_8C_Table[(crc & 0x0F) ^ crcTemp];
  }
  return crc;
}
void main() {
const unsigned char dataTable[] = "\x01\x23\x45\x67\x89\xAB\xCD\xEF";
unsigned char crc;
  crc = GetCRCR8_8C_00_00_Table((unsigned char *)dataTable, sizeof(dataTable) - 1);
  while(1);
}

使用特权

评论回复
5
hotpower| | 2011-8-21 17:51 | 只看该作者
http://www.hotpower.net/HotPower_HotAjax.html自动生成呀。
选择crc8_maxim
功能:CRC位域表及算法
文件选:".txt"

点击“大表”:

//CRC位域8表(小端):
const unsigned char CRCR8_8C_Table[256] = {
  0x00,0x5E,0xBC,0xE2,0x61,0x3F,0xDD,0x83,0xC2,0x9C,0x7E,0x20,0xA3,0xFD,0x1F,0x41,
  0x9D,0xC3,0x21,0x7F,0xFC,0xA2,0x40,0x1E,0x5F,0x01,0xE3,0xBD,0x3E,0x60,0x82,0xDC,
  0x23,0x7D,0x9F,0xC1,0x42,0x1C,0xFE,0xA0,0xE1,0xBF,0x5D,0x03,0x80,0xDE,0x3C,0x62,
  0xBE,0xE0,0x02,0x5C,0xDF,0x81,0x63,0x3D,0x7C,0x22,0xC0,0x9E,0x1D,0x43,0xA1,0xFF,
  0x46,0x18,0xFA,0xA4,0x27,0x79,0x9B,0xC5,0x84,0xDA,0x38,0x66,0xE5,0xBB,0x59,0x07,
  0xDB,0x85,0x67,0x39,0xBA,0xE4,0x06,0x58,0x19,0x47,0xA5,0xFB,0x78,0x26,0xC4,0x9A,
  0x65,0x3B,0xD9,0x87,0x04,0x5A,0xB8,0xE6,0xA7,0xF9,0x1B,0x45,0xC6,0x98,0x7A,0x24,
  0xF8,0xA6,0x44,0x1A,0x99,0xC7,0x25,0x7B,0x3A,0x64,0x86,0xD8,0x5B,0x05,0xE7,0xB9,
  0x8C,0xD2,0x30,0x6E,0xED,0xB3,0x51,0x0F,0x4E,0x10,0xF2,0xAC,0x2F,0x71,0x93,0xCD,
  0x11,0x4F,0xAD,0xF3,0x70,0x2E,0xCC,0x92,0xD3,0x8D,0x6F,0x31,0xB2,0xEC,0x0E,0x50,
  0xAF,0xF1,0x13,0x4D,0xCE,0x90,0x72,0x2C,0x6D,0x33,0xD1,0x8F,0x0C,0x52,0xB0,0xEE,
  0x32,0x6C,0x8E,0xD0,0x53,0x0D,0xEF,0xB1,0xF0,0xAE,0x4C,0x12,0x91,0xCF,0x2D,0x73,
  0xCA,0x94,0x76,0x28,0xAB,0xF5,0x17,0x49,0x08,0x56,0xB4,0xEA,0x69,0x37,0xD5,0x8B,
  0x57,0x09,0xEB,0xB5,0x36,0x68,0x8A,0xD4,0x95,0xCB,0x29,0x77,0xF4,0xAA,0x48,0x16,
  0xE9,0xB7,0x55,0x0B,0x88,0xD6,0x34,0x6A,0x2B,0x75,0x97,0xC9,0x4A,0x14,0xF6,0xA8,
  0x74,0x2A,0xC8,0x96,0x15,0x4B,0xA9,0xF7,0xB6,0xE8,0x0A,0x54,0xD7,0x89,0x6B,0x35
};

使用特权

评论回复
6
qin552011373| | 2011-8-21 21:38 | 只看该作者
很强大啊

使用特权

评论回复
7
hotpower| | 2011-8-21 21:46 | 只看该作者
哈哈,http://www.hotpower.net/HotPower_HotAjax.html敢于PK地球人的CRC,不强的是不行的

使用特权

评论回复
8
hotpower| | 2011-8-22 10:42 | 只看该作者
楼主不见了?俺给你送的玩具不要了?

使用特权

评论回复
9
xyz769| | 2011-8-22 13:50 | 只看该作者
哈哈,http://www.hotpower.net/HotPower_HotAjax.html敢于PK地球人的CRC,不强的是不行的
hotpower 发表于 2011-8-21 21:46


啥意思,页面啥都没有。。

使用特权

评论回复
10
hotpower| | 2011-8-22 13:57 | 只看该作者
必须用IE内核的浏览器。

使用特权

评论回复
11
xyz769| | 2011-8-28 21:49 | 只看该作者
噢。。。不习惯用IE内核的浏览器。看了源代码,非常不错。。:victory:

使用特权

评论回复
12
hotpower| | 2011-12-26 13:10 | 只看该作者
顶起来,掀起密码安全教育风暴~~~

使用特权

评论回复
13
Xplain| | 2013-11-6 18:41 | 只看该作者
这个实用

使用特权

评论回复
14
伟布斯| | 2013-11-7 13:08 | 只看该作者
我帮你顶贴吧

使用特权

评论回复
15
hotpower| | 2017-5-14 10:05 | 只看该作者
我正在看【HotPower超级CRC计算器(V1.23)】,分享给你,一起看吧! http://www.21ic.com/tools/HotWC3_V1.23.html

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

64

帖子

2

粉丝