Priradenie mena portom v jazyku C

Jenom bych podotkl, že ta první varianta je jako ukázka použití AND v pořádku, ale v reálném kódu je třeba přečíst PINA do proměnné a teprve tu pak testovat.
Jinak totiž čteme PINA třikrát a mezi čteními se může hodnota na portu změnit.

[code]uint8_t temp;

temp = PINB & 0b00000011; // maska vynuluje všechny bity kromě PB0 a PB1
if(temp == 0) PORTD = 0;
if(temp == 0b01) PORTD = 1;
if(temp == 0b10) PORTD = 2;
if(temp == 0b11) PORTD = 3;
[/code]

definovať bitové polia si môžeš nie len po jednom bite ale i po viacerých.
Uvádzam príklad definovania času v rámci jedného wordu (z knihy Kadlec:“Učíme se programovat v jazyce C”, inak pre mňa jednoznačne najlepšia kniha pre naučenie sa C-cka.)

// pre sekundy bude použitých 5 bitov, 
//pre minúty šesť bitov a
//pre hodiny opäť 5 bitov.

typedef struct {
   unsigned sec : 5;
   unsigned min : 6;
   unsigned hod : 5;
} CAS;

CAS time;

time.sec = 20;
time.min = 13;
time.hod = 7;

A potom v rámci každej položky štruktúry pracuješ ako potrebuješ.