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



Teraz jest 15 lut 2025, o 17:46


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 20 lut 2019, o 22:58 
Offline
Użytkownik

Dołączył(a): 12 sty 2016
Posty: 34
Pomógł: 0

Cześć , nie rozumiem za bardzo fragmentu kodu z Bluebooka S.220 , funkcja do definicji własnego znaku na LCD z pamięci RAM.
Chodzi mi o fragment kodu funkcji lcd_defchar , a konkretnie jak działa argument w funkcji :

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


64 dlatego , że ustawiamy bit D6 - CGRAM set , no i dalej nie rozumiem , dlaczego występuje mnożenie razy 8 ?

Np. nr=0x81 , po wykonaniu działania w nawiasie mamy 0x08 dodajemy 64 i jest 0x48 czyli binarnie 01001000 - bit D6 jest ustawiony (CGRAM set) , natomiast jak to jest z bitami od D0 do D5 które odpowiadają za adres w pamięci , bez przemnożenia to mi pasuje :
bo mam dla 0x81 , binarnie 01000001 czyli adres pierwszej komórki pamięci.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 lut 2019, o 20:22 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

Poniżej tej linii jest pętla for która wpisuje pod kolejne 8 adresów 8 bajtów (adres jest inkrementowany automatycznie) dlatego mnożymy razy 8.


Autor postu otrzymał pochwałę

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2019, o 13:59 
Offline
Użytkownik

Dołączył(a): 12 sty 2016
Posty: 34
Pomógł: 0

Proszę mnie poprawić jeśli się mylę , pomnożenie przez 8 powoduje przesunięcie o 3 w lewo i powoduje , że adresy znaków będą
zapisane w bitach D5-D3 , zamiast D2-D0.

Po przemnożeniu *8 adresy zostaną zapisane w bitach D5-D3:

0x80 01000 000
0x81 01001 000
0x82 01010 000
0x83 01011 000
0x84 01100 000
0x85 01101 000
0x86 01110 000
0x87 01111 000

Bez mnożenia * 8 adresy zostaną zapisane w bitach D3-D0:

0x80 01000 000
0x81 01000 001
0x82 01000 010
0x83 01000 011
0x84 01000 100
0x85 01000 110
0x86 01000 110
0x87 01000 111



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2019, o 14:02 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27359
Lokalizacja: Szczecin
Pomógł: 1042

panie kolego, toż definicja jednego znaku w CGRAM zajmuje 8 bajtów, a więc przesyłając numerek znaku od 0 do 8 masz wprost wybieranie adresu co 8 bajtów na każdy znak


Autor postu otrzymał pochwałę

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2019, o 09:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1448
Lokalizacja: okolice Warszawa
Pomógł: 149

Dla rozjaśnienia, mam nadzieję.
Zatrzymaj się na słowie 'adres * 8'.
Nie adres nóżki, czyli nie zawartość bajtu razy 8,
tylko adres pod którym te wartości są w pamięci. :)
Czyli osiem bajtów dalej, a nie bajt razy osiem. ;)
Pozdrawiam.

Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka


Autor postu otrzymał pochwałę


Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2019, o 10:02 
Offline
Użytkownik

Dołączył(a): 12 sty 2016
Posty: 34
Pomógł: 0

Teraz już rozumiem jak to działa , dziękuję za pomoc.



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: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Bing [Bot] i 3 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