Jeden bit przechowuję informację 0 lub 1.
Co daje 0V=0 logiczne lub prawie pełne zasilanie procesora 5V=1 logiczna ( dla procesorów zasilanych 5 woltami ).
Jeden bajt to osiem bitów. Poniżej w tabeli jest rozpis jak przełożyć liczby dzisiętną na zapis HEX oraz Bin.
Dec
HEX
Bin
0
0x00
0b0000
1
0x01
0b0001
2
0x02
0b0010
3
0x03
0b0011
4
0x04
0b0100
5
0x05
0b0101
6
0x06
0b0110
7
0x07
0b0111
8
0x08
0b1000
9
0x09
0b1001
10
0x0A
0b1010
11
0x0B
0b1011
12
0x0C
0b1100
13
0x0D
0b1101
14
0x0E
0b1110
15
0x0F
0b1111
...
...
...
127
0x7F
0b01111111
128
0x80
0b10000000
129
0x81
0b10000001
...
...
...
255
0xFF
0b11111111
Podstawowe oreracje logiczne na bitach.
| to operacja OR
0 OR 0 = 0 0 OR 1 = 1 1 OR 0 = 1 1 OR 1 = 1
& to operacja AND
0 AND 0 = 0 0 AND 1 = 0 1 AND 0 = 0 1 AND 1 = 1
~ to operacja NOT
0 NOT = 1 1 NOT = 0
^ to operacja XOR
0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0
Operacje ustawiania i kasowania bitów w bajcie oraz sprawdzanie jaki stan ma określony bit w bajcie.
BYTE - zmienna 8 bitowa, rejest lub brama w procesora
Operacje ustawiania jednego bitu
Dane wejsciowe
Operacja
Dane wyjsciowe
0b 1111 0000
BYTE |= (1<<2);
0b 1111 0100
Operacje ustawiania jednego bitu z kasowanie pozostałych
0b 1111 0000
BYTE = (1<<2);
0b 0000 0100
Operacja ustawiania kilku bitów
0b 1000 0001
BYTE |=(1<<6 | 1<<5 | 2<<1);
0b 1110 0101
0b 0000 0000
BYTE |=(7<<0);
0b 0000 0111
0b 0000 0000
BYTE |=(0b111<<0);
0b 0000 0111
Operacja ustawiania kilku bitów z jednoczesnym ksasowaniem pozostałych
0b 1000 0001
BYTE =(1<<6 | 1<<5 | 2<<1);
0b 0110 0100
Operacje kasowania bitu, bitów
0b 1000 1001
BYTE &=~(1<<3);
0b 1000 0001
0b 1111 1111
BYTE &=~(1<<6 | 1<<5 | 2<<1);
0b 1001 1011
Operacje negowania bitów
0b 0000 0001
BYTE ^=(1<<7|1<<0);
0b 1000 0000
Sprawdzenie czy bit 7 = 1
0b 1011 1111
if (((BYTE >> 7) & 1 ) == 1 )
tak
Sprawdzenie czy bit 6 = 0
0b 1011 1111
if (((BYTE >> 6) & 1 ) == 0 )
tak
Operacje na portach w Atmega. Operacje czytania i zapisu w poniższych przykładach tyczy się danych cyfrowych a nie analogowych.