C Befehle für schieben und rollen

Gast #237339
Lesenswert?

Die Loop kann noch etwas vereinfacht werden, da links shiften
für unsigned char von links mit nullen auffüllt kann man die
Ausgabeschleife auch wie folgt schreiben:
1
void write_data(unsigned char data) //msb first 
2
{ 
3
  unsigned char mask; 
4
 
5
  for(mask=0x80; mask!=0; mask>>=1)
6
  { 
7
    if(data & mask) 
8
    { 
9
      PORTC |= (1<<PC0); 
10
    } 
11
    else 
12
    { 
13
      PORTC &= ~(1<<PC0); 
14
    }
15
  } 
16
}

mfg

Oliver
Gast #237341
Lesenswert?

Mit der Maske wird immer nur ein Bit eingeblendet
(0x80 = 0b100000). In der for-Schleife wird das Bit der Maske über Dein
Datenbyte geschoben und geguckt, was bei einer UND-Verknüpfung
rauskommt.

Rick

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