Portbezeichnung umdefinieren in C

Gast #1599421
Lesenswert?

Hallo,

ich versuche gerade mein LCD-Programm von Assembler in C umzusetzen.
Nun weiß ich nicht genau wie man die Portnamen umdefiniert.
Ich habe es wie folgt probiert:
1
 #define  LCD_DataDDR   = DDRB
2
 #define  LCD_SteuerDDR  = DDRC  
3
 #define  E  =  PC3
4
 #define  RW  =  PD6  
5
 #define  RS  =  PC2  
6

7
int main (void) 
8
{            
9
// Ports auf Ausgang 
10
   LCD_DataDDR   = 0x0f;  
11
   LCD_SteuerDDR = (1<<E)|(1<<RS);
12

13
   return 0;                 
14
}

Leider bekomme ich folgende Fehlermeldung:
../Test.c:21: error: expected expression before '=' token

kann mir jemand helfen?

Gruß, pacer
Gast #1600794
Lesenswert?

ich dachte eigentlich wäre alles okay, leider bekomme ich noch immer 
folgende Fehlermeldung:
../Test.c:55: error: 'PortC' undeclared (first use in this function)
In der avr/io.h müsste doch drinstehen was PortC ist? Zumal er ja PortC 
kennt.

1
#define F_CPU 8000000
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5

6

7
//------------------------------------------------------
8
//   Definition der Steuerleitungen
9
//------------------------------------------------------
10
 #define  LCD_DataPort  PortB    // Datenleitungen - LCD beschreiben
11
 #define  LCD_DataDDR    DDRB      // Datenrichtungsregister für Datenleitung
12
 #define  LCD_DataPIN   PinB      // Datenleitungen - LCD lesen
13

14
 #define  LCD_SteuerPort PortC
15
 #define  LCD_SteuerDDR  DDRC    // Datenrichtungsregister für Datenleitung
16

17

18
 #define  E    PC3        // 1=Freigabe Befehl/Daten
19
 #define  RW    PD6        // 1=read          0=write
20
 #define  RS    PC2        // 1=Daten R/W       0=Befehl R/W
21

22
extern EnableHold()          // inline Assembler
23
{
24
    asm volatile ("nop");
25
    asm volatile ("nop");
26
    asm volatile ("nop");
27
  asm volatile ("nop");
28
}
29

30
int main (void) 
31
{            
32
// Ports auf Ausgang 
33
   LCD_DataDDR   = 0x0f;  
34
   LCD_SteuerDDR = (1<<E)|(1<<RS);
35
   
36
// Wait power up
37
   _delay_ms (12);
38

39
   LCD_SteuerPort &= ~(1 << RS);   // RS=0 --> Register Select auf Befehl  (defaultwert) 
40
   LCD_SteuerPort &= ~(1 << RW);   // RW=0 --> Schreiben          (defaultwert)
41
   LCD_SteuerPort &= ~(1 << E);   // E=0  --> Enable off          (defaultwert)
42

43

44
  for (;;) {}                  // loop forever 
45
   return 0;                 
46
}

Was ist noch falsch?

Gruß, pacer
Gast #1600804
Lesenswert?

pacer schrieb:
> ../Test.c:55: error: 'PortC' undeclared (first use in this function)
> In der avr/io.h müsste doch drinstehen was PortC ist? Zumal er ja PortC
> kennt.

Der Compiler achtet auch auf Groß-/Kleinschreibung. Verwende PORTC usw.!

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