CRC16校验C语言程序源码 - 冲顶技术团队

CRC16校验C语言程序源码

上传人:m**** 文档编号:168597839 上传时间:2022-11-11 格式:DOCX 页数:5 大小:18.94KB
收藏 版权申诉 举报 下载
CRC16校验C语言程序源码_第1页
第1页 / 共5页
CRC16校验C语言程序源码_第2页
第2页 / 共5页
CRC16校验C语言程序源码_第3页
第3页 / 共5页
资源描述:

《CRC16校验C语言程序源码》由会员分享,可在线阅读,更多相关《CRC16校验C语言程序源码(5页珍藏版)》请在装配图网上搜索。

1、CRC16校验C语言程序源码(附完整的可执行的C语言代码) //CRC16校验在通讯中应用广泛,这里不对其理论进行讨论,只对常见的2种 //实现方法进行测试。 方法一:查表法(256长度的校验表) 速度快,准确,但是对于单片机设备存储占用大,且校验表长度大,输入时容易出现错误。 // POPULAR POLYNOMIALS // CCITT: x"16 + x"12 + x"5 + x"0 (0x1021) // CRC-16: x"16 + x"15 + x"2 + x"0 (0x8005) #define CRC_16_POLYNOMIALS

2、0x8005 const BYTE chCRCHTalbe[]= // CRC咼位字节值表 { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x

3、80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0

4、xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,

5、0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81,

6、 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1,

7、 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01

8、, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 }; const BYTE chCRCLTalbe[] = // CRC 低位字节值表 { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA,

9、0xCB, 0x0B, 0xC9, 0x09, 0x0 8, 0xC 8, 0xD 8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3, 0x11, 0xD1, 0xD0, 0x10, 0xF0, 0x30, 0x31, 0xF1, 0

10、x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37, 0xF5, 0x35, 0x34, 0xF4, 0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B, 0xFB, 0x39, 0xF9, 0xF 8, 0x38, 0x2 8, 0xE 8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF, 0x2D, 0xED, 0xEC

11、, 0x2C, 0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23, 0xE1, 0x21, 0x20, 0xE0, 0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67, 0xA5, 0x65, 0x64, 0xA4, 0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6

12、A, 0x6B, 0xAB, 0x69, 0xA9, 0xA 8, 0x6 8, 0x7 8, 0xB 8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF, 0x7D, 0xBD, 0xBC, 0x7C, 0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73, 0xB1, 0x71, 0x70, 0xB0, 0x50, 0x90, 0x91, 0x51,

13、 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55, 0x95, 0x94, 0x54, 0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B, 0x99, 0x59, 0x5 8, 0x9 8, 0x8 8, 0x4 8, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F, 0x8D, 0x4D,

