Код
unsigned ticks;
(ticks >> 3) - 0x7ff;
В ticks можно складывать переполнения как ticks += 0x10000, а затем устанавливать младшие 2 байта из счетчика.
Или хочется не собирать все в промежуточную переменную?
Если нигде не напутал, то что-то такое
Код
byte overflows;
word res = (TCCR>>3) + (overflows<<13);
Правда не уверен, что это будет быстрее первого варианта.