Ich sehe du hast Init(); hinter den anruf von Motorspeed(,). Und den interupt funktion ( SIGNAL (SIG_INTERRUPT1) ) ist sehr langweilig mit viele for-warte schleifen. Den interupt sol nur bemerken das einer taste eingedruckt is, und das in einer globalen (volatile) variabele speichern. Aber das motor-commando und led anschalten an den main oder andere funktion uberlassen. Interupts mussen schnell sein!

[edit]Die interupt fur der 'taster'-pin hat auch einer hohere prioritat als den timer interupt. Weil deine 'taster'-interupt so lange dauert wird die timer-interupt solange nicht ausgefurt. Deswegen wirkt den sleep funktion nicht.