mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Codefragment


Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was bedeutet das folgende Codefragment?

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

Autor: yub (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
12

augenroll

Autor: Besenstil (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: The Devil (devil_86)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: unbekannt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da umrechnen mein ich ja....

Was bedeutet den die 0x38?

Binär == 00011100 ???

Autor: 42 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Was bedeutet den die 0x38?

> Binär == 00011100 ???

stimmt nicht

0011 1000

/rahul42

Autor: The Devil (devil_86)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: Fisch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: pluto (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie wäre es mit Windows Calc ?!

Autor: 42 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fast.
output setzt den Port. Das entspricht einer Zuweisung.

Ergo:
PORTB = ((1 << PB5) | (1 << PB4) | (1 << PB3));
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.

Autor: ARM-Fan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit

PORTB = 0x38
DDRB = 0x07

??

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.