Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 9 kwi 2026, o 13:16


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 14 gru 2013, o 19:52 
Offline
Użytkownik

Dołączył(a): 27 lis 2013
Posty: 25
Lokalizacja: Legionowo
Pomógł: 3

Witam otóz mam problem z zrozumien funkcji z ksiązki dokładnie chodzi mi ostrony 109-119 oprócz stosu.
I na stronie jest 110 jest program zapalający diode i mam problemy z takimi funkcjami:

Uint8_t zapal_bit(uint8_t nr); dlaczego deklaruje za pomoca uint8_8 a nie char ? Albo jakby ktoś wytłumaczył cały ten program dlaczego tak a nie inaczej lub jakoś odwołać się do asemblera ale w miare prosty sposób bo znam tylko podstawy z 8051. Proszę my wybaczyć ale nigdy nie miałem styczności z C i dopiero się uczę, pętle zrozumiałem i reszte, ale tego nie mogę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 14 gru 2013, o 21:20 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 07 gru 2012
Posty: 56
Lokalizacja: Praszka
Pomógł: 1

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 ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2013, o 14:21 
Offline
Użytkownik

Dołączył(a): 27 lis 2013
Posty: 25
Lokalizacja: Legionowo
Pomógł: 3

A skąd sie wzięło o to:
uint8_t zapal_bit (uint8_t nr)
{
uint8_t temp;
temp =(1<<nr);
return temp;
}

Return dokąd zwraca swoją wartość ?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 gru 2013, o 14:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 10 mar 2013
Posty: 739
Lokalizacja: Poznań
Pomógł: 84

Return zwraca wartość na zewnątrz funkcji.
Obrazowo mówiąc:
jest jakaś funkcja

uint8_t jakas_FUN (int coś)

wywołanie tej funkcji
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

to return z funkcji odda wartość w miejsce swojego wywołania
to znaczy wartość zostanie przypisana w tym przypadku zmiennej aa

Mam nadzieję że nie zamotałem tego za bardzo :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 7 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO