zwei Pins vom Mikrocontroller im define

Gast #4308509
Lesenswert?

Hi,
ich habe einen dspic30f4011. ich möchte gerne, dass wenn ich eine 
Variable aufrufe, der entsprechende Pin auf High geht.

Für einen Pin habe ich es so gemacht
1
...
2
#define Power LATDbits.LATD3
3
...
4
...
5
Power = 1;
6
...
7
Power = 0;
8
...

Jetzt möchte ich beim Aufruf aber nicht nur einen Pin auf High/Low 
schalten, sondern zwei. Aber wie bekomme ich zwei Pins in einem define 
rein?

Oder gibt es da eine andere Methode zu?
Persönliche Seite #4308593
Lesenswert?

DirkF schrieb:
> #define Power_on LATDbits.LATD3=1; LATDbits.LATD4=1;
> #define Power_off LATDbits.LATD3=0; LATDbits.LATD4=0;

schlecht, weil:
1
//...
2
if(x) 
3
   Power_on;
4

5
//wird umgesetzt zu:
6

7
if(x)
8
    LATDbits.LATD3=1;
9
LATDbits.LATD4=1;
ich habs extra so eingerückt dass man den Fehler sieht.

Besser:
1
#define Power_on do{LATDbits.LATD3=1; LATDbits.LATD4=1;}while(0)
2
#define Power_off do{LATDbits.LATD3=0; LATDbits.LATD4=0;}while(0)
Gast #4308892
Lesenswert?

Noch besser ist es, das in eine Funktion zu packen.
Spart Programmspeicher bei häufigen Aufrufen.


void Power (unsigend char switch)
   {
   LATDbits.LATD3=switch;
   LATDbits.LATD4=switch;
   }


Power (1);  // zum Einschlten
Power (0);  // zum Ausschlten

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