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
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.
Etwa so? PORTA = i?PORTA|(1<<PA7):PORTA &~(1<<PA7); Ev. müssen da noch Klammern rein. ()(())((()))(())()
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.