"C" Problem mit Pointer für PIC18Fxxx

#3971517
Lesenswert?

Hallo bei dem guten Beitrag
http://www.mikrocontroller.net/articles/Festkommaarithmetik

bin ich auf ein Problem für PIC18Fxxx gestoßen.
Ich bekomme

main.c:129: error: (183) function or function pointer required
main.c:129: error: (981) pointer required

im Bezug auf den String. Hat jemand eine Idee wie man das für
Microchip XC8 PIC18Fxxx CPU lösen kann.

void my_print_LCD(char* string, uint8_t start, uint8_t komma, uint8_t 
frac) {
  uint8_t i;            // Zähler
  uint8_t flag=0;       // Merker für führende Nullen

  // Vorzeichen ausgeben
  if (string[0]=='-') lcd_data('-'); else lcd_data(' ');

  // Vorkommastellen ohne führende Nullen ausgeben
  for(i=start; i<komma; i++) {
    if (flag==1 || string[i]!='0') {
      lcd_data(string[i]);
      flag = 1;
    }
    else lcd_data(' ');         // Leerzeichen
  }

  lcd_data(',');                // Komma ausgeben

  // Nachkommastellen ausgeben
  for(; i<(komma+frac); i++) lcd_data(string[i]);
}
#3971701
Lesenswert?

Das ist doch klar da gibt es ja nur einen String

void my_print_LCD(char* string, uint8_t start, uint8_t komma, uint8_t
frac) {
  uint8_t i;            // Zähler
  uint8_t flag=0;       // Merker für führende Nullen

  // Vorzeichen ausgeben
  if (string[0]=='-') lcd_data('-'); else lcd_data(' ');

  // Vorkommastellen ohne führende Nullen ausgeben
  for(i=start; i<komma; i++) { /// hier
    if (flag==1 || string[i]!='0') {
      lcd_data(string[i]);  //// hier
      flag = 1;
    }
    else lcd_data(' ');         // Leerzeichen
  }

  lcd_data(',');                // Komma ausgeben

  // Nachkommastellen ausgeben
  for(; i<(komma+frac); i++) lcd_data(string[i]); //// hier
}


Kann man das formatieren ?
#3971812
Lesenswert?

void my_print_LCD(char* DerSTR, uint8_t start, uint8_t komma, uint8_t
frac) {
  uint8_t i;            // Zähler
  uint8_t flag=0;       // Merker für führende Nullen

  // Vorzeichen ausgeben
  if (DerSTR[0]=='-') lcd_data('-'); else lcd_data(' ');

  // Vorkommastellen ohne führende Nullen ausgeben
  for(i=start; i<komma; i++) { /// hier
    if (flag==1 || DerSTR[i]!='0') {
      lcd_data(DerSTR[i]);  //// hier
      flag = 1;
    }
    else lcd_data(' ');         // Leerzeichen
  }

  lcd_data(',');                // Komma ausgeben

  // Nachkommastellen ausgeben
  for(; i<(komma+frac); i++) lcd_data(DerSTR[i]); //// hier
}
#3972090
Lesenswert?

Oh Sorry ich sehe wo das Problem liegt
mein Denkfehler war zu glauben

lcd_data ist ein String Array aber es ist eine Funktion
sorry mein Fehler

// Sendet ein Datenbyte an das LCD
void lcd_data( uint8_t data )
{
    LCD_PORT |= (1<<LCD_RS);    // RS auf 1 setzen

    lcd_out( data );            // zuerst die oberen,
    lcd_out( data<<4 );         // dann die unteren 4 Bit senden

    _delay_us( LCD_WRITEDATA_US );
}
#3972333
Lesenswert?

Und danke auch für das Posten der Funktion lcd_data(), die auch 
fehlerfrei aussieht, und mit dem beschriebenen Problem (Zeile 129) 
vermutlich nicht das Geringste zu tun haben wird. Der Fehler in Zeile 
129 scheint aber dermaßen peinlich zu sein, dass du ihn wirklich besser 
für dich behältst.
Da steht wahrscheinlich
lcd_data = "Hallo";
oder so.

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