Bascom - czytanie znakow z tabeli

Mam taki problem, jest sobie wyswietlacz z N3310 zapiety do AVR ATmega8535 ... wszystko ladnie pieknie ...

w sekcji "data" mam wpisane czcionki .... wykombinowalem sobie taki programi ktory pobiera pewien ciag znakow typu string , czyta je zank po znaku i wysyla an LCD ..niestety nie dziala :(

Napis = "NAPIS" X3 = Len(napis) For V = 1 To X3 L1 = Mid(napis , V , 1) For L2 = 1 To 6 Ud = Lookup(l2 , L1) Udata Ud Next L22 Next V

Pytanie co jest nie tak ewentulanie jak wy sobie z takim problemem radzcie aby wypisac dowolny wyraz na taki LCD ?

Reply to
invalid unparseable
Loading thread data ...

Robgold napisał(a):

patrz powyzej, moze ta glupia literowka jest powodem ?

Reply to
BartekK
Reply to
invalid unparseable

Robgold <robgold ANTYSPAM @interia.pl> napisał(a):

..

Funkcja RESTORE , zawsze zeruje index na tablicę , czyli pobieranie danych z tablicy przez READ , w każdym przypadku rozpoczynasz od 1-go elementu.

Jeden z możliwych sposobów: 'Utórz zmienną 10 znakową typu STRING(kompilator zarezerwuje 11 bajtów , bo STRING ZAWSZE jest zakończony "0"), oraz tablicę , która zjamuje ten sam obszar RAM-u co zmienna "Napis".Umożliwia to , bezpośredni dostęp do znaków w STRING-u jak do bajtów. Dim Napis As String * 10 At $60 , Tabela(11) As Byte At $60 Overlay Dim A As Byte , B As Byte , C As Byte , D As Byte Const Maxstring = 11 'maksymalny zadeklarowany rozmiar zmiennej "napis" +1 Napis = "gfedcba"

For A = 1 To Maxstring B = Tabela(a) If B = 0 Then Exit For 'koniez znaków w zmiennej "napis" B = B And &HDF 'skonwertuj do Upper B = B - 65 'odejmij bazę B = B * 6 'oblicz index dla tablicy Asci2 For C = 0 To 5 D = Lookup(b , Asci2) 'to_LCD(D) 'wyślij kolejno na LCD , 1...6 bajtów definicji znaku Incr B Next C Next A ;---------------- I to wszystko ;-)

Piotrek

Reply to
Piotrek Sz.
Reply to
invalid unparseable

Robgold <robgold ANTYSPAM @interia.pl> napisał(a):

..

A w czym problem ?? Byłbym zapomniał ;) Jakiego uC wykorzystujesz ??

Zadeklaruj zmienna "Napis" o takiej długości , jaką ma najdłuższy napis do wyświetlenia np. Dim Napis As String * 50 At $60,Tablica(51) As Byte At $60 Overlay.

Za cho...ę nie kumam co ta procedurka ma robić ??

W ramie będzie : TEMPERATURA i na końcu "0" (zero)

Wiadomo ...

To też ...

Dla V1=1 -> L1=&H54 czyli literka "T"

Kolejna pętelka ...

I tu , gdybyś nawet mógł pobrać bajt z L1, to index(L2) wynosi &H54(dec84) i w "Ud" masz krzaki !!!

Aby "dobrać" się do odpowiedniej etykiety , gdzie umieściłeś "czcionkę" dla "literek" , to musiałbyś zastosować mnuuuuustwo CASE

Zrobisz jak zechcesz , ale ja nie widzę żadnego problemu. Zawsze też do dyspozycji stoi kod w Asm. Pamiętaj że:"Najlepsze rozwiązanie , to proste rozwiązanie ..."

Pzdr Piotrek

Reply to
Piotrek Sz.
Reply to
invalid unparseable

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.