Może spróbuj w ten sposób :
$crystal = 4000000
Config Pind.5 = Output 'ustawienie wyjścia na pinie który standardowo sygnalizuje przepełnienie timer-a
Config Timer0 = Timer , Prescale = 1 'ustawienie timer1 dzielnik 1
On Timer0 Przerwanie_timer1 'wywołanie przerwania po przepełnieniu timera
Timer0 = 145 'wartość początkowa od której timer bedzie zliczł impulsy timera
Enable Timer0
Enable Interrupts
Do
' główna petla programu, tu dasz to co program powinien robić
Loop
Przerwanie_timer1:
Timer0 = 145 ' ustawienie wartości początkowej
Return
Nie do końca jestem pewien swoich wyliczeń co do wartości startowej, może niech ktoś mądrzejszy jeszcze to sprawdzi, ale powinno być OK.
Niestety, nie mam dostępu do oscyloskopu, aby to sprawdzić

Jeżeli poprawnie wszystko policzyłem, i nic nie namieszałem z kodem

, sygnał na pinie d5 powinien zmieniać się z częstotliwością 36KHz.
Kurde ... straszny upał .... mózg mi się przegrzewa ....
I za każdym razem jak to liczę, wychodzi mi zupełnie inny wynik
Niech mnie ktoś poprawi.
Chodzi o 36 KHz , czyli przebieg zmieniający się co 27,8 uS...
Przy zegarze 4MHz i preskalerze = 1 , zmieniającym sie co 0,00000025 s tj. 0,25 uS to timer musi się zmienić jakieś 111 razy co nam daje wartość początkową timera 145.