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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.