This works as expected. The timer was not initialized correctly, because you skipped the Arduino core initialization.
The 16MHz AVR-based Arduinos can't process an interrupt every microsecond. To learn about programming AVR timers, see this excellent tutorial: https://gammon.com.au/timers
If you do end up using a multi-byte variable with interrupts, not only does it need to be declared volatile, access to it outside the interrupt service routine must be done with care.
Most ppl grab their own copy of such a variable, viz: