polak27 napisał(a):
Do funkcji przekazujemy adresy ASCII od 0x80 do 0x87. No i właśnie to są adresy w jakiej pamięci?
troszkę ci się pomyliło ale doprecyzowuję, to nie są żadne adresy - my do funkcji przekazujemy kod znaku - kod znaku ASCII. Gdyby nie to przemapowanie, które sobie tu wymyśliłem to trzeba byłoby przekazywać po prostu kody znaków od 0 do 7 - zgadzasz się ? Ale wtedy gdybyś chciał wyświetlić C-String ze znakiem ASCII o kodzie ZERO to co ?

.... to QUNIEC stringa

i trzeba byłoby takie znaki jakoś ręcznie ciapać gdzieś w kodzie .... a tak ?

.... a tak zobacz co się dzieje
Kod:
nr & 0x07
to załatwia nam sprawę, że jak wpada kod znaku np 0x80 ... to po tej operacji ile będzie ?

ano ZERO prawda ? tym MASKOWANIEM bo tak to się nazywa pozbywamy się tego przemapowania znaków.....
Za to później w kodzie można zrobić tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
zakładając że pod kodem 0x80 zdefiniowałeś sobie literkę ł

dostaniesz napis "
kołdra" zgadza się ?

a gdybyś zrobił tak:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
to pokazałby ci się jaki napis ???? ano taki: "
k" .... i koniec

bo zero to znak końca stringa - teraz rozumiesz po co to przemapowanie całe ?
------------------------ [ Dodano po: 1 minucie ]polak27 napisał(a):
Miałem też problem z tym, po co jest ta komenda *8 po nawiasie, ale chyba to rozgryzłem już. To jest polecenie, aby dla liczb z kolejnych adresów (/0x80, /0x81.../0x87) "wkładać" nowe wartości czyli nasze znaki do adresów: 0, 8, 16, 24, 32, 40, 48, 56. Gdyby tego nie było zapisywałoby od adresów (0,1,2,3,4,5,6,7) czyli wychodziłaby kaszanka. Czy dobrze myślę?
Bardzo dobrze to rozgryzłeś
------------------------ [ Dodano po: 4 minutach ]polak27 napisał(a):
I jeszcze ostatnia kwestia. Skąd wyświetlacz LCD wie jak przyjmować te wartości dla nowych znaków. Tzn. mamy wywołanie komendą lcd_write_cmd(...tu np. 0101 0000 co mówi, że zapisujemy w CGRAM od 16 bajtu czyli na 3 wolne pole) i teraz LCD jakiś czas czeka na te znaki, a my mu je podajemy dalej forem? Skąd on wie kiedy już koniec wpisywania tych znaków będzie?
Masz taką tabelkę komend do LCD w książce i wszędzie w necie - za pomocą odpowiednich bitów ale też linii RS mówisz wyświetlaczowi czy wysyłasz do niego KOMENDĘ czy DANE. Pomyśl jak włączysz wyświetlacz - zainicjalizujesz go - to możesz mu słać co sekundę jakiś kod ASCII np 65 czyli literkę "A" i będzie ona zapisywana po kolei do kolejnych komórek DDRAM ten kod a LCD będzie wyświetlał "A" ze swojego generatora znaków. Po co wyświetlacz ma wiedzieć kiedy koniec ?

czochra go to ..... on czeka na dane i pcha je do DDRAM. A jak chcesz coś innego to wysyłasz mu polecenie i każesz zrobić coś innego
co będzie na końcu to go nie interesuje.
A zatem jak w pętli wypchasz do LCD napisz "forum" to po kolei te znaki pojawią się na nim