精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

您好,歡迎來電子發燒友網! ,新用戶?[免費注冊]

您的位置:電子發燒友網>電子百科>通信技術>數據通信>

8位crc校驗分析及程序

2017年12月04日 10:28 網絡整理 作者: 用戶評論(0

  CRC 中的生成多項式,是有很多標準的。其統一的規律是:最高位、最低位都為1。8位CRC校驗通常用的是CRC-8,其生成多項式為:107H = 1 0000 0111B進行異或運算時,最高位,就算是移出去了,因此,只用 07H 進行異或計算即可。

  CRC校驗實用程序庫 在數據存儲和數據通訊領域,為了保證數據的正確,就不得不采用檢錯的手段。在諸多檢錯手段中,CRC是最著名的一種。CRC的全稱是循環冗余校驗,其特點是:檢錯能力極強,開銷小,易于用編碼器檢測電路實現。從其檢錯能力來看,它所不能發現的錯誤的幾率僅為0.0047%以下。

  從性能上和開銷上考慮,均遠遠優于奇偶校驗及算術和校驗等方式。因而,在數據存儲和數據通訊領域,CRC無處不在:著名的通訊協議X.25的FCS(幀檢錯序列)采用的是CRC-CCITT,WinRAR、NERO、ARJ、LHA等壓縮工具軟件采用的是CRC32,磁盤驅動器的讀寫采用了CRC16,通用的圖像存儲格式GIF、TIFF等也都用CRC作為檢錯手段。下面介紹硬件生成與計算CRC的過程。

  8位CRC校驗程序

  //本程序是完成CRC-8的方程式為X^8+X^2+X+1的源代碼,經調試后正確通過!

  #include “reg52.h”

  #define CRCnum 5

  char CRCArray[CRCnum]={0x16,0x0f,0x17,0xe9,0x03};//需要CRC計算一串數0x160f17e903

  unsigned char cal_crc(unsigned char *ptr, unsigned char len);

  void main()

  {

  char CRC;

  CRC=cal_crc(CRCArray,CRCnum);//得到CRC的代碼

  }

  unsigned char cal_crc(unsigned char *ptr, unsigned char len)

  {

  unsigned char i; unsigned char crc=0; while(len--!=0)

  {

  for(i=0x80; i!=0; i/=2)

  {

  if((crc&0x80)!=0)

  {

  crc*=2; crc^=0x07;

  } /* 余式CRC乘以2再求CRC */

  else

  crc*=2;

  if((*ptr&i)!=0)

  crc^=0x07; /* 再加上本位的CRC */ } ptr++;

  }

  return(crc);

  }

  CRC8位校驗程序分析

  crc8校驗查表法實現方法——查表法 生成多項式X^8+X^6+X^4+X^3+X^2+X^1

  const uchar crctable[] = {

  0, 94,188,226, 97, 63,221,131,194,156,126, 32,163,253, 31, 65,

  157,195, 33,127,252,162, 64, 30, 95, 1,227,189, 62, 96,130,220,

  35,125,159,193, 66, 28,254,160,225,191, 93, 3,128,222, 60, 98,

  190,224, 2, 92,223,129, 99, 61,124, 34,192,158, 29, 67,161,255,

  70, 24,250,164, 39,121,155,197,132,218, 56,102,229,187, 89, 7,

  219,133,103, 57,186,228, 6, 88, 25, 71,165,251,120, 38,196,154,

  101, 59,217,135, 4, 90,184,230,167,249, 27, 69,198,152,122, 36,

  248,166, 68, 26,153,199, 37,123, 58,100,134,216, 91, 5,231,185,

  140,210, 48,110,237,179, 81, 15, 78, 16,242,172, 47,113,147,205,

  17, 79,173,243,112, 46,204,146,211,141,111, 49,178,236, 14, 80,

  175,241, 19, 77,206,144,114, 44,109, 51,209,143, 12, 82,176,238,

  50,108,142,208, 83, 13,239,177,240,174, 76, 18,145,207, 45,115,

  202,148,118, 40,171,245, 23, 73, 8, 86,180,234,105, 55,213,139,

  87, 9,235,181, 54,104,138,212,149,203, 41,119,244,170, 72, 22,

  233,183, 85, 11,136,214, 52,106, 43,117,151,201, 74, 20,246,168,

  116, 42,200,150, 21, 75,169,247,182,232, 10, 84,215,137,107, 53};

  備注:在數據傳輸中CRC或傳過來的數據,可能低字節在前,高字節在后,這就造成查表法表中被查數據不同。

  unsigned char crc_array[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,

  };

非常好我支持^.^

(1) 100%

不好我反對

(0) 0%

( 發表人:龔婷 )

      發表評論

      用戶評論
      評價:好評中評差評

      發表評論,獲取積分! 請遵守相關規定!

      ?