Forum: Mikrocontroller und Digitale Elektronik SBR nutzen


von Robert M. (xertno)


Lesenswert?

Ich habe keine Ahnung warum das nicht geht vielleicht ist es auch ein 
Denkfehler.
Also ich will in dem reg r20 eines tinytn44 das Bit 4 setzen. Nutze 
daher den Befehl
SBR r20,4
Ich Programmiere in Assembler.
In der Simulation wird aber Bit 3 gesetzt, das raff ich einfach nicht da 
es in einem anderen Zusammenhang bei Bit 1 wunderbar funktioniert.

von Der M. (steinadler)


Lesenswert?

Robert M. wrote:
> Ich habe keine Ahnung warum das nicht geht vielleicht ist es auch ein
> Denkfehler.
> Also ich will in dem reg r20 eines tinytn44 das Bit 4 setzen. Nutze
> daher den Befehl
> SBR r20,4
> Ich Programmiere in Assembler.
> In der Simulation wird aber Bit 3 gesetzt, das raff ich einfach nicht da
> es in einem anderen Zusammenhang bei Bit 1 wunderbar funktioniert.

Du weißt aber, dass Bits in dem Fall von 0-7 bennant werden??

von Der M. (steinadler)


Lesenswert?

Dezimal 4 ist in Binärschreibweise halt nunmal 0b00000100
Das ist also Bit 3.

Wenn, dann müsstest du SBR r20, 8 schreiben

von Robert M. (xertno)


Lesenswert?

Irgendwie macht das jetzt Sinn. Man machchmal bin ich echt Doof.

von Sirko P. (poehli)


Lesenswert?

deswegen schreibe ich bei Bit setzen von solchen Registern lieber gleich 
0b00001000,
da sieht man auch ohne Rechnerei was gerade gesetzt wird, auch wenn es 
etwas rustikal ist und mehr Schreiberei.

von Robert M. (xertno)


Lesenswert?

Nee das geht so bei mir net. Das ist die Fehlermeldung.
error: Operand 2 out of range: 0x8

von Der M. (steinadler)


Lesenswert?

Robert M. wrote:
> Nee das geht so bei mir net. Das ist die Fehlermeldung.
> error: Operand 2 out of range: 0x8

Dann unterstützt dein Compiler keine Zahlen in Binärschreibweise.

von ecslowhand (Gast)


Lesenswert?

Muss heissen:
1
sbr r20, (1<<3) ; Bit 3 setzen

LG EC

von Rolf Magnus (Gast)


Lesenswert?

Die Gemeinheit ist, daß SBI (Set Bit in I/O Register) die Nummer des Bit 
haben will, während SBR (Set Bit in Register) einfach nur ein anderer 
Name für ORI ist und daher nicht die Nummer, sondern die Wertigkeit 
braucht.

von Michael U. (Gast)


Lesenswert?

Hallo,

um noch genauer zu sein, er will eine Bitmaske, genau wie cbr.

Das hat den Vorteil, daß man gleichzeitig mehrere Bits setzen oder mit 
cbr löschen kann.

sbr r20,0b00010001 setzt Bit 0 und 4 (eben ein or)
cbr r20,0b00010001 löscht Bit 0 und 4 (ist ein and mit dem 
Einer-Complement)

Bei sbi und cbi geht das so leider nicht, da ist es die Bitnumemr und 
somit immer nur 1 Bit änderbar.

Auch bei sbrs und sbrc beachten, dort ist es auch die Bitnummer, genauso 
wie bei sbis und cbis für die I/O...

Gruß aus Berlin
Michael

von A.K. (Gast)


Lesenswert?

Empfehlung: nicht die Menmonics SBR/CBR verwenden, sondern die 
identischen Befehle ANDI/ORI. Erspart Missverständnisse hinsichtlich 
Bitnummmer und Bitmaske.

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
Noch kein Account? Hier anmelden.