Forum: Mikrocontroller und Digitale Elektronik mega8 Portadressen in C


von Moritz Becker (Gast)


Lesenswert?

Hallo,

gibt es irgendwo eine Liste mit den Portadressen?
Ich habe zwar die Register im Datenblatt gefunden, kann damit
jedoch nicht viel anfangen.
Ich kann zwar etwas C, habe aber noch keinen AVR damit programmiert.

Dieses Schema eines Mega128 z.B. verstehe ich nicht.

0x01 PB0
0x02 PB1
0x04 PB2
0x08 PB3

Ist das so gemeint?

(00000001)
(00000010)
(00000100)
(00001000)

Wieso ist gerade das PortB?
Kann mir das bitte jemand erklären?

Vielen Dank,

Moritz Becker

PS Selbstverständlich habe ich schon Überall gesucht, nur vielleicht
nicht nach den richtigen Begriffen...

von Thomas Burkhardt (Gast)


Lesenswert?

Hi,

sowas gibt es für alle Ports, zumindest für die Pins, die diese
haben...
Ansonsten bedeutet es schon das, was du da aufgeschrieben hast. Ne
Liste der Portadressen gibt es auch, aber das sind die Pins. Die
Auflistung findest du typischerweise in den Includes. Allerdings soll
dir die wirkliche Adresse egal sein - verwende die symbolischen Namen,
dafür sind sie da.

von Tobi (Gast)


Lesenswert?

"Wieso ist gerade das PortB?"
das ist nicht portb, nur die pins an portb. portb hat eine 'normale'
adresse

diese aufteilung ermöglicht bitverknüpfungen der einzelnen portpins

von Moritz Becker (Gast)


Lesenswert?

Hi,

vielen Dank für die schnellen Antworten.
Nur zur Kontrolle:
Statt #define LCD_DC_PIN  0x10  //  PB4
könnte ich auch #define LCD_DC_PIN  PB4 schreiben?

Ich hab' gerade gesehen, dass ich mich etwas geirrt habe.
Ich kann den Portpin also nicht "ohne" PortB setzen?
Das geht immer nur so:
setzen:    PORTB |= LCD_DC_PIN;
rücksetzen PORTB &= ~LCD_DC_PIN;
(Wofür steht eigentlich das "|=" bzw "&="?

Gruß,

Moritz Becker

von Thomas Burkhardt (Gast)


Lesenswert?

Hi,

ich denke, du kannst ein wenig C ;-)

Das | ist ein bitweises Oder, |= Oder mit Zuweisung. & = bitweises Und,
&= Und mit Zuweisung, d.h. a &= b <==> a = a & b

von Moritz Becker (Gast)


Lesenswert?

Hi,

ja kann ich auch (dachte ich),
vergesse aber ständig dinge wie += ++ und so. ;-)

Vielen Dank

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.