Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
Саму функцию я записал так:
char acc=0; // здесь я хочу получить контрольную сумму Результат выполнения АСС=0х33.
char CheckCRC (char *buf, char len)
{
char tmp;
for (tmp=0; tmp
if (buf[tmp]=='*') break;
acc ^= buf[tmp];
}
buf += tmp;
buf++;
tmp = (acc & 0xF0) >> 4;
if (tmp<0x0A) tmp |= '0';
else tmp += 'A'- 0x0A;
acc &= 0x0F;
if (acc<0x0A) acc |= '0';
else acc += 'A'- 0x0A;
if ((tmp!=*buf++) && (acc!=*buf)) return 1;
return 0;
}//CheckCRC
Ответы