Portmanipulation



Die digi­ta­len und die ana­lo­gen Pins des Ardui­nos sind in drei Grup­pen auf­ge­teilt:

Funk­tio­nen wie digi­tal­Wri­te() und digi­tal­Read() sind rela­tiv lang­sam in der Aus­füh­rung und manch­mal wer­den Pro­gram­me mit vie­len Ein- oder Aus­gän­gen kom­plex und schwer überschaubar.Deshalb ist es oft über­sicht­li­cher die Pins mit­hil­fe der Ports zu defi­nie­ren und zu schal­ten.

Es exis­tie­ren drei soge­nann­te Regis­ter:

Regis­terFunk­ti­on
DDR(D,B,C)Pins als INPUT = 0 oder als OUTPUT = 1 defi­nie­ren
PORT(D,B,C) Pins als HIGH = 1 oder als LOW = 0 fest­le­gen
PIN(D,B,C)gibt den Zustand der Pins an, die im DDR-Regis­ter auf Input gesetzt wur­den

Das Regis­ter wird jeweils mit dem Namen des Ports (D, B oder C) ergänzt.
Beim Zugriff auf die Ports wird jeweils ein Bit gesetzt. Sein Wert ist ent­we­der 1 = an, oder 0 = aus

Bei­spie­le:

Digi­ta­le Pins 7, 6, 5, 4 und 3 als OUTPUT set­zen

DDRD = B11111000;

Digi­ta­le Pins 7, 6, 5, 4 und 3 auf HIGH set­zen:

PORTD = B11111000;

Tas­ter an Pin 13 als INPUT set­zen

DDRB = B00100000;

PUL­L_UP-Wider­stand an Pin 13 ein­schal­ten

PORTB = B00100000;

Bei­spiel: Wech­sel­b­lin­ker mit Ports

Bei­spiel: Ampel

Ein­zel­ne Bits wer­den mit den Ope­ra­to­ren << eine Posi­ti­on nach links und >> eine Posi­ti­on nach rechts ver­scho­ben.

Nach rechts schie­ben:

PORTD = PORTD >> 1;

PORTD = PORTD >> 1;

PORTD = PORTD >> 1;

PORTD = PORTD >> 1;

PORTD = PORTD >> 1;

Nach links schie­ben:

PORTD = PORTD << 1;

PORTD = PORTD << 1;

PORTD = PORTD << 1;

PORTD = PORTD << 1;

PORTD = PORTD << 1;

Bit­ma­ni­pu­la­ti­on

Der Para­me­ter ~ kehrt den Wert eines Bits um:


Letzte Aktualisierung: Jan. 2, 2026 @ 10:11