Sergio66 0 14 февраля, 2006 Опубликовано 14 февраля, 2006 · Жалоба Сдается мне, что *ptr++ инкрементирует не указатель, а саму переменную по адресу ptr!!! Сделайте так: ptr++ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Rst7 5 14 февраля, 2006 Опубликовано 14 февраля, 2006 · Жалоба У меня с Уартом в порядке, а вот при сравнении компилятор выдает ошибку char HexCom[9]; __flash char Status[] = "STATUS\0"; if (strcmp(HexCom, Status) == 0) response_sms(1); Error[Pe167]: argument of type "char __flash *" is incompatible with parameter of type "char const *" Логика компилятора железная - не совпадают типы. Пользуйтесь strcmp_P! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgeV 0 15 февраля, 2006 Опубликовано 15 февраля, 2006 (изменено) · Жалоба А на strcmp_P обругался! Он в каком хедере объявлен? Нашел. pgmspace.h Изменено 15 февраля, 2006 пользователем Георгий Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tech 0 15 февраля, 2006 Опубликовано 15 февраля, 2006 · Жалоба __flash char Status[] = "STATUS\0"; if (strcmp(HexCom, (char *)Status) == 0) response_sms(1); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GeorgeV 0 15 февраля, 2006 Опубликовано 15 февраля, 2006 (изменено) · Жалоба Только судя по листингам результат будет ошибочный. \ 000000C8 .... RCALL gsb_decoder \ 000000CA E026 LDI R18, 6 \ 000000CC .... LDI R17, LOW(Status) \ 000000CE .... LDI R16, HexCom \ 000000D0 .... RCALL strncmp \ 000000D2 2B01 OR R16, R17 \ 000000C8 .... RCALL gsb_decoder \ 000000CA E006 LDI R16, 6 \ 000000CC .... LDI R30, LOW(Status) \ 000000CE .... LDI R31, Status >> 8 \ 000000D0 .... LDI R26, HexCom \ 000000D2 .... RCALL strncmp_P \ 000000D4 2B01 OR R16, R17 В первом случае он возьмет байт по LD, а во втором по LPM Изменено 15 февраля, 2006 пользователем Георгий Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться