Table of Contents

Lucrul cu registrele la nivel de bit

În cazul ATmega 324, registrele sunt pe 8 biți. Majoritatea biților un anumit rol, documentat în datasheet, și pot fi folosiți în următoarele scopuri:

O operație pe biți este o operație care afectează unul sau mai mulți biți dintr-un câmp de biți sau din reprezentarea binară a unui număr. Deoarece aceste acțiuni sunt suportate direct de către microcontroller, ele sunt cu mult mai eficiente decât operațiile de împărțire, înmulțire și chiar decât adunare.

Operații pe bytes

Operație Formă
Scriere bit pe 1
Byte |= (1 << Bit_index)
Scriere bit pe 0
 Byte &= ~(1 << Bit_index) 
Toggle bit
 Byte ^= (1 << Bit_index) 
Selectare bit
 Byte & (1 << Bit_index) 

Shiftare dreapta

Shiftarea la dreapta mută fiecare bit al operandului spre dreapta cu un număr de poziții. Operandul din dreapta reprezintă numărul de biți cu care se face shiftarea operandului din stânga. Dacă este nevoie, se adaugă zerouri la stânga numărului pentru a îi menține dimensiunea.

Exemple:

Shiftarea la dreapta poate fi folosită pentru a împărți un număr binar la 2 (sau puteri ale lui 2) într-o singură operație. Exemplu: 1010 >> 1 = 0101, unde:

Shiftare stânga

Shiftarea la dreapta mută fiecare bit al operandului spre stânga cu un număr de poziții. Operandul din dreapta reprezintă numărul de biți cu care se face shiftarea operandului din stânga. Dacă este nevoie, se adaugă zerouri la dreapta numărului pentru a îi menține dimensiunea.

Exemple:

Shiftarea la stânga poate fi folosită pentru a înmulți un număr cu 2 (sau puteri ale lui 2) într-o singură operație. Exemplu: 0011 << 1 = 0110, unde:

Măști pe biți

O mască pe biți reprezintă un câmp de biți folosit pentru a seta / șterge mai mulți biți dintr-un alt câmp de biți într-o singură operație.

Greșeli frecvente în lucrul cu biți