Wenn ich die Variabeln als Byte deklariere welchen unterschied macht dass?
Bist Du sicher, dass Du mit dem Bascom-Lernen wirklich ganz, ganz vorne angefangen hast?

Die Idee hinter meinem Ansatz ist die, den Timer überhaupt nicht mit irgendwelchen Werten vorzulanden, sondern ihn permanent durchlaufen zu lassen. Von 0 bis 255, und dann wieder von 0 bis 255, usw.

Wenn die Flanke des Signals steigt, übergibst Du den gerade aktuellen Timer-Wert an eine Variable, nennen wir sie mal Start. Wenn die Flanke fällt, hat der Timer logischerweise ein Stückchen weitergezählt, und in diesem Moment übergibst Du seinen neuen Wert an eine zweite Variable, die ich originellerweise Stop genannt habe.

Die Differenz zwischen Stop und Start ist die Anzahl der Schritte, die der Timer während der High-Phase des Impulses weitergezählt hat.

Weil man Byte-Variablen "über den Nullpunkt hinweg" subtrahieren kann, ist es dabei vollkommen egal, bei welchem Timer-Wert Du die Messung anfängst. Vielleicht wird das an einem Beispiel klarer:

Angenommen, es vergehen 50 Timer-Takte während der High-Phase des Impulses. Egal, bei welchem Wert der Timer im Moment des L/H-Überganges ist: Die Differenz ist immer 50!

Start = 25, Stop = 75, Stop-Start = 50
Start = 130, Stop = 180, Stop - Start = 50
Start = 220, Stop = 24 (weil der Timer inzwischen einmal "übergelaufen" ist), 24 - 220 ergibt auf Byte-Ebene aber auch wieder 50. Das ist so - probier´s mal aus!!

Und weil Timer1 16Bits umfasst, müsste man für die Verwendung dieses Timers die Variablen Start, Stop und Differenz als Words dimensionieren. Timer0 und 2 haben nur 8 Bits, deshalb reichen hierfür Bytes aus.

BTW: Hast Du schon mal mit einem Timer ´ne LED zum blinken gebracht?