Ich könnte mir vorstellen, dass die Timer_Isr die Debounce Sub unterbricht, während die Variable Tempo geändert wird. Das wird bei Word Operationen (braucht 16 Takte) möglich sein. Besonders bei schnell aufeinanderfolgenden Timer Overflows steigt die Wahrscheinlichkeit.
Du könntest mal das Addieren bzw. Subtrahieren durch Disable Interrupts schützen. Also so:

Disable Interrupts
Tempo = Tempo + 1000
Enable Interrupts