|
uint crc16l(uchar *ptr,uchar len) // ptr 为数据指针,len 为数据长度
{
uchar i;
while
(len--)
{
for(i=0x80; i!=0; i>>=1)
{
if((crc&0x8000)!=0) {crc<<=1; crc^=0x1021;} 1-1
else crc<<=1; 1-2
if((*ptr&i)!=0) crc^=0x1021; 1-3
}
ptr++;
}
return(crc);
}
我对1-1 1-2 1-3 行不是很懂,能讲解一下吗,想了很久还是没结果,麻烦你了
单片机通信系统中CRC算法与硬件环境编程的实现(pdf),根据第七个方程编出以上代码,我很不理解
|
|