Плюс на это еще наложился идиотизм конструкции 16-и разрядного таймера в C8051F350. У него перед тем как загрузить значение периода, нужно полученный код предварительно вычитать из 65535. Потому, что таймер не от нуля считает до значения уставки, а от уставки до 0xFFFF.