Еще раз повторюсь. Вы парни даже меня запутали с расчетами. Все гораздо проще. Любой таймер если он работает от внутреннего генератора(а не от внешнего сигнала) получает сигнал Fosc/4. Это и есть мин. время тиканья таймера. 4Mhz - 1000нс, 20Mhz - 200нс. Если используем предделитель 1:4 то просто умножаем мин. тик на предделитель. 4Mhz - 4000нс, 20Mhz - 800нс. Далее в зависимости от 8 или 16 битный таймер получаем нужную длительность. (F=4Mhz, Time=500мкс 8bit) 500мкс = 500 000 нс. 500 000/4000 = 125 тиков до переполнения таймера. таймер 8 бит($FF(255)) 255-125=131 начальное значение таймера которое нужно подсовывать таймеру в каждом прерывании что бы переполнение происходило каждые 500 мкс. Но не стоит забывать что при начале прерывания у нас идет сначала Context Save и проверка флага прерывания, это то же кушает какое то время( Overhead time или время перевыполнения) Поэтому возможно придется еще корректировать значение TMRxCON для точной выдержки интервалов времени. Тут на помощь и приходит или Шпротеус или MPLAB. Кому что по душе. Вот две программки для расчета значений Таймеров http://www.picbasic.ru/load....1-0-158 (предоставил наш Admin) и ту которой я давно пользуюсь, прилагаю. Успехов в понимании процессов
Возможно когда либо кто-то кто хорошо понимает в этом написал коротенькую заметку об использовании и установках таймеров , с простенькой табличкой что и как можно использовать . А то нужен был таймер на 12 часов а куда пнуться не понимаю . В результате использовал кусочек кода отсюда http://www.picbasic.ru/publ/2-1-0-19 . Возможно со временем разберусь