//Описание портов:
#define OWP1 (1 << PC0)
#define OWP2 (1 << PC1)
#define OWP3 (1 << PC2)
#define OWP4 (1 << PC3)
#define OWP5 (1 << PC4)
#define OWP6 (1 << PC5)
//Макроопределения для работы с портами:
#define Port_OWP_0(x) (DDRC |= x)
#define Port_OWP_Z(x) (DDRC &= ~x)
#define Pin_OWP(x) (PINC & x)
//Маски:
const __flash char Masks[CHANNELS] = {OWP1, OWP2, OWP3, OWP4, OWP5, OWP6};
//Обращение:
char m = Masks[n];
Port_OWP_0(m);
...
Port_OWP_Z(m);
...
if(Pin_OWP(m)) ...
...