Forum: Mikrocontroller und Digitale Elektronik LCD Ansteuerung C18 -> XC8


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ingo S. (schicki)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Zusammen,

schreibe gerade meine Ansteuerung von einem LCD um. Am C18 läuft dieser 
Code. Beim XC8 meckert der Compiler an zwei Stellen:
error: (267) bad storage class

Wer kann helfen?
Header-File:
extern void LCD_PRINT(char line, char pos, auto const rom char *str);
extern void LCD_PRINTF(int line, int pos, auto const rom char *fmt, ...);// auto const MEM_MODEL rom char *fmt, ...)

C-File:
void LCD_PRINT(char line, char pos, auto const rom char *str)
{
  if (line==1)
  {  
    LCD_Command(pos|0x80);
  }  
  else
  {  
    LCD_Command((pos+0x40)|0x80);
  }

  while(*str)
  {
    LCD_Data(*str);
       str++;
  }
}

void LCD_PRINTF(int line, int pos, auto const rom char *fmt, ...) // auto const MEM_MODEL rom char *fmt, ...)
{ 
    va_list args;
    va_start(args,fmt);
    
    vsprintf(cString, fmt, args);

    if(line == 1)
    {
        LCD_Command(pos|LINE1);
    }
    else
    {
        LCD_Command(pos|LINE2);
    }

    LCD_PutCString(cString);

    va_end(args);
}

Aufruf:
        LCD_PRINT(1,0,"Hallo Welt");
        LCD_PRINT(2,0,"Test");

        int f = 64, g = 0xff;
        LCD_PRINTF(2,0,"%-#x %-#x %c",f,g,f);

Viele Grüße
Ingo

von Sebastian K. (sek)


Bewertung
0 lesenswert
nicht lesenswert
Liegt es vielleicht am C++ Keyword 'auto'?

von Ingo S. (schicki)


Bewertung
0 lesenswert
nicht lesenswert
leider nein

../lcd.h:41: error: (372) "," expected

von Noch einer (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Das "rom" ist beim CX8 raus geflogen.

const char[] hat den selben Effekt wie das alte rom char[]. Funktionen 
wie strlen() usw. gibt es doppelt. Mit und ohne const.

Recht gewöhnungsbedürftig.

von Ingo S. (schicki)


Bewertung
0 lesenswert
nicht lesenswert
Hab die Funktion umgeschrieben. Das ist sehr gewöhnungsbedürtig.Schade! 
war sehr praktisch.

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.