Eingang einer Variablen zuweisen

OP #2737642
Hallo zusammen,
ich wollte mal fragen, ob es möglich (und sinnvoll) ist, ein Eingang auf 
eine Variable zu legen? Ich programmiere in C und habe dabei folgendes 
versucht:
1
char Empfaenger = PORTB.F6;
Jetzt bekomme ich natürlich "Const expression expected" als 
Fehlermeldung gesagt.

Danke und Gruß
Peter
P. S. schrieb:
> Hallo zusammen,
> ich wollte mal fragen, ob es möglich (und sinnvoll) ist, ein Eingang auf
> eine Variable zu legen?

Wenn du das so meinst, dass die Variable damit mit dem Eingang verknüpft 
ist, dann nein.
Du kannst natürlich jederzeit den Eingangspin abfragen und den 
erhaltenen Wert einer Variablen zuweisen. Aber das ist dann der Wert zum 
Zeitpunkt des Abfragens.

Wenn es dir nur darum geht, dass du quer durchs Programm einen 
vernünftigen 'Namen' für den Pin hast, dann kannst du natürlich per 
#define dafür einen vereinbaren


#define  EMPFAENGER  PORTB.F6


...

   if( EMPFÄNGER )

     ...
Gast
Das Gleichheitszeichen = ist ein Zuweisungsoperator. Was der tut steht 
im C-Buch deines Vertrauens. Und: ja, der Zuweisungsoperator wird oft 
verwendet um Eingangswerte einer Variablen zuzuweisen.
OP
Danke für die schnelle Antwort!
Das mit dem #define gefällt mir :-)
Die andere Variante interessiert mich jedoch auch noch. Würde ich das 
dann folgendermaßen machen oder gibt es auch einen einfacheren Weg?
1
if(PORTA.F6 == 1){
2
   Variable = 1;
3
}
4
if(PORTA.F6 == 0){
5
   Variable = 0;
6
}

Danke und Gruß
Peter
Welcher COmpiler ist das? Bzw. welcher µC?


> oder gibt es auch einen einfacheren Weg?
Was daran ist denn kompliziert?

Wenn dein Compiler dir PORTA.F6 zulässt und daraus Code generiert, der 
diesen Pin abfragt, dann ist das wohl so ziemlich das einfachst 
mögliche.

Im übrigen brauchst du nicht explizit auf 1 bzw. 0 zu vergleichen.
In C gilt die Regel: jeder Ausdruck, der 0 ergibt ist automatisch ein 
logisches FALSE und alles ungleich 0 ist automatisch ein logisches TRUE

d.h.

  if( irgendwas == 1 )
und
  if( irgendwas )

sind bedeutungsmässig gleich.

Genauso wie

  if( irgendwas == 0 )
und
  if( !irgendwas )


Je nach Zusammenhang können aber die beiden Formen OHNE expliziten 
Vergleich klarer sein bzw. weniger fehleranfällig.
OP
Karl Heinz Buchegger schrieb:
> Welcher COmpiler ist das? Bzw. welcher µC?

mikroC PRO for PIC / PIC18F1320

>> oder gibt es auch einen einfacheren Weg?
> Was daran ist denn kompliziert?

Aja "Empfaenger = PORTB.F6;" wäre NOCH einfacher gewesen ;-)

> Je nach Zusammenhang können aber die beiden Formen OHNE expliziten
> Vergleich klarer sein bzw. weniger fehleranfällig.

Alles klar, Danke!
OP
asdf schrieb:
> Das Gleichheitszeichen = ist ein Zuweisungsoperator. Was der tut steht
> im C-Buch deines Vertrauens. Und: ja, der Zuweisungsoperator wird oft
> verwendet um Eingangswerte einer Variablen zuzuweisen.

Dass das nicht funktioniert, war mir ja schon klar (hatte ich ja auch im 
ersten Beitrag geschrieben). Ich dachte nur, dass mir das hilft, mein 
Problem zu beschreiben...

Stefan Ernst schrieb:
>Speziell das kannst du natürlich auch ersetzen durch

>Variable = PORTA.F6;

Habe das, nachdem ich im Glauben war, das gehe nicht, gerade nochmal 
ausprobiert. Dazu muss die Zeile allerdings in der main-Funktion stehen, 
dass hatte ich anfangs übersehen -.-
"define" ist da aber immernoch die beste Lösung, oder ist das 
geschmacksache?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.