Hi,
also das |= ist eine Kurzschreibweise für:
LCD_PORT = LCD_PORT | (1<<LCD_RS)
was wird hier gemacht?
(1<<LCD_RS)
Als erstes wird die 1(dezimal) 0b00000001 um die Anzahl von LCD_RS nach
links geshifted. Hier: Typischerweise das Treiberregister des PINs mit
dem LCD_RS verbunden ist.
Bsp.: LCD_RS = 8 am 4ten PIN des LCD_Ports -> 0b00001000
Jetzt ist aber das Register (zum Bsp. nach einem Neustart unbeschrieben,
bdeutet alles mit Nullen gefüllt) mit 0b00000000 gefüllt.
Jetzt wird die ODER-Verknüpfung ausgeführt
0b00001000
| 0b00000000 LCD_PORT
============
0b00001000 -> Dieser Wert wird nun in das Register LCD_PORT
geschrieben.
So nun wollen wir einen weiteren Steuer-PIN, der links daneben
angeschlossen ist, umschalten.
LCD_PORT: 0b00001000
2ter PIN: | 0b00010000
======================
0b00011000 -> nun sind beide PINs angeschaltet
jetzt will man aber auch einen einzelnen PIN ausschalten ohne die
anderen Bits/Pins im Register zu ändern, dafür ist eine UND-Verknüpfung
und Invertierung zweckmäßig
LCD_PORT &= ~(1<<LCD_RS)
führt zu
LCD_PORT = LCD_PORT & ~(1<<LCD_RS)
Also schalten wir jetzt den ersten Treiber wieder ab
(1<<LCD_RS) 0b00001000 shiften an die entsprechende Postion
~ 0b11110111 invertiern
LCD_PORT 0b00011000
& 0b11110111 UND-Verknüpfung ausführen
======================
0b00010000 so, nun ist die eine 1 verschwunden
VG