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



Teraz jest 22 lis 2024, o 10:47


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 4 ] 
Autor Wiadomość
PostNapisane: 17 lip 2015, o 21:02 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 06 maja 2015
Posty: 14
Pomógł: 0

Cześć w BB wydanie I jest taki oto (kawałek) kodu:

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



I mam pytanie odnośnie linijki 11

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


Czy w tym miejscu nie powinno byc przesunięcia bitowego w lewo tzn. tak:

lcd_sendHalf(_data<< 4);

Pytam bo mam wątpliwość w książce jest napisane, że przesyłamy starszą część bajtu czyli bity D7...D4 a z tego przykłady rozumiem, to tak:

np mamy zmienną _data opisaną wartością:

11011100

część starszą bitu zaznaczyłem na czerwono, młodsza na niebiesko.
Więc po przesunięciu bitowym o 4 miejsca w prawo będzie:
00001101

A więc starszą część wyzerujemy i czy takie działanie jest poprawne, nie powinniśmy wyzerować młodszej części ??

_________________
Dopiero się uczę ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2015, o 21:21 
Offline
Użytkownik

Dołączył(a): 25 lut 2015
Posty: 252
Lokalizacja: Lublin
Pomógł: 23

Rozwiązanie Twojego dylematu leży w kodzie wywoływanej funkcji, tzn. 'lcd_sendHalf'

------------------------ [ Dodano po: kilkunastu sekundach ]

A kod w książce jest oczywiście poprawny, żeby nie było wątpliwości.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2015, o 21:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 29 sty 2012
Posty: 777
Lokalizacja: Karpicko k. Wolsztyna
Pomógł: 197

Spójrz na funkcję lcd_sendHalf. W jej wnętrzu "próbkowane" są cztery najmłodsze bity wysyłanego bajtu. Więc żeby wysłać cztery starsze bity trzeba je najpierw przesunąć w prawo tak aby się znalazły w miejscu "próbkowanych" młodszych bitów.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 lip 2015, o 21:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 31 mar 2015
Posty: 310
Pomógł: 18

major697 napisał(a):
A więc starszą część wyzerujemy i czy takie działanie jest poprawne, nie powinniśmy wyzerować młodszej części ??

Wartość _data jest niezmienna, natomiast wynik operacji przesunięcia(dzielenia przez 16) jest liczbą całkowitą (część ułamkowa idzie w zapomnienie). Przy przekazaniu na LCD młodszej części _data dokonuje się maskowania(zakrycia zerami) części starszej niezmiennej _data .



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 2 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