Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
/** \brief updates MMC CRC16 value crc_old with data \ingroup params_mmc */
uint16_t crc16_mmc_upd(uint8_t data, uint16_t crc)
{uint8_t cnt_bits, flag_xor;
for (cnt_bits = 8; cnt_bits; cnt_bits--)
{flag_xor = ((crc >> 8) & 0x80) ^ (data & 0x80);
data <<= 1;
crc <<= 1;
if (flag_xor) crc ^= 0x1021;
}
return(crc);
}
uint8_t data_buf[] = { /*0xfe,*/ 0x6F, 0xFF, 0xFF, 0x53, 0x4D, 0x49, 0x20, 0x20, 0x20, 0x11,
0x61, 0x40, 0x01, 0x08, 0x49, 0x27, };
int main(int argc, char *argv[])
{uint16_t bcnt_01, crc_01;
uint8_t crc_02;
crc_01 = 0;
for (bcnt_01=0; bcnt_01!=sizeof(data_buf); bcnt_01++) crc_01 = crc16_mmc_upd(data_buf[bcnt_01],crc_01);
printf("%x\n", crc_01);
system("PAUSE");
return 0;
}