標(biāo)題: crc16.h頭文件下載及CRC16校驗(yàn)算法原理與C語(yǔ)言實(shí)現(xiàn)源碼 [打印本頁(yè)]

作者: 3361089259    時(shí)間: 2018-5-22 08:51
標(biāo)題: crc16.h頭文件下載及CRC16校驗(yàn)算法原理與C語(yǔ)言實(shí)現(xiàn)源碼
關(guān)于CRC16校驗(yàn)詳細(xì)原理與crc16.h頭文件的資料分享給大家

本文從理論上推導(dǎo)出CRC算法實(shí)現(xiàn)原理,給出三種分別適應(yīng)不同計(jì)算機(jī)或微控制器硬件環(huán)境的C語(yǔ)言程序。讀者更能根據(jù)本算法原理,用不同的語(yǔ)言編寫出獨(dú)特風(fēng)格更加實(shí)用的CRC計(jì)算程序。


crc16.h頭文件源程序如下:


調(diào)用:
  1. /*  HELLO.C -- Hello, world */

  2. #include "stdio.h"
  3. #include "conio.h"
  4. unsigned cal_crc(unsigned char *ptr,unsigned char len)
  5. {
  6. unsigned int crc;
  7. unsigned char da;
  8. unsigned int crc_ta[16]={
  9. 0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
  10. 0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef,
  11. };
  12. crc=0;
  13. while(len--!=0) {
  14. da=((unsigned char)(crc/256))/16;
  15. crc<<=4;
  16. crc^=crc_ta[da^(*ptr/16)];
  17. da=((unsigned char)(crc/256))/16;
  18. crc<<=4;
  19. crc^=crc_ta[da^(*ptr&0x0f)];
  20. ptr++;
  21. }
  22. return(crc);
  23. }


  24. main()
  25. {
  26.   unsigned int w1=0,w2=0;
  27.    int a=0x0f;
  28.    char b[9]={1,2,3,4,5,6,7,8,1};
  29.    int i=0,j=0;
  30.    unsigned int temp=0;
  31.     temp=cal_crc(b,9);
  32.     if(temp>0)
  33.     {
  34.      printf("%d\n",temp);
  35.      w1=temp/256;
  36.      w2=temp%256;
  37.      printf("%d\n",w1);
  38.      printf("%d",w2);
  39.     }
  40.    else
  41.       printf("%d",a);
  42.     getch();
  43. }


復(fù)制代碼



所有資料51hei提供下載:
crc16.rar (59.03 KB, 下載次數(shù): 72)



作者: admin    時(shí)間: 2018-5-23 03:14
好資料,51黑有你更精彩!!!
作者: zhangshanqiao    時(shí)間: 2018-5-25 20:37
沒(méi)有看懂?希望能補(bǔ)充些代碼注釋
作者: wo411322    時(shí)間: 2019-3-28 22:09
謝謝樓主分享,好東西收藏了




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1