Forum: Mikrocontroller und Digitale Elektronik Codefragment


von Dennis (Gast)


Lesenswert?

Was bedeutet das folgende Codefragment?

output(PORTB,0x38);
output(DDRB,0x07);

von yub (Gast)


Lesenswert?

12

augenroll

von Besenstil (Gast)


Lesenswert?

Der Code macht erst im Zusammenhang Sinn.
PortB:=0x38
DDRB:=0x07
Ohne das Schema dazu wird's schwierig werden, da ein
Hardwarepin bewegt wird.

B.

von The D. (devil_86)


Lesenswert?

damit wird definiert, was auf welchen pins ausgegeben werden soll..., 
musst du aber zuerst in bin umrechnen, damit du wirklich weißt auf 
welchem Pin was (0 oder 1) ausgegeben wird

von unbekannt (Gast)


Lesenswert?


von Dennis (Gast)


Lesenswert?

Da umrechnen mein ich ja....

Was bedeutet den die 0x38?

Binär == 00011100 ???

von 42 (Gast)


Lesenswert?

> Was bedeutet den die 0x38?

> Binär == 00011100 ???

stimmt nicht

0011 1000

/rahul42

von The D. (devil_86)


Lesenswert?

lad dir einen bin/hex-converter herunter (http://www.flamisch.at/ ; 
downloads), aber mit deiner annahme hast schon recht, da kommt dann z.B. 
01001100, jedes bit steht für einen anderen pin deines ports....

von Fisch (Gast)


Lesenswert?


von pluto (Gast)


Lesenswert?

wie wäre es mit Windows Calc ?!

von 42 (Gast)


Lesenswert?

> wie wäre es mit Windows Calc ?!

Was soll der Quatsch? Jede Hex-Ziffer steht doch für ein Nibble (4 Bit), 
die wird man doch wohl im Kopf übersetzen können, ist jedenfalls 
leichter als das "kleine Einmaleins".

/42

von Dennis (Gast)


Lesenswert?

Also könnte ich

output(PORTB,0x38);
output(DDRB,0x07);


auch als

PORTB |= ((1 << PB5) | (1 << PB4) | (1 << PB3));
PORTB &= ~((1 << PB7) | (1 << PB6) | (1 << PB2) | (1 << PB1) | (1 << 
PB0));


DDRB |= ((1 << PB2) | (1 << PB1) | (1 << PB0));
DDRB &= ~((1 << PB7) | (1 << PB6) | (1 << PB5) | (1 << PB4) | (1 << 
PB3));


schreiben?

von Karl H. (kbuchegg)


Lesenswert?

Fast.
output setzt den Port. Das entspricht einer Zuweisung.

Ergo:
1
PORTB = ((1 << PB5) | (1 << PB4) | (1 << PB3));
2
PORTB = ~((1 << PB7) | (1 << PB6) | (1 << PB2) | (1 << PB1) | (1 << PB0));

Mit |= kann man Bits setzen
Mit &= kann man Bits löschen

wobei jeweils der vorhergehende Zustand des Ports in die
Berechnung mit eingeht.

von ARM-Fan (Gast)


Lesenswert?

Wie wärs mit

PORTB = 0x38
DDRB = 0x07

??

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.