Цитата(cyb @ Sep 15 2011, 21:09)

static __io struct
{
..
} _PORTA @ 0x21;
Ругается так:
Error [e46]: Undefined external reference _PORTA (../../../xxx.d90)
Посмотрел я новый iomacro, там тоже самое!
попробуйте static убрать! должно работать.
либо добавить обертку
Код
__io union {
struct {
..
} _PORTA;
} @ 0x21;
Код
#define SYNC_O _PORTA._P6
можно и эти #define заменить.
Цитата(cyb @ Sep 16 2011, 13:37)

В общем идёт так:
В заголовке определяется:
static volatile __io struct
{
BYTE _P0:1, _P1:1, _P2:1, _P3:1, _P4:1, _P5:1, _P6:1, _P7:1;
} _PING @ 0x63;
Далее переопределяется в другом заголовке так:
#define ADCDOUT2_O _PORTG.P2
#define ADCDOUT2_I _PING.P2
#define ADCDOUT2_C _DDRG.P2
#define ADCDOUT2_M (1 << P2)
а где подчеркивания? должно быть
#define ADCDOUT2_O _PORTG._P2
Цитата(cyb @ Sep 16 2011, 13:37)

Ну вот я и попробовал сделать так:
#define ADCDOUT2_O PORTG.P2
#define ADCDOUT2_I PING.P2
#define ADCDOUT2_C DDRG.P2
#define ADCDOUT2_M (1 << P2)
Но компилятор засыпал ошибками на таких условиях
if(ADCDOUT2_I) _Bytes[2] |= 0x80;
Error[Pe133]: expected a member name D:\WORK\PROJECTS\KP01\CybVe_newIAR\TAD7714.cpp 28
нужно PORTG_PORTG2 и т.п.
и не понятно что значит
(1 << P2)