W tej funkcji:
uint8_t zapal bit (uint_8t nr);
typ funkcji
uint8_t, jak i typ argumentu funkcji
uint_8t mogły by być w zasadzie, każdego rodzaju z tych dostępnych w języku AVR GCC (no, prawie

, bo wykluczając oczywiście i
void i
bool), bo:
1) do funkcji, jako argument
nr będzie przekazywana cyfra z zakresu (w formacie dziesiętnym)
od 0 do 7, -
tj. binarnie 0000 0000 - 0000 0111,
2) a rezultatem zwracanym przez funkcję będzie maksymalnie (w formacie dziesiętnym)
liczba 128 -
tj. binarnie 1000 0000,
jak spojrzeć na typy, które masz przedstawione w dwóch tabelkach w rozdziale 3.3.1, w książce w tabelach:
- Tabela typów języka AVR GCC (str. 74)
- Tabela specyficznych typów AVR GCC (str. 75)
widać, że wszystkie spełniają założenia 1) i 2), ale gdyby zawęzić (biorąc pod uwagę na razie tylko wielkość typu, wystarczy nam 1 bajt (8 bitów)), bo chcemy zoptymalizować program, żeby niepotrzebnie nie był zbyt duży poprzez dobór odpowiedniej wielkości zmiennej, jak widać z poszczególnych tabel pozostają typy:
jak zauważyłeś m.in
char, oraz choćby
unsigned char,
uint_8t,
int_8t.
Ale idąc dobrym stylem programowania (tak mi się wydaje, że tym kierował się autor

dokonując takiego wyboru) wiemy, że nasze typy będą zarówno:
- tylko i wyłącznie liczbami (stąd typ z rodzaju
int),
- będą dodatnie - bo jak już wspomniałem:
uint_8t <--- cyferka z zakresu:
0-7, -
tj. binarnie 0000 0000 - 0000 0111,
uint8_t <---- maksymalnie w formacie dziesiętnym
liczba 128 -
tj. binarnie 1000 0000,
i najlepiej

na pierwszy rzut oka obrazuje to typ:
uint8_t - 1 bajt -
Zakres:
od
0 do
255 (w formacie dziesiętnym),
od
0000 0000 do
1111 1111 (w formacie binarnym).
A reszta opisu działania funkcji tego programu jest przedstawiona w okolicy tego kodu na 110 str, ale jakby coś nie jasne dalej było zapytać zawsze warto
