Caro colega,
Primeiramente faltou você colocar algumas informações, tipo: valor do cristal, temporização desejada, etc., mas, já posso adiantar que você cometeu alguns erros no seu código. Tentei dar uma arrumada. Veja se dá certo e poste mais informações sobre o que quer fazer.
//declaração de variáveis
unsigned int timerStart = 1; //flag de inicio de tempo
unsigned int count = 0; //flag de contagem
//protótipo de função
void configura_timer();
//interrupção
void interrupt ()
{
if(T0IF_bit) // flag de estouro de 256 contagens
{
count++; //variavel de controle de contagem
if (count == 500) // quando a contagem chegar em 500
{
T0IF_bit = 0; //terminando a contagem, limpa flag de estouro
count = 0; // inicia contador em 0 para nova contagem
RA0_bit = ~RA0_bit; // inverte estado do pino
}
}
}
void main() {
TRISA = 0x00; // configura o pot A como output
PORTA = 0x00; // inicia todos os pinos em low
configura_timer();
while (1) {}
}
//função
void configura_timer()
{
OPTION_REG = 0x87; // conigura prescaler:1/256
INTCON.GIE = 0x01; // habilita interrupções globais
INTCON.PEIE = 0x01; // habilita interrupções de periféricos
INTCON.T0IE = 0x01; // habilita interrupção por timer
}