mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SBR <-> SBI


Autor: Michael Kiausch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael Kiausch (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mikki merten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht doch viel einfacher:

sbr  tmp,1<<KONSTANTE

wobei Konstante = Bit 0-7

Autor: Michael Kiausch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke, genau das hat mir gefehlt :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.