找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5295|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

crc16.h頭文件下載及CRC16校驗(yàn)算法原理與C語言實(shí)現(xiàn)源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
關(guān)于CRC16校驗(yàn)詳細(xì)原理與crc16.h頭文件的資料分享給大家

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


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2018-5-23 03:14 | 只看該作者
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

板凳
ID:337808 發(fā)表于 2018-5-25 20:37 來自手機(jī) | 只看該作者
沒有看懂?希望能補(bǔ)充些代碼注釋
回復(fù)

使用道具 舉報(bào)

地板
ID:410139 發(fā)表于 2019-3-28 22:09 | 只看該作者
謝謝樓主分享,好東西收藏了
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表