Problem mit übergabe werten (CCS Compiler)

OP #1108881
tach....

ich hab n' Problem mit eins, zwei Funktionen. Ich arbeite mit einem PIC 
18F452 und MPLab mit CCS Compiler. Ich bastele zur Zeit mit nem Grafik 
LCD rum und steh nun vor einem Problem. Folgendes:

den jeweiligen Schreibbefehlen möchte ich X und Y Startdresse übergeben 
plus die eigentliche information. zB sowas:

   lcd_putnumb(3,12, 0xFF);
das Schreibt mir nun 255 (dezimal) auf Page 3, Adresse 12... 
funktioniert prima...

nun aber:
   lcd_putchar(3,12,"Hello World");
das müsste nun "Hello World" als Text an die selbe stelle schreiben.....

CCS meldet BAD EXPRESSION SYNTAX

kennt jemand das Problem oder weiss was ich falsch gemacht habe??

THX .......Skamper
OP
also:

void lcd_putchar(int cx, int cy, char f)
{
  int fx;
  lcd_setpage(cx);
  switch(f)
  {
    default:
    for(fx = 0; fx < 6; fx++)
    {
      lcd_setaddr(cy+fx-1);
      lcd_write(font[(f-0x20)][fx]);
      output_low(LCD_RW);
      output_high(LCD_DI);
      lcd_enable();
    }
    cy = cy+6;
    break;
  }
}


Der Switch soll nicht verwirren... er geht den Default case für jeden 
buchstaben einzeln durch die funktion ruft dann nur noch die 6 jeweils 
benötigten Bytes auf (Font 6*8)
Gast
"char f" ist ja auch nur ein einzelnes Zeichen und keine vollständige 
Zeichenkette

Versuchs mal so (nicht getestet, nur kurz hingetippt...):
1
void lcd_putchar(int cx, int cy, char *f)
2
{
3
  int fx;
4

5
  while(*f != '\0')
6
  {
7

8
  lcd_setpage(cx);
9

10
    for(fx = 0; fx < 6; fx++)
11
    {
12
      lcd_setaddr(cy+fx-1);
13
      lcd_write(font[(*f-0x20)][fx]);
14
      output_low(LCD_RW);
15
      output_high(LCD_DI);
16
      lcd_enable();
17
    }
18
    cy = cy+6;
19

20
  f++;
21
  cx++;
22
  }
23
}
Zwirbeljupp wrote:
> "char f" ist ja auch nur ein einzelnes Zeichen und keine vollständige
> Zeichenkette
>
> Versuchs mal so (nicht getestet, nur kurz hingetippt...):
>
>
1
> void lcd_putchar(int cx, int cy, char *f)
2
>

Würd ich nicht machen. Eine Funktion lcd_putchar könnte sich ja durchaus 
als nützlich erweisen.

Aber man kann sie ja als Baustein für ein lcd_putstring benutzen
1
void lcd_putstring( int cx, int cy, const char* text )
2
{
3
  while( *text )
4
  {
5
    lcd_putchar( cx, cy, *text );
6
    cx++;
7
    text++;
8
  }
9
}
10

11
...
12

13

14
  lcd_putstring( 0, 0, "Test" );
OP
hab mal diverses ausprobiert.....

 und so wies aussieht lässt sich ein string nur dann übergeben wenn 
keine weiteren Variablen übergeben werden. Egal wie ich es drehe, 
combiniert funktioniert es nicht...... einzeln ist es kein problem....

Antwort schreiben

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