GLCD Variablenausgabe

Gast #1580039
Moin zusammen,

Pardon, aber ich habe gerade eine Knoten im Hirn.
Folgendes Problem:
PIC 18F / C18 /GLCD mit UC1601
In einer Ausgabefunktion für mein GLCD wird bisher immer auf
Texte im ROM(FLASH) zugegriffen:
void lcd_text(unsigned char left, unsigned char top, unsigned char font, 
rom unsigned char *str)
z.B.:
lcd_text(6,29,FONT_NINE_DOT,"128x64");
Beí einer Variablen habe ich nun ein Problem.
Es gibt ja viele schöne Stringkonvertierungsfunktionen,
die mir aber offensichtlich nicht recht helfen und
ich habe bei der Pointerarithmetik scheinbar
ein grosses Verständnisproblem.
Das beim PIC der Unterschied zu machen ist zwischen
RAM- und ROM-Pointern, ist mir aber bekannt.

Könnte bitte jemand, der netten C-Gurus einem Verzweifelten
auf die Sprünge helfen ?

Besten Dank schon einmal

Didi
#1580048
C-Amnesie schrieb:

> void lcd_text(unsigned char left, unsigned char top, unsigned char font,
> rom unsigned char *str)
> z.B.:
> lcd_text(6,29,FONT_NINE_DOT,"128x64");
> Beí einer Variablen habe ich nun ein Problem.
> Es gibt ja viele schöne Stringkonvertierungsfunktionen,
> die mir aber offensichtlich nicht recht helfen und
> ich habe bei der Pointerarithmetik scheinbar
> ein grosses Verständnisproblem.
> Das beim PIC der Unterschied zu machen ist zwischen
> RAM- und ROM-Pointern, ist mir aber bekannt.

Das erste was du machen musst:
Sieh in deiner Funktionssammlung nach, ob es eine zweite 
String-Ausgabefunktion gibt, die keinen rom Pointer als 4.tes Argument 
hat.
Wenn nicht, dann musst du dir eben eine machen. Die Implementierung 
deiner jetzigen lcd_text wird dir dabei helfen und kann als Grundlage 
dienen.


erst dann bist du in der Lage, mit diversen Stringkonvertierfunktionen 
dir einen String zusammenzubauen, der eben nicht im rom residiert, und 
mit dieser neuen Funktion ausgegeben werden kann.
Gast #1580187
Besten Dank !
Ich hatte schon herumprobiert, wollte gerne aber
auch etwas verstehen:
Funktion auf RAM-pointer geändert
void lcd_text(unsigned char left, unsigned char top, unsigned char font,
unsigned char *str)
Meine Variable ist an erster Stelle im Array buf[]
-> lcd_text(6,29,FONT_NINE_DOT,(unsigned char *) buf);
und NICHT lcd_text(6,29,FONT_NINE_DOT,(unsigned char *) buf[0]);
 Das war ein Teil des Nachholbedarfs in Sachen Pointer.

Läuft also jetzt.
Gast #1618941
Hallo;
ich versuche grade ein Diplay mit dem controller uc1601s zum laufen zu 
bringen, aber es klappt leider nicht... Was fur befehle sendest du am 
start zum controller?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.