tu ecuación creo que algo mal (pregunto yo: es la misma ecuacion de TIMER0, 1 y 2, y en TMr2 hay postescaler) ya que no es el valor de TMR1 el qeu va en la ecuación sino:
Retardo=4* T_OSC*
(256-TMR1)*Preescaler, en caso de timer1 a 8 bits, si fuera a 16bits: 65536-TMR1; entonces ahi para 8bits tu TMR1 debe comenzar en 232, si fuera 16bits debe comenzar en 65512
asi se calcula el valor (o bueno en el tmr0 es asi), solo qeu no entendi mucho tu codigo, ya que de
bucle no saldra, y se quedará ahí y el TMR1 esta inactivo por tu definicion:
movlw b'0000000
0' ;Selecciono Prescaler '1' y TMr1 temporizador
movwf T1CON
ya que el bit 0 de ese registro en la activación del TMR1.
ahora parece que quieres usar interrupcion por desborde del TMR1 para contar tus 23us, y pues creo que tienes algunos errores en eso, ya que debes definir el org del vector de interrupcion que en este caso seria org 0x04; tb no hay necesidad de que toques el OPTION_REG creo ya qeu no usas el tmr0, solo en este caso te sirve para los pullups del portB; bueno yo lo haria asi:
org 0x00
goto inicio
org 0x04
goto interrupt
interrupt
.... aca lo que se hace cuando ocurra los 23us, ya que genera una interrupcion
movlw 0xff
movwf tmr1h,f
movlw 0xe8
movwf tmr1l,f ; se carga el valor 65512 al TMR1, el valor desde el cual comenzará la cuenta
bcf PIR1,TMR1IF
retfie
inicio
bsf STATUS,RP0
bcf STATUS,RP1
bsf PIE1,TMR1IE
bcf STATUS,RP0
movlw b'00000001' ;Selecciono Prescaler '1' y TMr1 temporizador
movwf T1CON
bsf INTCON,GIE ; habilitacion global de interrupociones
movlw 0xff
movwf tmr1h,f
movlw 0xe8
movwf tmr1l,f ; se carga el valor 65512 al TMR1
... otras configuraciones, como para 8 o 16bits por ejemplo, que no me la se, jeje
...
bucle
....
goto bucle
end
viendolo mejor, creo que la configuracion a 8 o 16 bits no existe ya que si quieres 8 bits siempre llenas el registro TMR1H con 0xff y trabajas solo con el TMR1L; depende del valor que uses... umm interesante, jeje