www.mikrocontroller.net

Forum: PC-Programmierung Funktionsaufrufe mit Konstanten??


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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??

Autor: Rufus T. Firefly (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Schoaschi (Gast)
Datum:

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

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: pittbull (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sind output_low/high vielleicht makros?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.