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



Teraz jest 6 mar 2025, o 21:58


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
Autor Wiadomość
PostNapisane: 12 sie 2020, o 19:33 
Offline
Użytkownik

Dołączył(a): 03 sie 2017
Posty: 94
Pomógł: 0

Witam, zaczałem właśnie czytać temat o wyświetlaczach graficznych i nie rozumiem jednej funkcji.
(X1= 320)

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


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


Nie rozumiem jak działa zapis Write_data(X1>>8) i Write_data(X1), bo przecież liczba X1 jest dużo większa od maksymalnej pojemności zmiennej data w funkcji Write_data( przecież tam jest uint8_t więc max. to 255)

Jeśli byłby ktoś tak dobry to proszę o rozrysowanie tej ostatniej funkcji na kartce( w sensie przesunięcia bitowe). Będę wdzięczny:)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sie 2020, o 20:35 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 23 paź 2014
Posty: 1033
Lokalizacja: Trójmiasto
Pomógł: 190

Na początek fakty:
zmienna X1 jest typu int czyli 16 bitów
zmienna argument funkcji Write_data jest typu uint8_t.
I teraz zapis Write_data(X1>>8) powoduje ni mniej ni więcej przesunięcie w prawo o 8 pozycji zmiennej X1 i przekazanie 8 najmłodszych bitów (a niejako przez wcześniejsze przesunięcie 8 najstarszych zmiennej X1) do funkcji, jako że jej argument jest 8-bitowy to z automatu brana jest tylko część najmłodsza.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W drugim zapisie Write_data(X1) dziej się tak samo, tzn. brana jest tylko najmłodsza część zmiennej X1, ale tu jest przekazywana bez przesunięcia.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Podsumowując w pierwszym wywołaniu funkcji dzięki przesunięciu jest wysyłany starszy bajt zmiennej X1, w drugim młodszy.


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 sie 2020, o 21:14 
Offline
Użytkownik

Dołączył(a): 03 sie 2017
Posty: 94
Pomógł: 0

Super, już rozumiem.
Dziękuję 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: 3 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 6 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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO