Forum: PC-Programmierung Funktionsaufrufe mit Konstanten??


von Christian (Gast)


Lesenswert?

Hallo,
ich benutze den CSS-Compiler mit MPLAB IDE und nen PIC16F877,
diese Infos sind aber wahrscheinlich für mein Problem unerheblich,
da es sich vermutlich um eine triviale Sache handelt.

Ich habe mir folgendes definiert:

#define ZU Pin_B2
#define RESET Pin_B0

Pin_B2 und Pin_Bo sind im Header <16F877.h> folgendermaßen
definiert:

#define Pin_B2 50
#define Pin_B0 48

Es handelt sich also bei ZU und RESET letztenendes um Konstanten.

Ich möchte nun die Funktion blink() einbinden:

void blink (int blinker, int schalter)
{
     if (schalter == TRUE)  //blinker einschalten
     {
         output_high(blinker);
         delay....
         output_low(blinker);
         delay....
     }
     else if (schalter == FALSE) //blinker ausschalten
     {
         output_low(blinker);
     }
}

Mit ihr soll es möglich sein, unterschiedliche Ausgänge blinken zu
lassen, je nachdem mit welchen Ausgänge ich die Funktion aufrufe.

In diesem Fall z.B.:

blink(ZU,TRUE);
blink(RESET,TRUE);


Beim compilieren kommt es jedoch zu der Fehlermeldung:
"Expression must evaluate to a constant"
Und zwar in meiner Funktion an der Stelle:
"output_high(blinker)" und den anderen....

Ich fand die Lösung eigentlich recht elegant, weiß jemand
eine Lösung für mein Problem??

von Rufus T. Firefly (Gast)


Lesenswert?

Daß wir hier keine Crosspostings mögen, hat sich bis zu Dir wohl noch
nicht herumgesprochen, wie?

Also, nochmal zum Mitmeisseln:

Wir mögen hier keine Crosspostings.

von Schoaschi (Gast)


Lesenswert?

Wieso arbeitest du nicht direkt über die Register? also zuerst die
register definieren und danach die Bits setzen.
Soll es nur fürs Port B funktionieren oder für alle anderen auch?
Oder willst du das mit deiner Variante machen, dann müsstest du vorher
noch ein if einbauen und danach 2 routinen schreiben. Einmal für ZU und
einmal für RESET

von Schoaschi (Gast)


Lesenswert?

PS.: es tut schon was zur sache welchen Compiler und welchen Controller
du benutzt ;-)

von A.K. (Gast)


Lesenswert?

@Schoaschi: Was immer Christian hier sich an Ärger noch zuziehen mag -
das jedenfalls steht deutlich drin, direkt hinter dem Hallo.

@Christian: Schlechter Stil, Crossposting ohne auf die Antworten im
ursprünglichen Thread mit einem Wort einzugehen. Erweckt hier den
Eindruck, dass Du Lösungen, die von deiner Vorgabe einigermassen
abweichen, nicht akzeptierst. Was konstruktive Antworten sinnlos macht.

von pittbull (Gast)


Lesenswert?

sind output_low/high vielleicht makros?

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.