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