Es obvio retovil que no va a funcionar. Ninguno de tus 2 if harian que funcione.. Y me voy a explicar...
En tu TMR1 tenes que usas contador para saber cuando es que llego a las 100 interrupciones, asi activar la salida.
Ahi dentro tenes 2 cosas importantes en una sola linea:
La primera es que tiene que ser IGUAL a 100, otro valor no es permitido, es decir la condicion de igualdad, la otra es el numero 100 que es tu limite el cual comparas.
Entonces vamos al programa principal y tenemos esto, nomas que escrito de otra forma:
if(input(PIN_B1)==0)
{
contador=0;
}
else
{
contador == 2550;
}
Ahora pensemos un momento.. Tenemos que durante la ejecucion siempre se esta ejecutando el while del main, es decir el codigo de antes siempre se esta ejecutando. Ocurre la interrupcion del timer, entra al timer incrementa contador y sale volviendo al main. En el main SI o SI se le asigna un valor. Hagamos un ejemplo practico
Supongamos que PIN_B1 esta en 0.
Mientras esta en el main, se pone un 0 en contador.
Entra a la interrupcion, incrementa contador a 1, sale
Vuelve al main, y contador en 0 de nuevo.
Lo cual nunca va a activar el TMR1 ya que jamas contador va a ser 100.
Ahora si hacemos lo mismo pero PIN_B1 esta en 1. Ocurre que contador en ves de quedarse siempre en cero, va a tener el valor 2550.
Entra a la interrupcion, aumenta en 1, al valor 2551 y sale
En el main nuevamente se le pone el valor 2550.
Nunca se llega a cumplir que contador sea igual a 100.
Luego de explicado el por que no te funciona, mi pregunta para vos es..
¿Por que queres cambiar esa variable? ( cual es tu objetivo )
PD: no es necesario deshabilitar las interrupciones y habilitarlas de vueltas como tenes en la interrupcion externa.