Autor Tema: TMR1 en 16F872  (Leído 2100 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado karlosguay

  • PIC10
  • *
  • Mensajes: 41
TMR1 en 16F872
« en: 09 de Septiembre de 2004, 09:25:00 »
Hola a todos: Hacía tiempo que no entraba por aquí, estoy bastante liado con el curro. Y ahora tengo un problemilla, que tiene que ser una tontería, pero no doy con el. Solo quiero poder medir tiempo con el timer del micro, sin demasiada exactitud. Lo hago con el tmr1, y cada vez que se produce una interrupción, incremento una variable. Para ver si hace algo en el puerto B tengo unos leds conectados. En teoría muy fácil, pero llevo 2 días bloqueado. Aquí está el código, ya véis que no tiene mucho misterio.

"*****************************************************
define OSC 20

x       var bit
temporizador var word "variable que cuenta interrupciones

TRISB = %00000000 "batería de leds

x=0
portb=1
temporizador=7

On Interrupt Goto interrup " Define interrupt handler
INTCON = $90            " Enable INTE interrupt
T1CON = %00110001 "inicializo tmr1 y pongo en marcha

enable
"*****************************************************
PRINCIPAL:
WHILE x=0
    portb=temporizador
wend

"*****************************************************
"Aquí se controlan las interrupciones que se generan.
disable
INTERRUP:
"if pir1.0=1 then "interrupción tiempo (tmr1)
    temporizador=temporizador+1
"    pir1.0=0
"endif
Resume                  
Enable
"*****************************************************


Y lo que me pasa es que nunca se produce una interrupción, con lo cual el contador no se incrementa. Me he leido la datasheet, la he comparado con la de otro micro en el que sí me funciona y ya no veo nada.

A alguién se le ocurre algo???

Gracias de antemano

Desconectado karlosguay

  • PIC10
  • *
  • Mensajes: 41
RE: TMR1 en 16F872
« Respuesta #1 en: 09 de Septiembre de 2004, 10:44:00 »
Todo ok, me faltaba de añadir PIE1.0=1 para que empezara a contar. Por si sirve a alguien de ayuda.

Salud