Gast
#228416
Hallo @ all, ich möchte bei einem 2313 ein Bit im DDRB invertiren. z.b. DDB5 Gib es dafür einen ähnlichen Befehl wie COM ? Gruß Ingo
|
Anzeige
|
Port BIt Invertieren ?
Gast
#228416
Hallo @ all, ich möchte bei einem 2313 ein Bit im DDRB invertiren. z.b. DDB5 Gib es dafür einen ähnlichen Befehl wie COM ? Gruß Ingo
Gast
#228417
nein.
Gast
#228418
Danke für die schnelle Antwort Also dann doch umständlich :-((
Gast
#228419
Lt. Datenblatt kann man Pins Togglen, indem man eine eins in das entsprtechende PORTXn Register schreibt (Datenblatt Tiy2313, Seite 47 oben.) mfg DKM www.loetstelle.net
Gast
#228420
es war aber nicht die Rede vom Tiny2313... Und außerdem muss man die 1 nicht in das Portregister sondern in das Pin-Register schreiben. Aber das funktioniert nur bei einigen wenigen neuen AVR-Typen. ...
Gast
#228422
Die Fragestellung liess offen, ob es ein 90S2313 oder ein Tiny2312 ist, deshalb habe ich explizit den Tiny2313 erwähnt.
Gast
#228423
ah, genau lesen, der will ja das Bit im DDR-Register invertieren.. war halt doch noch zu früh.. Ups... Ertappt... Dann nehme ich alles zurück und behaupte das Gegenteil... ;-)) ...
Gast
#228425
Hi
In Assembler
in r16,Port (DDRx,Portx)
ldi r17, 1<< Bitnummer (0..7)
eor r16,r17
out Port,r16
fertig
MfG HG
Gast
#228426
Hallo @ All, also es ist ein 90S2313. Hier mal etwas mehr Infos zu meinem Problem. Die Schaltung soll mal später in eine Modellfeuerwehr. Ich habe dann verschiedene Lichtmuster, z.B. 2 Rundum Lichter die asynchron blinken, Blinker recht Blinker links bzw. Warnblinker, Frontblitzer, Scheinwerfer + Rücklicht und Bremslicht. Jetzt lasse ich in einer Schleife alle Blinkmuster dauerhaft laufen. Bei einem Tastendruck will ich dann nur den Port (DDBx) deaktivieren bzw. beim nächsten Tastendruck wieder aktivieren. Um somit dann die Funktion zu steuern. Gruß Ingo Dann wird es nicht einfacher als mit Hartmuts Code gehen. ...
Gast
#228428
Werde es mal nachher Teaten. ....
Gast
#228429
Hi
Der code von oben invertiert 1 Bit.Wenn du das komlette Register
invertiern willst müsste es so aussehen
in r16,Port
ldi r17,255 ($FF)
eor r16,r17
out Port,r16
Die AVRs haben keine Befehl XOR mit Konstante deshalb der Umweg mit
r17. Wobei r17 nicht zwingend ist.
Gast
#228430
Wenn man den ganzen Port toggeln wil, geht's auch einfacher: in r16, Port com r16 out Port, r16 Alternativ kann man sich natürlich den Port-Status auch in einem normalen Register merken, sodaß auch noch das in wegfallen kann.
Gast
#228431
Hi @Rolf Stimmt. So gehts schneller. Ich war wohl etwas an ersten Beispiel kleben geblieben. MfG HG Antwort schreiben |
Anzeige
|