Mit OUTSET werden nur die bits an den entsprechenden Stellen im OUT Register gesetzt. Sie Werden aber nicht gelöscht, wenn da eine 0 steht!
Mit OUTCLR werden die bits entsprechend gecleared, wenn da eine 1 steht. 0 macht wiederum nichts.

Entweder du greifst auf das LED.OUT zu, beschreibst aber dann den kompletten PORT.
Daten können überschrieben werden, bzw. müssen erst geladen, dann manipuliert und wieder gespeichert werden. (ist in C mit einem "|=" bzw. "&=" anstelle des normalen "=" gelöst)
Hier können Daten verloren gehen, wenn gerade ein Interrupt einspringt und den selben Port manipulieren will. (passiert eher selten, gibt aber lustige Fehler )

Oder aber du arbeitest mit den SET und CLR Registern.

Kommt aber auch immer darauf an, was der PORT machen soll, mal ist das eine dann das andere besser geeignet. Beides hat seine Vor- und Nachteile.