Variable auf Port schreiben und bits ausklammern

Gast #2054221
Lesenswert?

Hallo

Ich habe folgendes Problem. Ich möchte von einem Port die Pins 0-3 für 
eine Motor benutzen und  die Pins 4-7 für eine Anzeige. Jetzt möchte ich 
aber eine  Variable auf den Port schreiben und die Pins 0-3 sollen sich 
aber nicht ändern.

Bsp
 PORTC= 0b00001010  //Port hat folgenden Zustand
 x= 0b11000000      //jetzt möchte ich die variable x auf Port schreiben 
aber bit 0-3 sollen so bleiben wie sie sind
also sollte jetzt auf PORTC= 0b11001010 stehen.

kann mir bitte jemand sagen wie ich das hinbekomme

vielen dank
holger
Gast #2054248
Lesenswert?

..depends.. exakt läufts im Allgemeinen ungefähr so:
1
uint8_t temp = PORTC;
2
temp &= 0x0F;
3
temp |= neuerwertfürdieoberenbits;
4
PORTC = port;

Jetzt musst Du noch dafür sorgen dass der Block atomar ausgeführt wird, 
d.h. entweder sind da per se Interrupts deaktiviert oder Du machst noch 
einen ATOMIC_BLOCK(ATOMIC_RESTORE_STATE) (oder was vergleichbarss) 
aussen rum.

HTH

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren