Nun, du brauchst einen Timer, der alle paar Millisekunden einen
Interrupt auslöst. Ob per Overflow oder Compare ist egal. In diesem
Interrupt prüfst du jeweils den Zustand des Schalters. Wenn du eine
fallende Flanke (Schalter wird geschlossen) erkennst, setzt du einen
Zähler auf 0, der die Interrupts zählt. Bei der nächsten fallenden
Flanke nimmst du den Wert des Zählers und rechnest den in die
Windgeschwindigkeit um.
Im Grunde ist das auch das, was du mit deinem Code machst, hatte ich
vorhin falsch verstanden.
Zur Umrechnung: Deine Overflows treten alle (1 / (8000000 / 65536)) =
8.192ms auf. Bei deinem Wert von 7 dauert eine Umdrehung also 7 * 8.2ms
= 57.4ms, bzw. 17.5 Umdrehungen pro Sekunde (Oder ca. 1000 Umdrehungen
pro Minute). Ob das hinkommt musst du selbst wissen.