Schau noch mal im letzten Beitrag vor Deinem. Habe es geändert.

Allerdings glaube ich auch, dass das
Code:
R = (uint8_t)R;
überflüssig ist. Weil der kleinste Typ, den der Arduino kennt, ist: integer
Er würde den von Dir geglaubten 8-Bit-Wert vermutlich als Integer ablegen/speichern. So, wie er nach der Berechnung schon vorliegt.