AVR Assembler Anfängerfrage Bitdefinition

Gast #106398
liebes Forum,

ich habe ein Register definiert. Jetzt möchte ich die 8 Bits im dem
Register auch noch mit Namen versehen, damit ich Sie später im
Programmcode leichter verwenden kann.

Wie werden die Bits definiert. Ich habe leider darüber keine doku
gefunden, und habe mir selbst was zurechtgereimt.

  .def   statbits=r25  ;Register zur allgemeinen Verwendung

  .equ  Ser_Busy=1
  .equ  TX_Ready=2
  .equ  RX_Ready=4
  .equ  int_Rx_Ready=8

So richtig, oder habe ich mich da verhaspelt?

Grüße aus München,

Chris
Gast #106399
glaube nicht das das so funktionert.. du legst hier im prinzip nur eine
variable statbits an, die das Register25 benutzt. Die Equations
erzeugen nur "Textersetzungen" für den Compiler, die nach der
Übersetzung nur noch als Zahlen im Code stehen.
Bin mir aber nicht zu 100% sicher.
Gast #106400
Schon fast richtig, musst aber bei 0 beginnen, die Werte sind 0...7.

Achte aber darauf dass du beim Setzen/Löschen nicht das Bit
(0...7)sondern die Bitmaske (0...255) brauchst.

.def flags=r16   ;das Register
.equ erstes=0    ;Name für Bit 0
.equ letztes=7   ;Name für Bit 7

...

 sbrs flags,erstes  ;überspringt wenn Bit7 gesetzt
 rjmp irgendwohin

...

 sbr flags,(1<<erstes) ;hier wird Bit 0 gesetzt, indem eine 1 um
                       ;den Wert von erstes (also 0) nach links
                       ;verschoben wird

 cbr flags,(1<<erstes)|(1<<letztes) ;hier werden Bit 0 und Bit 7
                                    ;gelöscht, also 2^0 OR 2^7 (129)
                                    ;dient als Maske zum Löschen...

Bit- & Bytebruch...
...HanneS...
Gast #106402
Sorry, Tippfehler... (wie peinlich...)

...

 sbrs flags,erstes  ;überspringt wenn Bit0 gesetzt (nicht Bit7!)
 rjmp irgendwohin

...

...HanneS...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.