mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik I/O-Register ansprechen


Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin

hab eine frage zu den I/O Register;

ldi r16, 0b00000001
out DDRB, r16


Als erstes wird die Konstante (logische 1) ins Register r16 geladen bzw.
dort abgespeichert;

Mit out wird dieses Register r16 wieder ausgegeben an den Port DDRB; da
es sich um eine logische 1 handelt, ist sind alle Port B.0 - B.7 als
Ausgänge konfiguriert, oder?

Bei diesem Bsp steht aber dabei, dass Port B.0 ein Ausgang und Port B.1
bis Port B.7 Eingänge sind. hmmm... heißt das, dass DDRB ohne Nummer das
Pin B.0 anspricht??? und alle Ports automatisch immer zuerst als
Eingänge konfiguriert sind??

Wie kann ich z.B. nur Port B.1 oder B.5 ansprechen?? Geht dass dann über
DDRB1 DDRB3??

David

PS: sorry für das doppelte posting

Autor: Gringo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Eins heisst Ausgang, eine Null heisst Eingang. Nein, das DDRB gilt 
fuer den ganzen Port, 0b00000001, sieben Eullen und ne Eins. Darstellung 
von Binaerzahlen. PortB.5 wird mit   "or 0b00100000" als Ausgang 
gesetzt.

Autor: Au weia (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/articles/AVR-Tutori...

Es gibt auch noch weitere Tutorials, deren Lesen sich lohnt...

Autor: David (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sind die ports wenn keine programmierung vorgenommen wird, als Ein- oder 
Ausgänge programmiert?

Autor: Sigint 112 (sigint)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hilft ein Blick ins Datenblatt... da steht das drin. Bei AVRs sind 
die PORTS i.d.R. beim Einschalten als Eingang definiert. Das hat den 
einfachen Grund, da Eingänge nur "relativ" schwer zu zerstören sind. 
Einen Ausgang muss man nur kurz gegen Masse oder Betriebsspannung 
schalten und schon ist dieser platt. Und 0b00000001 ist keine logische 
1... eine einzelne Bitstelle kann logisch 1 oder 0 sein. Nur in höheren 
Programmiersprachen (C,BASIC,etc.) definiert man 0b00000001 und 
0b00000000 manchmal als logisch 1 und 0.

Gruß,
   SIGINT

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.