Takže za 1.) ATmega8 je procesor z rodiny AVR (výrobca ATMEL, dnes už MICROCHIP) a pre túto rodinu tu je vytvorená téma, nepatrí do tejto , poprosím adminov o presun do správnej …
A ZA 2.)
PIN C3 nastavíš tak, že zapíšeš jednotku len priamo na PIN C3.
PORTC |= (1<<PC3) //nastaví PIN C3 do log1
Pre port D to je adekvátne, len pracuješ s portom D:
PORTD |= (1<<PD3) //nastaví PIN D3 do log1
- samozrejme musí byť nastavený ako výstupný.
K portu C (alebo D) pripočítaš logickým súčtom 1 na danom PINe, pričom ti to neovplivní ostatné PINy daného portu.
Pre nulovanie to je podobné:
PORTC &= ~(1<<PC3); //nastaví PIN C3 do log0
PORTD &= ~(1<<PD3); //nastaví PIN D3 do log0
Port (C alebo D) vynásobíš bitovým násobkom, kde všetky bity budú v log 1, iba bit, ktorý potrebuješ vynulovať bude v log 0.
Toto sú základy bitových operácii v jazyku C. Odporúčam naštudovať základy jazyka C napríklad v knihe od HEROUTa…