Problem mit übergabe werten (CCS Compiler)

OP #1108881
Lesenswert?

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 #1108911
Lesenswert?

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 #1108932
Lesenswert?

"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
}
#1108981
Lesenswert?

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" );

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren