Forum: Mikrocontroller und Digitale Elektronik was bedeutet bitadressierbar?


von Daniel S. (danilka)


Lesenswert?

Hallo,

AVR atmega8 hat zum Beispiel den Befehl sbr Rd,k.
Ist atmega8 deswegen bitadressierbar?

Wenn es diesen Befehl nicht gäbe, und die einzige Möglichkeit
dieses Bit zu setzen wäre, in pseudo-C
x = read8();
x |= 1<<k;
write8(x);
wäre das was man mit nicht-bitadressierbar meint?

Danke ;)

von (prx) A. K. (prx)


Lesenswert?

Ein Prozessor selbst ist höchstens bitadressierend, nicht 
bitadressierbar. I/O-Register und Speicherstellen können bitadressierbar 
sein. So ist also der Mega8 insgesamt nicht bitadressierbar, wohl aber 
dessen Port-Register.

von Daniel (Gast)


Lesenswert?

>So ist also der Mega8 insgesamt nicht bitadressierbar, wohl aber
>dessen Port-Register.

in sbr Rd,k ist Rd doch nicht zwangsläufig Portregister,
oder übersehe ich etwas?

von holger (Gast)


Lesenswert?

>in sbr Rd,k ist Rd doch nicht zwangsläufig Portregister,
>oder übersehe ich etwas?

Ja, nur eine handvoll Register ist bitadressierbar (bis 32?).
Das RAM jedenfalls nicht.

von (prx) A. K. (prx)


Lesenswert?

Yep, du übersiehst etwas. Den Befehl SBR mit einem Bit als zweitem 
Operanden gibt es bei AVRs nicht. Der real existierende Befehl SBR will 
zur besseren Verwirrung des Programmierers eine Maske und wird vom 
Assembler ausserdem in ORI umgesetzt.

Es gibt indes schon Bit-Befehle auf Register. Aber das macht auch wieder 
nur diese Register (eingeschränkt) bitaddressierbar, nicht aber "den 
atmega8".

von (prx) A. K. (prx)


Lesenswert?

Daniel S. schrieb:

> x = read8();
> x |= 1<<k;
> write8(x);

Wobei die Befehle SBI/CBI intern auch nichts anderes machen als dies. 
Eine wirklich echte Bitadressierung ist mir bislang nur bei der TMS9900 
Familie mit ihrem 1-Bit breiten I/O-Bus begegnet.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.