Wenn Du zwei 8 bit Werte addierst, kann das Ergebnis maximal 9 bit groß sein, das neunte bit ist bei den meisten CPU´s das carry- (übertrag) bzw. overflowbit, das man über eine Interruptserviceroutine abfangen kann. Im Klartext wenn 1 & 2 =512 dann PWM maximal.
Eine andere Möglichkeit ist es Nibbles zu bilden d.h. Du nimmst von beiden Werten erst die unteren 4 bit, addierst diese, dann die oberen 4 bit, und den eventuellen Übertrag aus der ersten Operation, addieren.
Ob Deine Hochsprachen das Unterstützen weiß ich nicht, in Assembler geht das aber, nicht easy, aber dennoch.
Gruß Hartmut