www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik wie bit ändern in nicht-IO register?


Autor: fksystems (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wollte in dem MCUCR-register ein bit von 0 auf 1 schalten. aber der
rest des registers soll so bleiben.

eigentlich wäre da ja sbi schön. aber das geht ja nur bei
io-registern.

wie mache ich das jetzt bei einem nicht io-register?

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MCUCR ist ein IO-Register...

Anyway, die generische Lösung ist: IO-Register einlesen, Bit setzen,
IO-Register rückschreiben.

Autor: fksystems (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
komisch. aber warum sagt bei

sbi MCUCR, 5

dann der assembler/kompiler "error: illegal argument type or count" ?

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die sbi/cbi sind auf den I/O Bereich 0x00-0x1F beschränkt. I/O Register
in belibieges register R16-R31 laden bit entsprechend manipulieren,
zurückschreiben und fertig :-)

Autor: fksystems (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm.. und noch was:
was ist eigentlich der unterschied zwischen sbi und sbr. verändern
nicht bei ein einzelnes bit. was genau ist da der unterschied?

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SBR ist genau die Antwort auf Deine Frage; mit diesem Befehl kannst Du
einzelne (oder mehrere) Bits in einem der Register R16-R31 setzen.

sbr r16,0b00001000

setzt z.B. Bit 3 in Register 16.

Gruß, Frank

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...

SBI wirkt auf die ersten 32 I/O-Register, SBR dagegen auf die oberen 16
Allzweckregister.

Gruß, Frank

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wußte noch gar nicht, daß es auch ein SBR gibt...  Aber ganz zufällig
hat SBR den selben Opcode wie ORI. ;-)  (Dort hätte ich es auch
gesucht.)

Autor: Frank Linde (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, die wundersame Befehlsvermehrung bei ATMEL ist immer wieder für
Überraschungen gut. ;-)

Gruß, Frank

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.