Efektivní převod na binární hodnoty - winavr / C

Ahoj, potřeboval bych v Céčku vyřešit následující - mám unsigned char proměnnou a potřeboval bych její 0. bit převést na pinA1, 1. bit na pinA2, 2. bit na pinA3 a 3. bit na pinA4. Nechce se mi to dělat ručně case / ify, určitě to jde nějak efektivněji, ale nejsem v c moc zběhlý - poradíte někdo pls? Díky.

:arrow_right: administrator: přesunuto z "Ostatní"

Tedy bity 0:3 z čísla poslat do registru PINA (né PORTA?) na 1:4?
PINA &= ~(0x0F<<1); // vynuluje bity PINA1:4
PINA |= ((promenna & 0x0F)<<1); // nastaveni “1” bitů z dolních 4b proměnné na “1” v PINA1:4

Nejde náhodou o AVR? Ikdyž je pravda, že je to obecné.

dík, ano jde o avr, ale myslel jsem to jako obecný příklad

Pokud jde opravdu o AVR, tak zápis do registru PIN má smyls pouze na negování výstupu (u některých typů). V tomto konkrétním případě můžeš první řádek vynechat. Pokud bys to chtěl zapisovat na port (nikoli dělat negaci zápisem do PIN), tak by tam ten první řádek zůstat musel.