Pin setzen und löschen über Funktionsaufruf in C

OP #1075785
Lesenswert?

Hallo,

ich hab mal wieder ein Brett vorm Kopf und bitte um Abhilfe.
Folgendes, ich möchte gezielt einen einzelnen Portpin setzen. 
Vorzugsweise mit einem Befehl wie z.B.

i = 0; //oder eben i = 1;
PA7 = i;

(geht so in der Form natürlich nicht, ist mir schon klar).
Ich könnte natuerlich einfach eine if-Anweisung schreiben die den 
Variablenwert abfragt.

  if(i == 1)
   PORTA |= (1<<PA7);
  else
   PORTA &= ~(1<<PA7);
Aber genau diese Anweisung möchte ich eigentlich vermeiden. Geht sowas 
überhaupt?

Derzeit ratlose Grüsse,
Rüdiger
#1075804
Lesenswert?

Ich nehme an Du beziehst Dich auf den AVR Prozessor.
Das es meines Wissens auch keinen Assembler Befehl zum Setzen eines Bits 
nach Deinem Wunsch gibt, müßte auch der Compiler dies wieder in einen 
Sprungbefehl und einen sbi oder cbi Befehl umsetzen.
Es wird also (außer Buchstaben beim Schreiben) nichts gewonnen.
Wenn Du unbedingt weniger schreiben willst könntest Du ein Makro 
verwenden.
OP #1075838
Lesenswert?

Ohja, entschuldigung, um einen ATMega128 gehts. Ich hatte glaub ich 
irgendwie noch die alten Assemblerbefehle, die  von damals im 
Hinterkopf. Ich hab nun auch nochmal etwas rumexperimentiert und bin 
auch zu keinen schlauen Lösung mehr gekommen. Nunja, dann kommmt an der 
stelle eben eine Abfrage rein, ist ja auch kein beinbruch. ;)

Vielen Dank für  die Antworten.

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