Hm. Wahrscheinlich nicht. Leider schreibst Du auch nicht, was Dir jetzt
genau ein Problem macht.
Also:
0xC001 ist erstmal einfach irgendeine Zahl, zufällig genau die
Portadresse
(volatile unsigned char *) ist ein cast in einen Zeiger
mit
(volatile unsigned char *) 0xC001 wird aus der Zahl also ein Zeiger.
Damit dieser Zeiger auf der Linken Seite einer Zuweisung auftauchen
kann,
weil ja der Wert auf den dieser Zeiger zeigt verändert werden soll, muss
der Zeiger dereferenziert werden. Also
(*(volatile unsigned char *)(0xC001))
Die Klammern sind nur das übliche Vorrang-Geklingel.
Jetzt ein wenig klarer?