Register R0 - R31 bitweise adressierbar?

OP #1782870
Lesenswert?

Hallo!


Trotz Google, SuFu und Handbuch finde ich keine Antwort auf meine Frage:
(Aus einem Uni-Int. Fragenkatalog zur Prüfungsvorbereitung, deswegen 
denke ich, dass diese Frage auf einen im Praktikum verwendeten ATmega16 
bezogen ist)

Welche der Folgenden register sind Bit-Adressierbar?

R0 - R31
PORTA - PORTD
SREG

...

PORTA- PORTD ist klar - Da kann ich ja sbic oder ähnliche Befehle direkt 
auf ein bestimmtes Bit anwenden.

SREG ist auch klar, ich kann ja das Carry bit etc, einzeln setzen,

Aber R0-R31 ?
Vermutlich nicht, sbic oder ähnliches lässt sich ja nicht drauf 
anwenden. Ist das dann das entscheidende Kriterium?

In einem 2007er Beitrag hat Falk Brunner geschrieben:

>Ihr irrt, eure Eminenz. Der AVR HAT bitadressierbare Register, nämlich
>die SFRs 0..31, auf welche die Befehle sbi, cbi, sbis, sbic anwendbar
>sind.

Das sind ja die Special Function Register, aber ich dachte, dass davon 
auch nicht alle Bitadressierbar sind?

Und die R0-R31 liegen ja im Lower-Ram mit der Byte Adressierung 00-7F, 
wovon laut meinem Skript mindestens mal Byte-Addr. 20 - 2F 
Bitadressierbar sind. Dazu gehören aber die R0-R7 nicht, die haben 
Adresse 00-07, darüber kommen noch drei "Bänke", die nicht genauer 
definiert sind, aber zufällig bis Adresse 1F gehen. Sind das meine 
Gesuchten R8-R31?
Demnach wären diese nicht bitadressierbar.

Im AVR Tutorial unter "BITMANIPULATION" gibts einen beispielcode :


>andi r16, 0b11110000    ; löscht Bits 0-3 in r16, andi ist identisch mit
>                        ; cbr funktioniert nur für die Arbeitsregister >r16-r31

Das würde ja aber bedeuten, dass sie hier doch bitadressierbar wären!?


Hoffe mir kann hier jemand weiterhelfen?

Vielen Dank und Grüße,

Patrick
Persönliche Seite #1782928
Lesenswert?

Es kommt drauf an wie man "Adressierbarkeit" definiert. Für GPRs gibt es 
jau die SBRC, SBRS Befehle, während es selbst für die SFRs, die im 
bitadressierbaren Bereich liegen, nicht möglich ist, zB Bit 0 von R0 zu 
speichern. Es kann lediglich eine 1 oder eine 0 gespeichert werden, 
nicht ein Variabler Wert.

Letztendlcih hängt die Frage auch daran, ob ein 1-Bit breiter Zugriff 
(im Sinne eines 1 Bit breiten Speicherinterfaces) in AVR überhaupt 
vorhanden ist, oder ob die Bit-Befehle lediglich eine API darstellen, um 
Bitzugriffe zu vereinfachen.
Gast #1782932
Lesenswert?

> Und die R0-R31 liegen ja im Lower-Ram mit der Byte Adressierung 00-7F,
> wovon laut meinem Skript mindestens mal Byte-Addr. 20 - 2F
> Bitadressierbar sind. Dazu gehören aber die R0-R7 nicht, die haben
> Adresse 00-07, darüber kommen noch drei "Bänke", die nicht genauer
> definiert sind, aber zufällig bis Adresse 1F gehen. Sind das meine
> Gesuchten R8-R31?
Die AVRs kenne ich nicht (gut), aber dafür den 8051/52 und dessen 
Derivate. Dort gibt es vier Bänke á acht Registern R7-R0, aber beim 
AVR gibt es "nur" eine Bank, dafür mit R31-R0.
Und die laut deinem Skript bitadressierbaren Bytes von 0x20-0x2F sind 
exakt diejenigen, die ein 805x bit-addressieren kann.
Daher werfe ich mal die Frage in den Raum: Kann es sein, dass du einen 
Skript-Wirrwarr hast?

Ralf
OP #1782975
Lesenswert?

Tatsächlich, wenn man im Bildverzeichnis (ganz hinten im Skript!) 
nachsieht, bezieht sich das Modell auf einen ATmel 89Cx51, das Kapitel 
heißt "Der ATmega8" und im Praktikum haben wir einen ATmega16 verwendet.

Nicht besonders gut gelungen ..

Ok. . . jetzt weiß ich gar nichts mehr.

Kan man also nicht pauschal sagen?
Definition gabs bei uns keine "Offizielle". Ich bin auch nicht der 
Einzige, der diese Frage nicht beantworten kann ...
Möglicherweise hat der Fragensteller selbst keine Ahnung.


Nur mal nebenbei - kann ich einen 89Cx51 oder eine 805x eigentlich auch 
mit der gleichen Assemblersprache wie beim AVR programmieren?
Gast #1808439
Lesenswert?

Hi

>Weiß jemand, in welchen AVR-CPUs die neuen Befehle
>LAC, LAS, LAT und XCH zur Anwendung kommen?

Habe ich mich auch schon gefragt.

>Xmega-CPUs?

Die Befehle tauchen weder im A- noch im D-Manual auf.

Wer weiss, was ATML da vorhat?

MfG Spess

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren