bubulindo:
Eu tenho umas macros algures nuns ficheiros de código... quando as descobrir posto aqui.
Hoje tive tempo para brincar com o ATmega16... e descobri as tais macros.
#define SetB(PORT, BIT) ((PORT) |= 1<< (BIT))
#define ClrB(PORT, BIT) ((PORT) &= 1<< (BIT))
#define TogB(PORT, BIT) ((PORT) ^= 1<< (BIT))
Isto usa-se assim
SetB(PORTA, 0); //coloca o bit 0 do porto A a 1
ClrB(PORTB, 3); //coloca o bit 3 do porto B a 0