DS18B20的CRC校验程序(查表)

[复制链接]
7846|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"

点击“大表”:

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

hotpower 发表于 2011-8-21 17:49 | 显示全部楼层
http://www.hotpower.net/HotPower_HotAjax.html自动生成呀。
选择crc8_maxim
功能:CRC位域表及算法
文件选:".c"

点击“小表”:

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

hotpower 发表于 2011-8-21 17:51 | 显示全部楼层
http://www.hotpower.net/HotPower_HotAjax.html自动生成呀。
选择crc8_maxim
功能:CRC位域表及算法
文件选:".txt"

点击“大表”:

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

qin552011373 发表于 2011-8-21 21:38 | 显示全部楼层
很强大啊
hotpower 发表于 2011-8-21 21:46 | 显示全部楼层
哈哈,http://www.hotpower.net/HotPower_HotAjax.html敢于PK地球人的CRC,不强的是不行的
hotpower 发表于 2011-8-22 10:42 | 显示全部楼层
楼主不见了?俺给你送的玩具不要了?
xyz769 发表于 2011-8-22 13:50 | 显示全部楼层
哈哈,http://www.hotpower.net/HotPower_HotAjax.html敢于PK地球人的CRC,不强的是不行的
hotpower 发表于 2011-8-21 21:46


啥意思,页面啥都没有。。
hotpower 发表于 2011-8-22 13:57 | 显示全部楼层
必须用IE内核的浏览器。
xyz769 发表于 2011-8-28 21:49 | 显示全部楼层
噢。。。不习惯用IE内核的浏览器。看了源代码,非常不错。。:victory:
hotpower 发表于 2011-12-26 13:10 | 显示全部楼层
顶起来,掀起密码安全教育风暴~~~
Xplain 发表于 2013-11-6 18:41 | 显示全部楼层
这个实用
伟布斯 发表于 2013-11-7 13:08 | 显示全部楼层
我帮你顶贴吧
hotpower 发表于 2017-5-14 10:05 来自手机 | 显示全部楼层
我正在看【HotPower超级CRC计算器(V1.23)】,分享给你,一起看吧! http://www.21ic.com/tools/HotWC3_V1.23.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

64

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部