Есть массив структур:
Код
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}
};
{
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.