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
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
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. ...
Die Fragestellung liess offen, ob es ein 90S2313 oder ein Tiny2312 ist, deshalb habe ich explizit den Tiny2313 erwähnt.
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... ;-)) ...
Hi In Assembler in r16,Port (DDRx,Portx) ldi r17, 1<< Bitnummer (0..7) eor r16,r17 out Port,r16 fertig MfG HG
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
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.
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.
Hi @Rolf Stimmt. So gehts schneller. Ich war wohl etwas an ersten Beispiel kleben geblieben. MfG HG
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.