Amigos, como vcs sabem eu tenho pouca experiência com a linguagem C. Preciso desenvolver uma rotina de tratamento da interrupção do timer 1 (16 bits) para ocorrer de 0,5 em 0,5 segundo e usar uma variável auxiliar chamada DIVISOR. Esta variável é inicializada previamente com o valor 120 e é multiplicada pelo 0,5 segundo do timer 1 para gerar uma base de tempo precisa de 60 segundos. Eu escrevi a rotina assim:
#int_timer1 //tratamento da interrupção
void trata_tmr1(){
set_timer1(16384+get_timer1());
divisor--; //tem mais instruções daqui pra baixo...
...}
Na função main tem o seguinte:
main(){
setup_timer_1(t1_external|t1_div_by_1);
set_timer1(16384); //valor inicial da contagem do timer 1
enable_interrupts(int_timer1); //chave da int. de timer 1 ligada
enable_interrupts(global); //chave geral das interrupções ligada
...}
Eu liguei um cristal de 32,768 kHz nos pinos RB6 e RB7 do PIC 16F628A para acionar o oscilador externo.
A minha função está correta? Se está, por que não funciona? Se não estiver, me dêem uma luz.
Obrigado.
Pask.