Цитата(TamTam @ Mar 25 2007, 11:30)

Так как в МК который искользую уже сейчас крайне нехватает памяти подскажите как грамотнее всего сравнить данные которые приходят из варта
данные типа АТ команд
формат такой XXX XXX XX
первые 3 команда
вторые 3 код и адрес устройства
полседние 2 состояние и ЦРЦ
Как по приходу данных впорт с наименьшими затратами обаботать пакет ?
Задача далеко не простая, как может показаться поначалу. Умным словом она называется "парсинг". Сначала необходимо грамотно построить собственно процедуру приёма команды. В потоке байт, идущих с УАРТа, необходимо выделять начало командной строки. Если об этом не позаботиться, а просто укладывать каждые 8 байт для анализа - после первого же сбоя все дальнейшие команды будут неверными. Если это АТ-команды, то признаком начала (маркером) служит последовательность символов "АТ", после которых идёт собственно команда. Если такого маркера нет (а судя по вашему описанию его нет), тогда нужны обязательные таймауты между командами, или же необходимо будет данные с УАРТа укладывать в сдвиговый буфер и после приёма КАЖДОГО байта применять процедуру парсинга (разбора) последних 8 байт - "уж не команда ли принята в моём буфере?"
Теперь собственно парсинг (разбор) ваших команд.
1. Сначала CRC - если ОК - идём дальше - если CRC не совпадает, прекращаем разбор.
2. Анализ адреса. Если команда адресована не нам - прекращаем разбор.
3. Анализ команды. Если команда невалидна - прекращаем разбор, если распознана - выполняем команду.
Экономить память здесь не на чём. Все расходы по ней - сдвиговый буфер приёма 8 байт - всё остальное можно сделать на регистрах.