Text übergeben

Gast #283691
Lesenswert?
• ▲
▼
Hallo

Habe es hingebracht.
Ich habe nur noch eine Variable dazwischen geschaltet.

Habe aber noch ein Problem.
Das Programm gibt mir nur jedes zweite Zeichen auf dem Display aus.
Ich dachte man dann den Wert im Zeiger um eins erhöhen
String++;
Und er zeigt dann auf das nächste Zeichen.
Habe ich da einen Denkfehler, oder hat sich wo anders ein Fehler
eingeschlichen?

Gruß
Angehängte Dateien:
Gast #283692
Lesenswert?
• ▲
▼
Oh je...

Schalte an Deinem Compiler mal alle Warnungen ein. Beim gcc geht das
mit "-Wall -O". Dein Code strozt vor Fehlern:


  void send_LCD(int zeile, int stelle,int *String)
                                      ~~~~~~~~~~~~

Wieso verwendest Du da einen Zeiger auf ein "int"??? Schau nochmals
mein Beispiel an, was da steht...


Hier mal eine verbesserte Version Deines Programms:



#define DELAY_SEND 100


void delay()
{
  for (int i=0; i < DELAY_SEND; i++)
    ;
}


void send_LCD(int zeile, int stelle, char * text;)
{
  int adresse;

  switch (zeile)
  {
    case 1: adresse = 0x80; break;
    case 2: adresse = 0xC0; break;
    case 3: adresse = 0x90; break;
    case 4: adresse = 0xD0; break;
    default: return;  // Fehler: Ungültige Zeile!
  }

  adresse += stelle - 1;

  //Adresse umstellen
  *LCD_Daten = adresse;
  *LCD_Steuer =0x04;
  *LCD_Steuer =0x00;
  delay();

  while (*text)
  {
    *LCD_Daten = *text++;
    *LCD_Steuer = 0x05;
    *LCD_Steuer = 0x01;
    delay();
  }

}
Gast #283694
Lesenswert?
• ▲
▼
Ein Zeiger besteht nicht nur aus einer Adresse, sondern definiert auch
die Größe des Elements, auf das es zeigt.

Wenn Du den Zeiger als Pointer auf ein int deklarierst, dann stellt
string++
den Zeiger auf die nächste int-Position im Speicher. Bei int = 2 Byte
also auf +2 Byte. Deswegen zeigte Dein lcd nur jedes 2.Zeichen an.

Gruß, Stefan

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 20 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.