www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Bitoperationen mit AVR


Autor: Michael Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich suche eine effektive Lösung um auf dem AVR Einzel-Bitoperationen
durchzuführen. Ich will z.B. Portpin PIND,4 mit dem Bit GPIOR0,0 EXOR
verknüpfen. (Nach Jahren 8051 bin ich leider etwas verwöhnt)

Danke!
misc

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PIND ist read only, Du kannst nur PORTD ändern:

if( GPIOR0 & 1<<0 )
  PORTD ^= 1<<4;


Peter

Autor: Michael Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Peter!

Das Ergebnis wollte ich auch nicht wieder auf dem Port ausgeben,
sondern in diesem Fall z.B. ins Carry schreiben. Egal.

Mich interessiert auch mehr, wie man das halbwegs elegant in Assembler
schreibt. Bitoperationen sind ja scheinbar keine Stärke der AVR..

misc

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Man muß da etwas um die Ecke denken:

        
        in     r16, GPIOR0
        sbic   PIND, 4
        inc    r16
        lsr    r16   ;C = GPIOR0.1 XOR PIND.4



Peter

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In 8051 ist das aber auch nicht viel einfacher:

[AVRASM]
        mov     c, GPIOR0.0
        jnb     PIND.4, l1
        cpl     c
l1:
[/AVRASM


Peter

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ups, Klammer vergessen:

In 8051 ist das aber auch nicht viel einfacher:
        mov     c, GPIOR0.0
        jnb     PIND.4, l1
        cpl     c
l1:


Peter

Autor: Michael Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was im Fall von EXOR richtig ist, sonst eher nicht so.

Dann werd ich mal ein bischen schieben..
Danke!

misc

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.