Bueno, vamos a ver si soy capaz de explicarme. Tienes razón en que T1 debe valer 0 en esta versión del programa y que es una solemne tontería guardar ese valor si acabamos de hacerlo igual a cero.
Pero esto es un añadido al programa original que no llevaba el set_timer1(0);
Quiero decir que realmente no le hace falta ya que si T3>T2>T1 sean cuales sean los valores de T3, T2 y T1 hacen que tengamos el pulso completamente definido con los tres flancos: inicio, cambio y final. Pero ... y es un pero muy importante ... siempre y cuando el pulso completo empiece y termine en la misma vuelta del Timer1.
Como sabes un Timer empieza a contar en 0x00 y acaba en 0xFF, si es de 8 bits, y vuelve a empezar por 0x00 sin solución de continuidad. Entonces puede darse perfectamente el caso de que el primer flanco nos llegue con el estado del Timer1 muy avanzado con lo que la variable T1 podría tener un valor muy cercano a 0xFF, y con ello se produciría el caso de que los restantes flancos nos llegasen tras el desborde del Timer1, su paso de 0xFF a 0x00, con lo que T2 y T3 serían entonces menores que T1.
Esto haría que nuestro cálculo de Pulso en Bajo = T2 - T1, Pulso en Alto = T3 - T2 y Pulso completo T3 - T1 no sería válido sin contar con las vueltas completas o desbordes del Timer1.
Como esta serie de artículos eran para primerizos en esto de los PIC's no me pareció oportuno complicar los cálculos poniendo una variable que indicase el número de veces que ocurría este tránsito en pleno pulso del desborde del Timer. Porque la verdad es que la cosa se complica un poco y la rutina deja de ser tan extremadamente clara como quería conseguir.
Así que opté por la solución mas fácil y que era poner a cero el Timer1 al llegar el primer flanco. Con esto conseguía que si el pulso era mas corto que el tiempo que tarda el Timer1 en dar una vuelta completa la formula de T3-T2-T1 sería siempre verdadera y no habría que complicar nada. Asi que puse el Set_Timer1(0) tras la primera entrada en la interrupción y esperé a que T2 y T3 fuesen siempre menores a 0xFF pero mayores a T1 (que yo había puesto a cero).
Esa es la explicación de tan extraña secuencia de instrucciones.