у меня вообще пока что при 16 bit таймере, 8 бит не выходит точно считать, или отстаёт или бежит сильно.
В общем TMR0=63649
дёргаю ногу через таймер, получилось ровно 500.018 герц.
Я думаю если и будет вперёд время бежать то за 3 часа далеко не убежит.
До формулы я так и не добрался, я решил сперва просто изучить вообще таймер и как он работает, просто основы.
Посмотрел даташит, поклацал калькулятором.
Потом решил просто TMR0=0 посмотреть осциллографом и TMR=255 посмотреть в 8 бит режиме таймера. так вот TMR=255 это 3.09кгц а если 0 то блин потерял цифру, заново измерять не могу, собрал в корпус уже всё.
Вообще выяснилось что у меня уже стоит предделитель /4 то есть тактовая частота 8мгц выставлена а на самом деле буд то 2мгц, а кстати может я чего и там накосячил, может на самом деле на 2 мгц и работает.
Но OSCCON = 0b01111110; PLLx4 выключен точно.
PSA = 1; то есть делители выключены.
Получается что всеж таки по умолчанию делитель на 4 есть.
В общем переключился я на 16 бит а тут ну совсем же другая задница, в общем выставил от фонаря 63000 и прям почти точно попал в точку, ну тут уже спортивный интерес,
63500 выставил и прям почти совсем попал.

В общем доподбирался до 63649.
затем по такой формуле посчитал уже после подбора, 65535 - (частота/1000/(делитель 4)) но вот нихрена не точно получается. Все равно подобралось точнее.
по формуле 63535 получается 499 с чем то кгц, у меня встроенный генератор и может поэтому гуляет тактовая.