Achso, Du willst mit einem Prescaler 8 auf 20...ich hatte da doch etwas von 150 gelesen und dann bräuchtest Du einen anderen TCNT0 Wert und Presaler 1. Hab da was korrigiert, aber so ginge es auch.
Wertest Du das hier
timer = (256-16000000/8/100000)
jedemal aus oder nur einmal am Anfang? Startest Du den Timer danach?
Und von welchem Typ ist eigentlich Timer???
Wenn Du den Timer nach der Berechnung startest, entsteht ein Fehler von der Dauer der Berechnungszeit.
Ich glaube diese wenigen Programmfragmente reichen nicht aus, um genaueres zu sagen.
Gruß