Forum: Mikrocontroller und Digitale Elektronik definition header


von martin (Gast)


Lesenswert?

Hi

Ich möchte Pins über ein Header file definieren.
Ich hab mir das so vorgestellt.

system.c -->
----------------
#include "system.h"

void LED(void) //Funktion um Leds zu schalten
{
   PORTB &= ~((1 << Led0)|(1<<Led1));    // löscht Led0 und Led1
}
----------------
-->system.h
----------------
#ifndef SYSTEM_H_
#define SYSTEM_H_

#define Led0 = DDB2;
#define Led1 = DDA7;
#define Led2 = DDA5;

#endif
----------------

Wieso funktioniert dies nicht.
Habt ihr bessere Vorschläge.

von Karl H. (kbuchegg)


Lesenswert?

martin schrieb:

> #define Led0 = DDB2;
> #define Led1 = DDA7;
> #define Led2 = DDA5;
>
> #endif
> ----------------
>
> Wieso funktioniert dies nicht.

Weil #define anders funktionert.

#define macht Textersetzungen.

#define Text1 Text2

überall dort wo Text1 steht, wird statt dessen Text2 eingesetzt.

Und jetzt mach das mal im Kopf.

Du hast:
> #define Led0 = DDB2;
> #define Led1 = DDA7;

und

>   PORTB &= ~((1 << Led0)|(1<<Led1));    // löscht Led0 und Led1

Jetzt machen wir mal die Textersetzung.
Dann steht da

   PORTB &= ~((1 << = DDB2;)|(1<< = DDA7;));    // löscht Led0 und Led1


> Habt ihr bessere Vorschläge.

Ein C-Buch lesen könnte dich aus deinem Halbwissen rausbringen

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

martin schrieb:
> Wieso funktioniert dies nicht.

Die Fehlermeldung des Compilers lautet also

"Das funktioniert nicht".


Beeindruckend.

Wenn Du in Dein C-Buch gucken würdest, würdest Du darin die Syntax für 
#defines sehen.

Tip:

Lass die Semikola und Gleichheitszeichen weg.

von martin (Gast)


Lesenswert?

Danke Karl Heinz

Das Gleichheitszeichen muss natürlich weg.
Die Pindefinition funktioniert so aber immer noch nicht.

Hier der Fehler dazu
../system.c:24: error: expected ')' before ';' token

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

mach mal das Semikolon am Ende deiner #define Zeile weg und lass dich 
überraschen ...

von Karl H. (kbuchegg)


Lesenswert?

martin schrieb:
> Danke Karl Heinz
>
> Das Gleichheitszeichen muss natürlich weg.

Der Strichpunkt auch!
Schau dir doch mal das Ergebnis der Textersetzung GENAU an!

von martin (Gast)


Lesenswert?

Danke nochmal jetzt gehts

Ich hatte die Augen wohl noch nicht genug offen.

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.