找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4279|回复: 3
打印 上一主题 下一主题
收起左侧

crc16.h头文件下载及CRC16校验算法原理与C语言实现源码

[复制链接]
跳转到指定楼层
楼主
关于CRC16校验详细原理与crc16.h头文件的资料分享给大家

本文从理论上推导出CRC算法实现原理,给出三种分别适应不同计算机或微控制器硬件环境的C语言程序。读者更能根据本算法原理,用不同的语言编写出独特风格更加实用的CRC计算程序。


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


调用:
  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. }


复制代码



所有资料51hei提供下载:
crc16.rar (59.03 KB, 下载次数: 71)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-5-23 03:14 | 只看该作者
好资料,51黑有你更精彩!!!
回复

使用道具 举报

板凳
ID:337808 发表于 2018-5-25 20:37 来自手机 | 只看该作者
没有看懂?希望能补充些代码注释
回复

使用道具 举报

地板
ID:410139 发表于 2019-3-28 22:09 | 只看该作者
谢谢楼主分享,好东西收藏了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表