CRC16校验码如何计算
计算结果应该是: 方法如下:
码由两个字节构成,在开始时寄存器的每一位都预置为,然后把寄存器与的数据进行异或(异或:二进制运算 相同为,不同为;^^^^), 之后对寄存器从高到低进行移位,在最高位()的位置补零,而最低位(,移位后已经被移出寄存器)如果为,则把寄存器与预定义的多项式码进行异或,否则如果为零,则无需进行异或。重复上述的由高至低的移位次,第一个数据处理完毕,用此时寄存器的值与下一个数据异或并进行如前一个数据似的次移位。所有的字符处理完成后寄存器内的值即为最终的值。b5E2R。b5E2R。 .设置寄存器,并给其赋值()。 .将数据的第一个字符与位寄存器的低位进行异或,并把结果存入寄存器。 .寄存器向右移一位,补零,移出并检查。 p1Ean。p1Ean。 .如果为,重复第三步;若为,寄存器与多项式码相异或。 .重复第与第步直到次移位全部完成。此时一个数据处理完毕。 .重复第至第步直到所有数据全部处理完成。 .最终寄存器的内容即为值。 (位)多项式为 ,其对应校验二进制位列为 。 网站上的算法大都是查字节表的,对单片机来讲,太浪费空间了。 根据老古网上资料,修改并测试通过以下算法: []{ , , }; ( *, ) { ; ; ; () { >>; <<; ^[^(*)]; >>; <<; ^[^(*)];
; } ();
}
1 / 2
个人收集整理-ZQ
2 / 2
因篇幅问题不能全部显示,请点此查看更多更全内容