Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Указатель на порт
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Decan
Доброго времени суток!

Есть массив структур:
Код
typedef struct
{
uchar volatile *port;
uchar bit;
} IND_HARDWARE;

__flash IND_HARDWARE ind_hw[] =
{ //{порт,бит}
  {&PORTC,0},
  {&PORTC,1},
  {&PORTC,2},
  {&PORTC,3},
  {&PORTB,4},
  {&PORTB,5}
};

На описанных лапах портов висят разные индикационные девайсы(светодиоды,пищалки).
Трабла в следующем. При попытке обратиться к порту таким образом:
Код
&(ind_hw[0].port)&=~(1<<(ind_hw[0].bit));

Компайлер ругается:
Error[Pe137]: expression must be a modifiable lvalue
Проблема именно с портом, поскольку матерится и в том случае, если вместо правой части стоит число.
Пробовал обратиться таким способом(уже методом тыка):
Код
ind_hw[0].port|=0x80;

Получил в ответ:
Error[Pe031]: expression must have integral type
Как правильно обращаться с указателем на порт?
Камень - атмега168.
zltigo
Цитата(Decan @ Jul 27 2008, 23:07) *
...бред, порождённый недостатком алкоголя в организме...

Ну тогда попробуйте похмелиться и разобрать написанное Вами smile.gif.
Начните с рассмотрения того, что представляют собой описания POTRx в хидерах.
Формальная причина ругани:
*(ind_hw[0].port)&=~(1<<(ind_hw[0].bit));
Ну потом самое главное - зачем вообще чесать правой ногой левое ухо?
sKWO
Цитата(Decan @ Jul 28 2008, 00:07) *
Как правильно обращаться с указателем на порт?

Впринцыпе ув. zltigo Вам уже ответил, но зачем изобретать велосипед если макросы, уж поверьте, убедился намного удобнее и эффективнее в Вашем случае будут.
если интерес ещё не пропал то обсуждение здесь - Разберитесь с макросами ReAl, и убедитесь. Удачи.
Decan
2 zltigo:
Спасибо, помогло.

2 sKWO:
Задача как раз и стояла, чтобы уйти от макросов. Но ссылка интересная, спасибо.
zltigo
Цитата(Decan @ Jul 28 2008, 14:09) *
Задача как раз и стояла, чтобы уйти от макросов.

Очень рекомендую посмотреть на листинг и увидеть какой мрак получили вместо трех команд при таком "уходе" sad.gif Если Вы кого и обхитрили,то только себя sad.gif
Decan
Цитата(zltigo @ Jul 28 2008, 16:40) *
Очень рекомендую посмотреть на листинг


Уже увидел...
Решено заменить макросы процедурами и создать массив указателей на них.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.