PCF8574 duvida

Com array é menos eficiente... algo como:

#define P0   0x1
#define P1   0x2
#define P2   0x4
#define P3   0x8
//completa o resto

void expanderBitWrite( unsigned char bit, unsigned char value) {

unsigned char status = expanderRead(); //deve haver uma destas funcões para ler o estado do registo

if (value == HIGH) expanderWrite(status | bit); 
else expanderWrite(status &~(bit));

}