In general on the 8051, an interrupt source sets an interrupt flag, and the handler for that interrupt must explicitly clear that flag before returning, or else the interrupt will keep happening. You do not seem to be clearing any flags in your ISR (windspeed_read()).

I also do not see any place where you are configuring the hardware that will generate the interrupt in the first place.

How to make the code run only on interrupt?
What kind of non-technical training course do you suggest for a programmer? Example could be public speaking course, presentation skill, English, business writing, or anything not related to programming or software engineering itself.
