Forum: Compiler & IDEs wo ist PD0 bei b00001111


von Nils (Gast)


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

von Hc Z. (mizch)


Lesenswert?

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

von -GastXIV (Gast)


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

von JW (Gast)


Lesenswert?

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

von Nilix (Gast)


Lesenswert?

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

von Hc Z. (mizch)


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.

von Bastler (Gast)


Lesenswert?

Aber das Usermanual des entsprechenden uC..

von JW (Gast)


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 ;-)

von Justus S. (jussa)


Lesenswert?

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

so

> PORTD =b00001111

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

und schon sieht man gleich was Sache ist...

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

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.)

von Rolf Magnus (Gast)


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)

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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.

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.