14、0x4C, 0x8C, 0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41, 0x81, 0x80, 0x40 }; WORD CRC16_1(BYTE* pchMsg, WORD wDataLen) { BYTE chCRCHi = OxFF; // 高 CRC 字节初始化 BYTE chCRCLo = 0xFF; // 低 CRC 字节初始化 WORD wIndex; // CRC循环中的索引 while

15、(wDataLen--) { //计算CRC wIndex = chCRCLo " *pchMsg++ ; chCRCLo = chCRCHi ' chCRCHTalbe[wIndex]; chCRCHi = chCRCLTalbe[wIndex]; } return ((chCRCHi << 8) | chCRCLo); } 方法一:列表法(简单表) const WORD wCRCTalbeAbs[]= { 0x0000, OxCCOl, 0xD801, 0x1400, OxFOOl, 0x3C00, 0x2800, 0xE401, OxAOOl, 0x6C00, 0x7

16、800, 0xB401, 0x5000, 0x9C01, 0x8801, 0x4400, }; WORD CRC16_2(BYTE* pchMsg, WORD wDataLen) { WORD wCRC = OxFFFF; WORD i; BYTE chChar; for (i = 0; i < wDataLen; i++) { chChar = *pchMsg++; wCRC = wCRCTalbeAbs[(chChar ' wCRC) & 15] ' (wCRC >> 4); wCRC = wCRCTalbeAbs[((chChar >> 4) ' wCRC) & 1

17、5]' (wCRC >> 4); } return wCRC; } 方法二:定义法 根据CRC16/MODBUS原理直接计算,算法简单但对单片机计算压力大。 WORD CRC16_3(BYTE* pchMsg, WORD wDataLen) { BYTE i, chChar; WORD wCRC = OxFFFF; while (wDataLen--) { chChar = *pchMsg++; chChar = Bytelnvert(chChar); wCRC '二(((WORD) chChar) << 8); for (i = 0; i < 8; i++)

18、{ if (wCRC & 0x8000) wCRC = (wCRC << 1)' CRC_16_POLYNOMIALS; else wCRC <<= 1; } } wCRC = WordInvert(wCRC); return wCRC; //试验数据: // 采用 Metrowerks CodeWarrior 在 DSP56F80x 平台上,对这 3 种方法 //进行了性能测试。 // // 代码大小(字) 额外存储空间(字) // // 方法1 32 512 // 方法2 57 16 // 方法3 142

19、* 0 // 执行时间(周期数) 540 1120 4598 附一个完整的C语言代码 #include void InvertUint8(unsigned char *dBuf,unsigned char *srcBuf) { int i; unsigned char tmp[4]; tmp[0] = 0; for(i=0;i< 8;i++) { if(srcBuf[0]& (1 << i)) tmp[0]|=1<<(7-i); } dBuf[0] = tmp[0]; } void InvertUint16(unsigned sho

20、rt *dBuf,unsigned short *srcBuf) { int i; unsigned short tmp[4]; tmp[0] = 0; for(i=0;i< 16;i++) { if(srcBuf[0]& (1 << i)) tmp[0]|=1<<(15 - i); } dBuf[0] = tmp[0]; } unsigned short CRC16_MODBUS(unsigned char *puchMsg, unsigned int usDataLen) { unsigned short wCRCin = 0xFFFF; unsigned shor

21、t wCPoly = 0x8005; unsigned char wChar = 0; int i; while (usDataLen--) { wChar = *(puchMsg++); InvertUint8(&wChar,&wChar); wCRCin A= (wChar << 8); for(i = 0;i < 8;i++) { if(wCRCin & 0x8000) wCRCin = (wCRCin << 1) A wCPoly; else wCRCin = wCRCin << 1; } } InvertUint16(&wCRCin,&wCRCin); return (wCRCin) ; } int main() { unsigned char puchMsg[10]="0123456789"; unsigned short result=CRC16_MODBUS(puchMsg,10); //字符串可直接用%是输入,具 体应用具体实现,但后面的 int 型参数对应字符串长度必须正 确。 printf("%X",result);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

相关资源

更多
正为您匹配相似的精品文档
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!

相关内容推荐

mac锁屏快捷键optifine陌念天意u盘维护系统juicerresell选中一行的快捷键积分查询与兑换合路器霍兰德测评公众号模板消息edr系统文件对比在线findmebabble游游荡荡手机号查微博铭阳okular英桃nxlog钱端迅雷下载地址后式撸撸网址4337赵子良反函数举例和同学的妈妈做爱秀人集GUTI交换机型号幸运28品牌查询空间切割rabbi小格式ayla1693qtr颜色拾取一对多秀直播自发行为自毁装置www插原有光纤和光缆上兴陈颢文免费av视频在线sponse23456浏览器网线接法图解8根账户登录pkcs7goldmine员工转正申请软碟通注册码小红帽杀毒美国的悲剧xxx78sfdsu鉴定故障什么是等离子人生不怕从头再来RFM模型u盘和硬盘的区别伊人22bosh顺联网怎么新建图层整数定义22065语言排名菡子柳长青porc海康相机拓扑结构金狮播放器waim元胞自动机ros软路由亚洲a天堂bingfeng奔腾4玻尔兹曼分布产品设计网站av视频国产prolific车牌识别算法tommorow电脑安装双系统lizetopi解析度无盘系统怎么搭建x69你可知道阿里云oss存储精品网label标签TESC着火源补色对比峰电位bids安天智甲mbtofawkes沙漠驼铃时间回归hi10paplayBlockoutxlyx搞吧防火墙透明模式im是什么格兰杰因果检验sw290godis进件是什么意思哈密顿图外滩踩踏事件黄色片软件海图itabTargetsbrownian水鱼鞭altera芯片布结构planetesMOSICsub1Naco王肖彩色字青年人创业黄色小说下载蜜臀在线easygui电池尺寸股票量化金刚经字数dpm模型ebp是什么意思龙昱ps怎么抠图simufact汇聚交换机20站推广自己操自己airwayphp数组合并jcszuanke8jenne架构师是做什么的zxp通知权限newstar时间回归朱邦复随机算法婚盲revealekonsolegeneremittedhtml文字居中蓝牙协议栈黄丹华ppb和ppmuftchaop英文排版limma方正准圆简体rewind闭环系统3550开源棋牌STARGATE红色警戒2外挂利率效应程序性记忆hi10pfailsafe什么是pcb混沌数学git管理工具502报错圆阵ico在线转换ping怎么用SDAP样件vrrp配置实例

合作伙伴

冲顶技术团队

www.hz.bj.cn
www.28j.com.cn
www.pifajia.net.cn
idc.urkeji.com
jl.urkeji.com
www.3phw.com
www.urkeji.com
www.tjwyj.com
niu.seo5951.com
www.haowangjiao.cc
www.zhdaili.cn
www.snlanyards.com
niu.seo5951.com
seo.07yue.com
www.imeiying.com
dw.urkeji.com
www.zhdaili.cn
www.te3.com.cn
seo.xtcwl.com
www.clhczx.cn