1º
#use delay(clock=4000000) en lugar de #use delay(clock=20000000)
2º
fuses XT, ... en lugar de
fuses HS, ...
3º
Recalcular valores de timer1 sabiendo que:
Un Incremento de Timer se produce cada 4 ciclos de reloj o sea (1/FOSC)*4
con lo que antes se producía cada (1/20000000)*4=0,0000002 segundos
y ahora en cambio se produce cada (1/4000000) *4=0,000001 segundos
pero como además en TIMER1 tienes un preescaler de T1_DIV_BY_8
con lo que todo es 8 veces mas lento luego
antes se producía cada (1/20000000)*4*8=0,0000016 segundos
y ahora se produce cada (1/4000000) *4*8=0,000008 segundos
Como el TIMER1 es un contador de 16 bits cuenta desde 0 hasta 65535 (2^16)
o sea que cuenta 65536 veces lo anterior y como tienes habilitada la interrupción
por desbordamiento del TIMER1 o sea que se interrumpe cada vez que TIMER1 pasa
de 65535 a 0 entonces dicha interrupción
antes se producía cada (1/20000000)*4 * 8 * 65536= 0,1048576 segundos
y ahora se produce cada (1/4000000) *4 * 8 * 65536= 0,524288 segundos.
Veo en tu post que solo aparece una referencia al contador mediante timer_count que
se incrementa cada interrupción TIMER1 luego el valor de 1700 interrupciones que cuenta
antes eran 0,1048576 * 1700 = 178,25792 segundos
y ahora son 0,524288 * 1700 = 891,2896 segundos
por lo que para que los segundos en interrupciones sean lo mismo debes
usar el valor de 340 en lugar de los 1700 ya que 178,25792 / 0,524288 = 340 y
entonces el tiempo que esperas es el mismo.
Esta es la forma larga, razonada, lógica y elegante de decirtelo ...
La que yo hubiese hecho es ....
Como 20 Mhz es 5 veces mas rápido que 4 Mhz entonces
1700/5 = 340 ja ja ja