mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Adressieren von einem Bit beim 8051


Autor: Markus B. (lordnoxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen.

Bin gerade dabei mich in die Welt des 8051 µC einzuarbeiten. Nun liest 
man hier und da, das selbiger µC im Bereich von 20h bis 2Fh einen 
Speicherbereich hat, bei dem auch die einzelnen Bits eines jeden Byte 
gesondert gesetzt werden können. Beispiel:

SETB 25h

Was ich jetzt nicht verstehe ist folgendes: "25h" ist doch die Adresse 
eines ganzen Byte. Woher weiß dann der Assembler welches Bit gemeint 
ist? Wo in obiger Anweisung steht welches Bit gemeint ist?

Folgenden Satz habe ich auch noch gelesen:

"Note, bit 25h is actually bit b5 of Internal RAM location 24h."

Warum soll die Byte-Adresse 25h eigentlich Bit 5 von Adresse 24h sein?


Bitte bringt mir Licht ins Dunkel!!! :-)
Hoffe ihr könnt mir Helfen. Danke!

Autor: Alexander S. (schroeder_90)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du musst setb #adresse (20h-2Fh). #Bit das du setzten willst

also bsp: setb 20h.1

Autor: Markus B. (lordnoxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok. danke.
Das ist dann also wie bei den Ports. z.B. P2.1

Aber was hat es dann mit dieser Aussage auf sich:
"Note, bit 25h is actually bit b5 of Internal RAM location 24h."
??

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
25h ist dezimal 37.
Also 4 Byte (32 Bit), dann das fünfte.
Weil die Bitgeschichte bei 20h losgeht, handelt es sich also
um das Byte 20h+4=24h. Darin dann das fünfte Bit.

Autor: Klaus Wachtler (mfgkw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS: nicht daß ich von 8051 irgendeine Ahnung hätte, aber es
ergibt sich aus dem oben zitierten.

Autor: Markus B. (lordnoxx) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich denke das habe ich dann verstanden. Nur nochmal zu Kontrollen.
Man kann also sagen:

SETB 25h    ist das Gleiche wie   SETB 24h.5


Je nach Schreibweise weiß dann der Assembler ob es sich bei der Hex-Zahl 
um eine direkte Bit-Adresse (SETB 25h), oder um eine
Byte-Adresse plus Angabe des darin befindlichen Bit (SETB 24h.5) 
handelt.

Stimmt das so?

Autor: Guido (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, weil 4 * 8 + 5 = 37 = 25h.

Autor: Jobst M. (jobstens-de)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht ist Dir dies ja noch nicht untergekommen ...


Gruß

Jobst

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.