mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LCD String ausgeben


Autor: User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich würde gerne an einem LC-Display einen kompletten String ausgeben.
Hierfür habe ich folgende Funktion geschrieben, wobei ich mit dem 
PICC-Compiler arbeite:

   void lcd_send_string(char *string)
   {
      while(*string != '\0')
      {
         lcd_send_byte(*string++);
      }
   }


Wenn ich nun die Funktion folgendermaßen aufrufe:


   lcd_send_string("Hallo");


erhalte ich folgende Meldung:

"ATTEMPT TO CREATE A POINTER TO A CONSTANT", was ich mir nicht erklären 
kann.

(Über die Funktion lcd_send_byte kann ich einzelne ASCII Zeichen 
ausgeben)

Vielleicht kann jemand helfen ?  Vielen Dank schonmal im Vorraus.

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eventuell mal versuchen auf "char*" zu casten.
lcd_send_string((char*)"Hallo");

Vielleicht klappts ja.

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
User schrieb:
> while(*string != '\0')

solange bis Adresse der Variable "string" != binäre Null ?!

*string bedeutet die Adresse der Variable "string" und nicht den Inhalt!

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
User schrieb:
> "ATTEMPT TO CREATE A POINTER TO A CONSTANT", was ich mir nicht erklären
> kann.

Das wird eine spezielle Einschränkung Deines Compilers sein.
Da mußt Du mal in dem Manual dazu oder Beispielverzeichnis nachschauen, 
wie er es gerne haben möchte.


Ansich ist das gültiger Code und z.B. der AVR-GCC oder Keil C51 
übersetzen das auch völlig klaglos.
Der AVR-GCC legt es im SRAM ab, der Keil C51 im Flash und dann einen 
generic Pointer darauf.


Peter

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lehrmann Michael schrieb:
> User schrieb:
>> while(*string != '\0')
>
> solange bis Adresse der Variable "string" != binäre Null ?!
>
> *string bedeutet die Adresse der Variable "string" und nicht den Inhalt!

Falsch!
Das ist richtig so. Mit "string" würde man auf die Adresse zugreifen. 
"*string" ist der Inhalt.

Autor: User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit *string ist schon richtig so.

Ein cast auf char* bringt leider auch nichts. Danke trotzdem

Autor: Oliver Ju. (skriptkiddy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: User (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, hat mir geholfen :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.