Forum: Mikrocontroller und Digitale Elektronik undefined identifier / absolute specifier illegal


von Doenercola (Gast)


Lesenswert?

Ich bräuchte mal Hilfe bei der Mikrocontrollerprogrammierung in C.
Es geht um einen ADuC 832, das Display wird mittels einem Hitachi 
HD44780 angesteuert.

Keil uVision4 meckert beim Anlegen der Zeiger für ein LCD-Display.

LCD.c
1
  // Zeiger anlegen
2
  uint8_t xdata  pLDC_Cont   _at_ AdrLCD_CONT;  // Zeiger fuer "Steuerdaten schreiben"
3
  uint8_t xdata  pLDC_Data   _at_ AdrLCD_DATA;  // Zeiger fuer "Anzeigedaten schreiben"

AdrLCD_CONT und AdrLCD_DATA sind Makros und in der HAL.h definiert.

HAL.h
1
#define    AdrLCD_CONT    (0xF100)
2
#define    AdrLCD_DATA    (0xF101)

Die HAL.h wurde auch in die LCD.c eingebunden.

Jedoch meckert jetzt uVisision in der LCD.c, dass die  beiden globalen 
Zeiger in einer nachfolgenden Funktion nicht bekannt seien. (undefined 
identifier)

Hier der Code der nachfolgenden Funktion, wo pLCD_Cont unbekannt ist.
1
void LCD_INI(void)
2
{  
3
  pLCD_Cont = 0x38;  // 2 mal 38H einschreiben --> sonst wird Datenbusbreite nicht richtig eingestellt
4
  Delay_4ms();
5
  pLCD_Cont = 0x38;  // Datenbus 8 Bit, 5x7 Dots Zeichengroesse, 2 Lines
6
  Delay_4ms();
7
  pLCD_Cont = 0x1;  // Display resetten
8
  Delay_4ms();
9
  pLCD_Cont = 0x0C;  // Display ein, Cursor aus, kein Blinken
10
  Delay_50us();  
11
}

Schiebe ich die Deklarationen in die Funktion rein, sagt er mir 
"absolute specifier illegal". Danach sind sie immernoch undefinied.

Wie lös ich das Problem? :) Danke schonmal

von Jim M. (turboj)


Lesenswert?

Putz doch mal die Brille:
1
uint8_t xdata  pLDC_Cont   _at_ AdrLCD_CONT; // ...
2
                ^^^
3
4
[...]
5
 pLCD_Cont = 0x38;
6
  ^^^

Der Compiler besteht auf korrekter Schreibweise.

von Doenercola (Gast)


Lesenswert?

Oh nein :D Des is mir jetzt bissl peinlich aber gut, Dankeschön! :)

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.