Disculpa para informacion tendrias q remitirte al datasheet o si queres profundizar mas a la hoja especifica del Timer para los dsPIC y PIC24, que lo encontras en la pagina de microchip.
Yo solo te puedo ayudar con una sola cosa y es un codigo que hice para probar el timer, pero... esta en ASM30
.include "p33fj32mc204.inc"
;..............................................................................
; Configuracion, Palabras sacadas del include.
; Primero va el registro con 2 guion bajo (__FOSC) por ejemplo y luego la
; configuracion del mismo
;..............................................................................
config __FOSCSEL, FNOSC_LPRC & IESO_OFF
config __FOSC, POSCMD_NONE & OSCIOFNC_ON & FCKSM_CSDCMD
config __FWDT, FWDTEN_OFF
config __FPOR, FPWRT_PWR1 & ALTI2C_OFF & LPOL_ON & HPOL_ON & PWMPIN_ON
config __FGS, GCP_OFF
;..............................................................................
;Declaraciones Globales:
;Aca declaramos las etiquetas que pueden ser usadas por otros archivos y
;tambien los vectores de interrupcion, los nombres de estos se peuden ver en
;el archivo de linker p33fj32mc202.gld para este caso
;..............................................................................
.global _wreg_init ;No es necesario pero esta por si algun otro
;archivo desea usarlo
.global __reset ;Indicador del vector de interrupcion.
.global __T1Interrupt ;Vector de interrupcion del TM1
.global __T3Interrupt ;Vector de interrupcion del TM3
;..............................................................................
;Iniciacion de Puntero de pila y registros W
;..............................................................................
.text ;Indicador para el compilador de inicio
__reset: ;de codigo de programa, para ubicarlo en la memoria
MOV #__SP_init, W15 ;Inicializacion del puntero de pila, valor dado por
MOV #__SPLIM_init, W0 ;el linker p33fj32mc202.gld
MOV W0, SPLIM
NOP ;Necesario un NOP luego de inicializar
_wreg_init: ;Limpieza de registros de W0 a W14
CLR W0 ;Siendo W0 la direccion 0x0000 del SFR
MOV W0, W14
REPEAT #12 ;Se repite la instruccion que le sigue
MOV W0, [++W14] ;Con un pre incremento para ir borrando uno
CLR W14 ;por uno hasta W13 y luego se borra W14
;que sirvio de puntero
;..............................................................................
;Configuracion de pines
;..............................................................................
mov #0xffff, W0
mov W0, ADPCFG
clr PWM1CON1
clr PWM2CON2
; bclr ADPCFG,#PCFG0 ;Configuro AN0 como entrada analogica
mov #0xFFFC, W0
mov W0, TRISA ; Ponemos los pines como salida a RA0-RA1
mov #0x0000, W0
mov W0, TRISB ; Ponemos todos los pines de salida RB0-15
mov W0, ODCB ; Se configuran los pines para no trabajar como
; como colector abierto.
mov W0, ODCA ; Se configuran los pines para no trabajar como
; como colector abierto.
mov W0, PORTB ; Limpio los valores del PuertoB , probando.
mov W0, PORTA ; Limpio los valores del PuertoB , probando.
mov W0, LATB ; Limpio los valores de los latch
mov W0, LATA ; Limpio los valores de los latch
;..............................................................................
;Configuracion del Timer 1
;..............................................................................
; Registro de interrupcion IEC0
bset IEC0,#T1IE ; Habilito interrupcion del TM1
bclr IFS0,#T1IF ; Limpio Flag TM1 por las dudas
;Registro TMR1
clr TMR1 ; Limpio registro del TM1
;Registro PR1
mov #0x3FF8,W0 ; Cargo periodo en PR1
mov W0, PR1 ; Tiempo : 1s
; Registro T1CON
clr T1CON ; Selecciono prescaler 1:1
bset T1CON,#TON ; Activo TM1 para la cuenta
;..............................................................................
;Configuracion del Timer 2/3 - 32 bit
;..............................................................................
; Registro de interrupcion IEC0
bset IEC0,#T3IE ; Habilito interrupcion del TM3
bclr IFS0,#T3IF ; Limpio Flag TM3 por las dudas
; Las interrupciones se manejan con el TM3
; Para 32 bits
;Registro TMR3:TMR2
clr TMR2 ; Limpio registro del TM2
clr TMR3 ; Limpio registro del TM3
;Registro PR3:PR2
mov #0x0001,W0 ; Cargo periodo en PR3:PR2
mov W0, PR3 ; quedaria 0x00013FF8
mov #0x3FF8, W0 ; Tiempo: 5s
mov W0, PR2
; Registro T2CON ; Al ser de 32 bits el registro
; T3CON no es tenido en cuenta
clr T2CON ; Selecciono prescaler 1:1
bset T2CON,#T32
bset T2CON,#TON ; Activo TM2 para la cuenta
;..............................................................................
;Programa Principal
;..............................................................................
MainLoop:
nop
bra MainLoop ; Inicio nuevamente
;..............................................................................
;Rutina de interrupcion TM1
;..............................................................................
__T1Interrupt: ; Vector de interrupcion del TM1
bclr IFS0,#T1IF ; Limpio bandera de interrupcion
clr TMR1 ; Limpio registro de cuenta del TM1
btg LATA,#LATA0 ; Mi codigo, cambio valor del PortB.RB0
retfie ; Vuelta de la interrupcion
;..............................................................................
;Rutina de interrupcion TMR 2/3 32 bit
;..............................................................................
__T3Interrupt: ; Vector de interrupcion del TM3
bclr IFS0,#T3IF ; Limpio bandera de interrupcion
clr TMR3 ; Limpio registro de cuenta del TM3
clr TMR2 ; Limpio registro de cuenta del TM2
btg LATA,#LATA1 ; Mi codigo, cambio valor del PortB.RB1
retfie ; Vuelta de la interrupcion
;----------------- Fin del codigo ---------------------------------------------
.end