内含8位、16位、32位的CRC校验算法示例代码,生成多项式的值(多项式因子) 注意:CRC16是数据流的高位先计算,多项式因子不变 而CRC32和CRC8都是数据流的低位先计算,所以多项式因子的高/低位对调 比如CRC32由$04C11DB7变为$EDB88320,CRC8由$31变为$8C 16位CRC:按位计算,速度最慢,占用空间最少 注:数据流是高位先行 MCS51的CRC-16计算函数(多项式因子为$1021, 高位先行) ; 调用:CRC16H/CRC16L=原CRC16值(16位,初始值为0000h),A=待计算数据(8位) ; 结果:CRC16H/CRC16L=计算后的CRC16值(16位) 16位CRC:生成CRC16表(256项),用于快速查表计算 在程序初始化时就先调用,预先生成CRC16Tab[256]查表数据 MCS51的CRC-16快速查表计算函数 ; 要预先生成CRC16查表数据,起始地址CRC16Tab,按高/低字节顺序存放(512字节) ; 调用:CRC16H/CRC16L=原CRC16值(16位,初始值为0000h),A=待计算数据(8位) ; 结果:CRC16H/CRC16L=计算后的CRC16值(16位) MCS51的CRC-8快速查表计算函数 ; 要预先生成CRC8查表数据,起始地址CRC8Tab,按顺序存放(256字节) ; 调用:B=原CRC8值(8位,初始值为00h),A=待计算数据(8位) ; 结果:B=计算后的CRC8值(8位) …………
1