Programowanie progesorów Atmela z wykorzystaniem kompilatora GCC

Operacje na bitach w gcc

0102 /03
04Jeden 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.
06
070809

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

0102 /03
04Podstawowe oreracje logiczne na bitach.06
070809

| 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

0102 /03
04Operacje ustawiania i kasowania bitów w bajcie oraz sprawdzanie jaki stan ma określony bit w bajcie.06
070809

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

0102 /03
04Operacje na portach w Atmega. Operacje czytania i zapisu w poniższych przykładach tyczy się danych cyfrowych a nie analogowych.06
070809

Ustawienie portu
4 pierwsze bity IN DDRx = 0b 0000 1111; 4 ostatnie OUT

Podciągnięcie rezystorów w wejściach
4 bity z rezystorem DDRx = 0b 0000 0000;
PORTx = 0b 1111 0000;
4 ostatnie bity bez

Wysyłanie danych na port
4 bity = 1 DDRx = 0b 1111 1111;
PORTx = 0b 1111 0000;
4 ostatnie = 0

Czytanie danych z port
BYTE = PORTx;

Dasej (C) 2019 : 4222