Forum: Mikrocontroller und Digitale Elektronik AVR, Assembler: Einzelnes Bit aus Register auslesen


von Tobl (Gast)


Lesenswert?

Hallo,

Vorweg: Ja, ich habe Tutorial und Forum durchsucht.

Hier die Frage: Wie kann ich ein einzelnes Bit aus einem Register 
(r16-r31) auslesen und auf set/clear prüfen? Das einzige, was mir 
eingefallen ist wäre der sehr langwierige Befehl

        push    r16
        and     r16, 0b00001000
        cpi     r16, 0b00000001
        brsh    Marke
        pop     r16
        rjmp    sonstwohin
Marke   pop     r16
        Befehle
        ...
sonstwohin

für z.B. r16, Bit 3. Schreibt bitte ggf. das verwendete Flag dazu.
Hoffe, ich hab den Befehl einfach nur übersehen.
Danke schonmal
Tobias

von Mathias (Gast)


Lesenswert?

Schau mal nach SBRS und SBRC in der Assembler-Hilfe.

Gruß

Mathias

von Falk B. (falk)


Lesenswert?

@  Tobl (Gast)

>Vorweg: Ja, ich habe Tutorial und Forum durchsucht.

Dann musst du das noch üben.

>Hier die Frage: Wie kann ich ein einzelnes Bit aus einem Register
>(r16-r31) auslesen und auf set/clear prüfen? Das einzige, was mir
>eingefallen ist wäre der sehr langwierige Befehl

Bitmanipulation

MFG
Falk

von Tobl (Gast)


Lesenswert?

Danke für die schnelle Hilfe. Dann ist alles klar.

von spess53 (Gast)


Lesenswert?

Hi

Es gibt noch eine Variante mit dem T-Flag:

    bst r16,2           ; Bit ins T-Flag laden
    brts/brtc ....      ; Sprung wenn Bit 1/0

Steht nicht in 'Bitmanipulation*

MfG Spess

von Falk B. (falk)


Lesenswert?

@  spess53 (Gast)

>Steht nicht in 'Bitmanipulation*

Na dann schreib's mal rein.

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.