La verdad que en eso ya no te puedo ayudar, No uso CCS.
Respecto a lo leido siempre me base desde el datasheet del micro que esta en ingles. Deberias buscar aca en el foro o por internet si es que encontras un articulo explicando como funciona el Timer y como hacerlo en CCS, por mas que no encuentres todo junto es una buena lectura y te va a llevar a comprender como funciona y eso a pasa a saber luego como hacerlo al entenderle correctamente.
La explicacion vaga es...
El timer es un contador, y cuenta pulsos de reloj, externos (como el cristal de 32768Hz) o internos (Oscilador interno o XT,HS). Algunos tienen un contador de 8 bits como el Timer0 y otros de 16 bits como el Timer1. Estos cuando pasan del maximo valor a 0, 0xFF a 0x00 - o de 0xFFFF a 0x0000, es decir se pasan de cuenta, activan el flag del timer, si tenes activadas las interrupciones va a entrar a la interrupcion. El truco esta en:
- Cargar un valor de preescaler , que es simplemente un divisor de frecuencia, suponete que tenes un cristal de 4Mhz y usas este, a la entrada del Timer tendrias 1Mhz (se dividide por 4 dentro del PIC en caso de ser el oscilador principal) o que es lo mismo que cada ves que cuenta 1 tarda 1us ( 1 / 1MHz ), si usas un preescaler de 1:4 , quiere decir que la frecuencia se divide en 4, es decir a la entrada del timer tendrias 250Khz y por lo tanto contaria 1 cada 4us.
- Cargar el valor del Timer, cargando lo que le falta para llegar a 0x00, ya que el contador es ascendente.
Hagamos un ejemplo.
Usas el Timer1 con un oscilador externo de 32768 Hz, lo haces pasar por un preescaler de 1:8, por lo cual entra una frecuencia de 4096Hz o que es igual a 244.14us cada cuenta.
El timer1 es de 16bits, por lo tanto lo maximo que puede contar es de 65536, esas 65 mil cuentas de 244.14us equivale a 16segundos.
Si quisiera 10 segundos (por que es mas facil de contar asi para llegar al minuto) deberia hacer: 10s / 244.14us = 40960
Tiene que contar 40960 pero es ascendente, por lo cual deberia cargar el timer con 65536 - 40960 = 24576
Es decir, usando un oscilador externo de 32768Hz en el Timer1, configurandolo para que use el mismo, configurarlo con preescaler 1:8, y cargando el numero 24576 cada ves que se rebalse ( que pase a 0 ) estarias contando de 10s en 10s cuando se active el flag del timer o entre a la interrupcion.