[an error occurred while processing this directive]
Хлопцы,помогите разобраться с CRC!
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено solaris 19 июля 2002 г. 11:06

Предполагаю использовать табличный метод.


void main (void)
{
uint r;
uchar len,temp;
uchar soob[10]={0x6d,0xb6,0xdb,0x01,0x35};
//CRC1
len = 0;
r=0;
do
{
temp = (uchar)((r >> 8) & 0xFF);
r = (r << 8) | soob[len];
r^= table[temp];
}
while (++len < 5);
soob[5] = (uchar)((r >> 8) & 0xFF);
soob[6] = (uchar)(r & 0xFF);
//CRC2
len = 0;
r=0;
do
{
temp = (uchar)((r >> 8) & 0xFF);
r = (r << 8) | soob[len];
r^= table[temp];
}
while (++len < 7);
Здесь table[temp] - таблица CRC16.

Здесь процедура CRC1 считает CRC контрольной последовательности из пяти байт затем прописывает полученный CRC в конец последовательности.Процедура CRC2 считает CRC уже всего массива из семи байт и полученный CRC вроде бы должен равняться нулю.У меня в результате получается не ноль.Может я чего не так делаю?

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru