Einerkomplement: http://de.wikipedia.org/wiki/EinerkomplementCode:COM r16
Gruß
Searcher
Hallo Leute,
hier ein Ausschnitt von einem Code in Assembler.
in akku,PINB
lsl akku ; ein Bit nach links
swap akku ; tausche niederwertiges Byte mit höherwert.
out PORTB,akku ;Ausgabe
ldi akku,(1<<PB3) | (1<<PB4)
out PORTB,akku ; Pull uP
Nach swap Suche ich verzweifelt ein Befehl, der mir den Zustand (Bit7 bis Bit0)
im Arbeitsregister r16 = Akku dreht. Hat jemand ein Vorschlag???
Grüße
Rolf
Einerkomplement: http://de.wikipedia.org/wiki/EinerkomplementCode:COM r16
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
Hallo Searcher,
danke für Deine Hilfe! Habs gleich getestet und funzt.
Die Aufgabe war zum Tiny13:
Taste sw1 (gegen GND) an PB3... LEDrt an PB0 soll leuchten, wenn Taste gedrückt.
Taste sw2 (gegen GND) an PB4... LEDgn an PB1 soll leuchten, wenn Taste gedrückt.
Bist Du Assembler - Freak??
Grüße
Rolf
Hallo Rolf,
Nein, normal nicht. Ich programmiere mit Bascom und wenn ich meine es wäre nötig, dort mit Inline ASM.
Deine Frage hat mich sofort daran erinnert, daß ich auch schon mal verzweifelt danach gesucht habe als Äquivalent in ASM für das Bascom NOT bzw. TOGGLE.
Viel Erfolg noch und
Gruß
Searcher
Hoffentlich liegt das Ziel auch am Weg
..................................................................Der Weg zu einigen meiner Konstruktionen
For das Umklappen aller Bits gibt es beim AVR den ASM Befehl COM. Für das Tooglen von nur einigen Bits gibt es den Befehl EOR - allerdings nur als Verknüpfung von 2 Registern und nicht mit einer Konstante.
Wenn es darum geht direkt Bits am IOPort, also etwa PB0 oder PB1 zu Tooglen, gibt es bei neueren AVRs (ab etwa Mega8 noch eine Spezielle Hardware-Unterstützung: beim schreiben einer 1 nach PINx wird das entsprechende Bit in Portx umgedreht. Also etwa LDI R1, (1<<PB1) | (1<<PB0) und out PinB,R1 zum Toogeln der Bits PB0 und PB1. Das könnte ggf. auch über SBI PinB,0 und SBI PinB,1 gehen.
Lesezeichen