Reklama

Bitové operace nejen pro mikrokontroléry AVR

Úvod

V tomto příspěvku si ukážeme jednoduché bitové operace, které jsou velmi důležité např. pro ovládání jednotlivých pinů Portu, nebo pro práci s jednotlivými bity registrů. Pokud tedy chceme pracovat pouze s bitem registru, nebo s jednotlivým pinem Portu a přitom neovlivnit ostatní bity, tak se využívají funkce bitový AND, bitový OR a bitový exkluzivní součet XOR.

 
Pokud chceme na daný bit nastavit stav log. 1, tak se využije funkce bitový OR.
 
PORTA |= 0b00000011;
 
Tímto nastavíme poslední dva bity do stavu log. 1 a ostatní bity necháme nezměněné.
 
Pokud chceme daný bit vynulovat, využijeme funkci bitový AND.
 
PORTA &= 0b11111100;
 
Nyní naopak nastavíme poslední dva bity do stavu log. 0 a ostatní bity necháme nezměněné.
 
Pokud chceme negovat bit, tak to lze udělat bitovým exkluzivním součtem XOR.
 
PORTA ^= 0b00000011;
 
Tento zápis poslední dva bity zneguje.
 
Také může nastat situace, kdy chceme negovat celý registr, nebo jinou hodnotu. Negování lze provést pomocí znaku ~.
 
PORTA = ~PORTA;
 
Jako poslední si ukážeme, jak lze posouvat bity vlevo, nebo vpravo. Pro názornou ukázku použijeme neznaménkovou 8b proměnnou z Atmel Studia uint8_t.
 
uint8_t value;
 
value = 0b00000101;
PORTA = (value << 2);
 
Tímto jsme posunuli vlevo bity proměnné value o počet pozic udaných vpravo, tzn. že nastavíme na PORTA hodnotu 0b00010100.
 
Stejným způsobem lze provést posunutí vpravo, s tím rozdílem, že změníme směr šipek.
 
uint8_t value;
 
value = 0b00010100;
PORTA = (value >> 2);
 
Nyní jsme nastavili na PORTA hodnotu 0b00000101.

 
 
Aktualizace: 28.10.2014

Následující a předchozí příspěvek v kategorii:

 

Předchozí: Zjištění zdroje resetu pro mikrokontrolér ATmega32
Další: Barevný LCD displej s řadičem ST7735S řízený mikrokontrolérem ATmega

 
Tajned facebook
 

Za případné chyby v textu, ve zdrojovém kódě, nebo ve schématickém zapojení se omlouváme.
AUTOŘI NEBEROU ŽÁDNOU ODPOVĚDNOST ZA PŘÍPADNÉ ÚJMY NA ZDRAVÍ ČI MAJETKU.