Sei un po' confuso sui tipi di dato ...
Un char non può contenere il valore B1 o B0, etc ...
Inoltre credo che a port non debba essere assegnato il valore A ma il carattere 'A' (ma questa è una piccolezza)...
Naturalmente potrei sbagliarmi: se ad esempio A è una costante come pure B0, etc.
In questo caso non ti resta che postare il codice completo oppure tutto il main con tutte le costanti globali e le macro ...
codice:
struct io
{
char port;
char bit;
};
struct io conf = {'A', 4}, en = {'A', 5}, oimp = {'A', 0}, film = {'A', 1};
//Questa è la funzione:
char read(struct io x)
{
char ret=0;
switch(x.port)
{
case 'A':
ret=(PINA &x.bit);
break;
case 'B':
ret=(PINB & x.bit);
break;
case 'C':
//ret=(PINC & x.bit);
break;
case 'D':
//ret=(PIND & x.bit);
break;
}
return ret;
}