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
Předchozí: Zjištění zdroje resetu pro mikrokontrolér ATmega32
Další: Barevný LCD displej s řadičem ST7735S řízený mikrokontrolérem ATmega
AUTOŘI NEBEROU ŽÁDNOU ODPOVĚDNOST ZA PŘÍPADNÉ ÚJMY NA ZDRAVÍ ČI MAJETKU.
Komentáře