Wieso 800 ?
Ist nur ein Scaling, mit der Idee, dass
--> SetMotorPower(left right); // ungeregelt
ca. die selbe tatsächliche ASURO Geschwindigkeit liefert wie
--> drive(left, right); //geregelt

Ja, Du hast Recht, es sollte
--> rpwm = regeln(rpwm, rightSpeed -800L*R_DIR*r_ticks/Ta); //R_DIR !!
heißen.