Hallo

Ob der Check aufs Zero-Flag richtig ist, kann ich im Moment nicht nachpruefen... Ich mach das normalerweise in C

Ich nehme an, Du hast die LED's direkt an den PWM-Ausgang angehaengt und auch den Lichtsensor (als/via Spannungsteiler) an den ADC gekoppelt.
Falls ja, koennte es ein Problem sein, dass die LED ja nur "voll leuchten" oder "voll dunkel" sind, Zwischenstufen gibts ja bei PWM nicht. Ebenso beim Sensor; der hat dann nur 100% und 0% (kommt noch ein bissel aufs Timing an).
Somit waere der gemessene Wert immer groesser als der Sollwert. CCPR2L wird also immer dekrementiert, laeuft ueber (8Bit) und faengt dann bei 100% wieder an zu dekrementieren (sofern ich den Code richtig interpretiere)

Ein Problem bleibt noch, dass deine Regelung nur runter regelt. Wenn's also dunkler ist als es sein soll, wird das nicht mehr korrigiert.

mfg
Felix