Re: CRC16 Modbus отличие
unsigned int modbus_crc16(void *adr, unsigned char len)
{
unsigned char *pcBlock;
unsigned int crc, t;
unsigned char i;
crc=0xFFFF; pcBlock=adr;
while (len--)
{
t=*pcBlock++;crc=crc^t;
for (i=0;i‹8;i++) {if (crc&0x0001) {crc=crc››1;crc=crc^0xA001;} else crc=crc››1;}
}
return crc;
}
это в CodeVision. указатель pcBlock для указания компилятору что тип данных char (т.е. 1 байт)
adr - указатель на объект (строка, структура и тд, т.е. адрес начала объекта в памяти)
len - размер объекта в байтах (напр sizeof(МояМегаПосылка))
для отладки мне понравился arOPC.
|