mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik zwei Fragen zur Portbearbeitung im AVR


Autor: Owen Senmeis (senmeis)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,

F1. Ich moechte Bit4 im PORTB im ATmega128 auf 0 setzen. Ist es korrekt 
mit
PORTB &= 0 << PB4;
?

Werden andere Bits dadurch beeinflusst?

F2. Sind
input_value = PINC;
und
input_value = (PINC7<<PC7)|(PINC6<<PC6)|(PINC5<<PC5)|(PINC4<< PC4)|(PINC3<<PC3)|(PINC2<< PC2)|(PINC1<<PC1)|(PINC0<< PC0);
identisch?

Besten Dank im Vorraus.
Senmeis

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist es korrekt
>mit

>PORTB &= 0 << PB4;

>?

Nein. "<<" ist ein Schiebeoperator, der Bytes oder größere Wörter um 
"PB4" nach links verschiebt.
Wenn ein Byte den Wert "0" hat, und man diesen verschiebt, bleibt er 
"0".

Richtig ist es so:

PORTB &= ~(1<<PB4);

So ist es auch im Tutorium beschrieben.


>Werden andere Bits dadurch beeinflusst?
Ja. Aber wenn du es richtig machst, wird der Inhalt des Portregisters 
gelesen, geändert und wieder zurückgeschrieben. Je nach Compiler und 
Bitanzahl wird auch optimiert.

>F2. Sind

>input_value = PINC;

>und

>input_value = (PINC7<<PC7)|(PINC6<<PC6)|(PINC5<<PC5)|(PINC4<< 
>PC4)|(PINC3<<PC3)|(PINC2<< PC2)|(PINC1<<PC1)|(PINC0<< PC0);

>identisch?

Der zweite Ausdruck ist totaler Quatsch.
Guck dir das Tutorium und ein C-Buch an!

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.