Wenn die IFs nicht zutreffen hat speed keinen definierten Wert. Etwas wie

unsigned char speed=100;

fehlt hier.