[an error occurred while processing this directive]
Хлопцы,помогите разобраться с CRC!
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
|
Отправлено
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