Forum: Mikrocontroller und Digitale Elektronik LCD String ausgeben


von User (Gast)


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.

von Oliver J. (skriptkiddy)


Lesenswert?

Eventuell mal versuchen auf "char*" zu casten.
1
lcd_send_string((char*)"Hallo");

Vielleicht klappts ja.

von Lehrmann M. (ubimbo)


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!

von Peter D. (peda)


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

von Oliver J. (skriptkiddy)


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.

von User (Gast)


Lesenswert?

Das mit *string ist schon richtig so.

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

von Oliver J. (skriptkiddy)


Lesenswert?


von User (Gast)


Lesenswert?

Danke, hat mir geholfen :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.