Wie sieht's bei der Verwendung von LCDAT aus?
Auch wenn's etwas peinlich ist, ich muss mich nochmal korrigieren: allein das Entfernen von $baud löst das Grafikproblem (nicht aber das Textproblem). Beim Rumprobieren im Code hatte ich dann doch Ce und Ce2 noch vertauscht, daher wurde die Grafik immernoch leicht vermüllt angezeigt. Sorry für den Umweg.
Auch wenn ich nur den tatsächlichen Takt (über Fuses) runterstelle und die $crystal Angabe lasse, habe ich den Darstellungsfehler bei Text (Befehl "LCD").wäre noch die Frage, ob Du nur den Takt per Fuse runtergestellt hast
Wie sieht's bei der Verwendung von LCDAT aus?
"LCDAT" funktioniert tadellos. Etwas irritierend, dass "LCD" nicht geht, aber damit ist das Problem zumindest erstmal praktisch gelöst. Wobei ich auch nochmal in älteren Programmen von mir geguckt habe, ich habe bisher immer "LCDAT" verwendet, es war also eher ein zufälliger "Flüchtigkeitsfehler" hier "LCD" zu probieren... Naja, wie auch immer, auf jeden Fall vielen Dank nochmal!
Gruß
Malte
Geändert von malthy (29.06.2013 um 13:03 Uhr) Grund: typos
Die Bascom Hilfe ist da nicht ganz eindeutig bezüglich LCD, ich würd's so lesen, dass LCD sowohl auf Text-, als auf Grafik-Displays verwendbar ist. Andererseits wird in den Beispielen zum Grafik-Display ausschließlich LCDAT verwendet, was ein Hinweis sein könnte. Du könntest ein zusätzliches Locate vor LCD reinsetzen und schauen was passiert.
Bitte
Das hatte ich probiert, der Effekt bleibt der gleiche, der Text erscheint trotz locate "irgendwo". Wobei "irgendwo" auch nicht ganz richtig ist, denn es gibt eine mehr oder weniger regelmäßige Verschiebung. Ich war allerdings zu faul die "Regel" zu ergründen. Hatte auch nochmal in der Bascom Hilfe gelesen, ja, das ist dort nicht so wirklich eindeutig dargestellt. Aber die Hilfe ist ja ohnehin nicht immer so dolle .Du könntest ein zusätzliches Locate vor LCD reinsetzen und schauen was passiert.
Nach Untersuchung der KS108 Lib ist des Rätsels Lösung folgende:
Bei Verwendung von LCD werden die internen Variablen ___LCDROW & ___LCDCOL nicht initialisiert, auch das CLS setzt die nicht zurück. Allerdings macht LCD da weiter, wo LCDAT aufgehört hat, eben weil LCDAT diese Variablen setzt.
Ein:
dürfte also funktionieren. Es könnte einen gewissen Nutzen haben, den Rest der Zeile mit LCD, ohne Angabe der weiteren Position schreiben zu können.Code:LCDAT 1 , 1 , "i= " LCD I
Allerdings wird die Zeile nicht laufend umgebrochen, d.h. ___LCDCOL wird auch über die möglichen 128 hinaus hochgezählt, jede Zeile muss also durch ein LCDAT begonnen werden.
Danke für die Mühe das low-level abzuklären! Ich kann deine Vorhersage bestätigen, der o. g. Code führt zum beschrieben Resultat. Einen ganz konkreten Nutzen sehe ich noch nicht, aber ich werde mal versuchen mir das zu merken, vielleicht kann man es doch mal gebrauchen . Ansonsten fährt man mit LCDAT soweit ganz gut.
Gruß
Malte
Geändert von malthy (30.06.2013 um 10:28 Uhr)
Lesezeichen