Weitere und ernste Probleme mit Fahrtenregler

meinst du vielleicht (run == 0) in deinem if ?

(run=0) setzt run auf 0 und liefert nebenbei immer false zurück.

if ( run=1 ) ist immer true, und verändert run ...

Schon schlimm, dass solche Sachen in C syntaktisch richtig sind und nicht mal Warnungen produzieren ...