Попробуй в следующей строке подобрать значение
tcnt2 = 252; // 16000000/31000/64=8 tcnt2=256-8=248.
нужно значение 252 уменьшать