Più precisamente viene eseguita l'istruzione
- Codice: Seleziona tutto
a << 1;
che a mio avviso dovrebbe invece essere
- Codice: Seleziona tutto
a <<= 1;
oppure (che equivale ma più lenta)
- Codice: Seleziona tutto
a *= 2;
Ti riporto quindi la funzione corretta:
- Codice: Seleziona tutto
unsigned char getMaschera(unsigned char bitIndex, unsigned char stato)
{
unsigned char a = 1;
unsigned char b;
for (b = 0; b < bitIndex; b++) //Fino a quando b < bitIndex.
{
a <<= 1; //Sposta tutti i bit a sx di una posizione.
}
if (stato)
{
return a; //Se devo accendere il led restituisco a ha tutti i bit a 0
} //tranne quello di indice bitIndex che è a 1.
return !a; // altrimenti il suo negato,
} //(mette i bit a 1 a 0 e viceversa).
Senza questo correzione getMaschera torna sempre 0 e quindi non accendi mai i led.
Fammi sapere.

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)






