www.mikrocontroller.net

Forum: Compiler & IDEs wo ist PD0 bei b00001111


Autor: Nils (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe einen ATmega16

Wenn ich nicht alle Pin als Eingang bzw. Ausgang definieren möchte
gibt es die Möglichkeit auch über den Befehl.

PORTD =b00001111
zum Beispiel 4 Eingänge und 4 Ausgänge zu definieren.

Leider weiß ich jetzt nicht welches von den Pins PD0 ..... usw ist.
Da ich ein +5V Rechtecksignal an meinen AT16 geben möchte will ich jetzt 
nicht meinen Port kaputt machen indem ich ausprobieren in welcher 
Reihenfolge ich zählen muss.

Also heißt b00001111, dass PD0=1,PD1=1,PD2=1 usw.
und PD5=0,PD6=0,PD7=0 sind?

Viele Grüße

Nils

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du eine normale Dezimalzahl schreibst, ist die niedrigste Stelle 
ganz rechts.  Genauso ist es bei Binärdarstellung, also Bit 0 ganz 
rechts.

Autor: -GastXIV (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nils schrieb:
> Also heißt b00001111, dass PD0=1,PD1=1,PD2=1 usw.
> und PD5=0,PD6=0,PD7=0 sind?


b00001111,
 ^      ^----------------> PD0  =1
 |
 |-----------------------> PD7  =0

Autor: JW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DDRD = 0b00001111;
es ging doch um Ein-/Ausgang, oder ?-)

Autor: Nilix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@JW
> PORTD =b00001111
PD3..PD0 = AUSGÄNGE, PD7..PD4 = EINGÄNGE. Was ist daran kompliziert?

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nilix schrieb:
>> PORTD =b00001111
> PD3..PD0 = AUSGÄNGE, PD7..PD4 = EINGÄNGE. Was ist daran kompliziert?

Kompliziert?  Nichts.  Die dargestellte Anweisung macht das allerdings 
nicht.

Autor: Bastler (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber das Usermanual des entsprechenden uC..

Autor: JW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Nilix
DDR wie Data Direction Register, alles klar?
Ich hab halt immer den Drang unklares richtig zu stellen, was 
hoffentlich dem, der im Forum fragt, entgegen kommt ;-)

Autor: Justus Skorps (jussa)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mal abgesehen davon, dass es dafür das Datenblatt (und die Tuts) gibt:

so

> PORTD =b00001111

schreibt man es auch nicht!
PORTD = (1<<PD0) | (1<<PD1) | (1<<PD2) | (1<<PD3)

und schon sieht man gleich was Sache ist...

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Justus Skorps schrieb:

> so
>
>> PORTD =b00001111
>
> schreibt man es auch nicht!

Naja.  Man kann's auch übertreiben.  Bei den Bits in irgendwelchen
Steuerregistern, in denen jedes Bit eine komplett andere Funktion
erledigt, gehe ich mit deiner Argumentation mit.  Bei simplen 8-bit-
IO-Ports ist meiner Meinung nach die ausführliche Form oft weniger
übersichtlich, als da eine Zahl hinzuschreiben (egal ob hex oder
binär — mit ein wenig Übung liest man 8-bit-Hexzahlen genauso
fließend).

Du kannst ja mal einen Vorschlag unterbreiten, wie man die Tabellen
voller Binärzahlen in der Datei im Anhang lesbar mit irgendwelchen
expliziten Bit-Notationen aufschreiben würde. ;-)

(Ich sehe gerade, dass die Formatierung etwas verquer aussieht: bei
mir sind <TAB>s prinzipiell aller 8 Spalten, wie es seit VT100 üblich
ist.  Die Forensoftware scheint sie aber anders zu setzen.  Den Anhang
kann man leider nicht mehr nachträglich editieren.)

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hihi, wir hatten es hier doch letztens mal wieder über TABs vs. Spaces. 
Dein Beispiel zeigt mal wieder, wie gut das mit den TABs in der Praxis 
funktioniert. ;-)

(SCNR)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Rolf Magnus schrieb:

> Dein Beispiel zeigt mal wieder, wie gut das mit den TABs in der Praxis
> funktioniert. ;-)

Das File war ja eigentlich nur für meinen eigenen Gebrauch bestimmt,
nicht "public" (deshalb hat es auch keinen Lizenzvermerk, d. h. du
darfst es angucken, aber streng genommen nicht weiter verbreiten).

Für mich funktioniert das mit den 8er TABs prima, ich hatte damit
noch nie ein Problem. ;-)

Mir ist auch gar nicht ganz klar, wo die 4er-TAB-Unsitte eigentlich
her rührt, vermutlich aber von Editoren, die nicht in der Lage (oder
zu faul) sind, das Einrückungsniveau davon zu trennen, für wie viele
Spalten ein <TAB> steht.  Bis zum Eintreffen dieser Editoren (so vom
Gefühl her würde ich auf Anfang dieses Jahrtausends tippen) waren 8er
TABs gang und gäbe, weil sie praktisch jedes Terminal und jeder
Drucker auch genau so dargstellt hat (eben seit DEC VT100).

Langer Rede kurzer Unsinn: für einen Austausch zwischen verschiedenen
Welten würde ich mittlerweile wohl auch die TABs einfach durch
Leerzeichen ersetzen lassen.  Ist eben nur nicht meine Voreinstellung.

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.