Parece que no es el peescaler...

el problema lo tengo al habilitar la interupción por timer0
si pongo el timer, el programa, funciona, pero me tira los datos que le vienen en gana por el serial...

os dejo un example... a ver si encontrais algo raro... porque ya empiezo a desesperar...



OPTION_REG=%00000100 " prescaler 1:32
INTCON = %11010000 " Enable interrupt on general,PORTB.0, timer0
si pongo intcon = 11110000, funciona, pero hace lo que le viene en gana
si lo pongo = 11010000, todo funciona bien...

aqui la parte de código que maneja las interrupciones...
la he cortado, porque sino, ocupa mucho...
la interrupción de la uart, tampoco funciona...

Perdonar si son demasiadas preguntas, pero es que esta vez, parece que no quiere funcionar nada...
-----------------------------------------
asm
intt
bcf INTCON,GIE
;
GuardarRegistros
movwf wsave ;Salva W
swapf STATUS,W ;Invierte STATUS --> W
CLRF STATUS ; sets to BANK0
movwf ssave ;Salva STATUS
MOVF PCLATH,W
MOVWF psave ; save pclath
CLRF PCLATH
MOVF FSR,W
MOVWF fsave ; save fsr reg
;
BTFSC PIR1,RCIF ;hay enterrupción en la uart???
goto rxint ;si
btfsc INTCON,INTF ;? Hubo interrupcion en RB0 ?
goto In ;Si
btfsc INTCON,T0IF ;? Hubo sobrefujo en TMR0 ?
goto T0 ;Si
btfss INTCON,RBIF ;? Hubo algun cambio de RB4-RB7 ?
goto RestaurarRegistros ;No
rb47
.
goto RestaurarRegistros
.
.
.
.
T0 bcf INTCON,T0IF ;Pone a cero para poder salir de la ISR
decfsz ticks,f
goto RestaurarRegistros
movlw 122 ; Paso un segundo - actualiza tiempo
movwf ticks
movlw 6
movwf tmr0
clrf Convert ; Convert = 0
incf segundos,f
movf segundos,w
sublw 60
btfss STATUS,Z ; 60 segundos ?
goto RestaurarRegistros ; no
clrf segundos ; si
incf minutos,f
endasm
hserout["timer - ", dec(minutos),10,13]
asm
goto RestaurarRegistros
.
in
goto RestaurarRegistros
.
.
.
.
.
rxint
endasm
high portb.4
asm
BCF PIR1,RCIF
;
RestaurarRegistros
; Retorna habilitando todas las interrupciones
; Restore PCLATH, STATUS and W registers
MOVF fsave,W ; get saved fsr reg
MOVWF FSR ; restore
MOVF psave,W ; get saved pclath
MOVWF PCLATH ; restore
SWAPF ssave,W ; get saved status in w
MOVWF STATUS ; restore status ( and bank )
SWAPF Wsave,F ; reload into self to set status bits
SWAPF Wsave,W ; and restore
bcf INTCON , T0IF ; Resetea bandera de interrupcion por Timer0
bsf INTCON , GIE ; Activa interrupciones generales
retfie
EndAsm