Forum: Mikrocontroller und Digitale Elektronik SBR <-> SBI


von Michael Kiausch (Gast)


Lesenswert?

Hi!
hat vielleicht jemand eine saubere lösung, ein bit in einem Register, 
z.b. an stelle 3 zu setzen/löschen, wie man es mit sbi/cbi mit den 
I/O-registern machen kann?
sbr ist ja gut und schön, aber leider nur ein OR und wenn ich jetzt z.m. 
eine konstante hab, die besagt an welcher stelle das bit gesetzt werden 
soll sieht man da ganz schnell alt aus.
gibts da eine schnelle und saubere lösung, oder muss man ueber das 
t-flag gehen?
schonmal danke im voraus,
mfg Michael

PS: ich benutze einen at90s4433 und avra unter linux

von crazy horse (Gast)


Lesenswert?

genau, dafür ist das T-flag da.
set bzw. clt
bld Rd,n

Das ist eine schnelle und saubere Lösung.
Übrigens genauso schnell wie sbi/cbi.

von Michael Kiausch (Gast)


Lesenswert?

hmja... ich habs ja fast befürchtet...
trotzdem danke :)
mein problem ist, dass das ganze in ner interrupt routine passiert, und 
ich das t-flag noch an anderen stellen benutze, das heisst ich muss 
höllisch aufpassen dass ich mir da nichts anderes damit zerschiesse, und 
deshalb wollte ich darauf verzichten :)
aber dann werd ich das da nochmal ein wenig umstricken...
dabei fällt mir grade ein:

sbr temp, 2^KONSTANTE

sollte theoretisch doch auch gehen, oder nicht?
da es sich hier um einen konstanten wert handelt muesste der assembler 
das doch vorher richtig austauschen, oder sehe ich das falsch?
mfg Michael

von mikki merten (Gast)


Lesenswert?

geht doch viel einfacher:

sbr  tmp,1<<KONSTANTE

wobei Konstante = Bit 0-7

von Michael Kiausch (Gast)


Lesenswert?

danke, genau das hat mir gefehlt :)

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.