TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: CoreMain en 14 de Noviembre de 2008, 00:29:02
-
:-/Hola, soy nuevo en el foro....
Estoy aprediendo sobre interrupciones con el PIC 16F628A
Puedo manejar las interrupciones con TMR0 pero no puedo con TMR1
Este es un programa (PicBasicPro) muy sencillo con el que traté de familiarizarme con el TMR1 pero no me funciona en la práctica: se trata de dos LEDs conectados en RA.0 y RA.1.
El LED en A.0 está oscilando y el LED en A.1 se debe encender cuando ocurra la interrupción.
El prescaler para TMR1 está en 1:8, y el LED en A.1 se debe encender 1/2 segundo después de inicie el programa.
___________________________________________________________________________________
Ahora, el problema es que la interrupción no ocurre. Alguien me puede decir por favor en donde está el error?
___________________________________________________________________________________
Aquí está mi programa:
*********************************************************************************
;DEVICE: PIC16F628A
T1CON=%00110001 ;habilita interrupción en TMR1 y conf prescaler 1:8
PIE1=%00000001
INTCON=%10000000
PIR1.0=0
cmcon=7
trisa=%00000000
TMR1H=0
TMR1L=0
porta.1=0
ON INTERRUPT GOTO inte
leds:
TOGGLE porta.0
PAUSE 300
GOTO leds
DISABLE
;-----------------------------------
;HANDLER INTERRUPCION
inte:
TMR1H=0
TMR1L=0
HIGH porta.1
PIR1.0=0
RESUME
ENABLE
;-----------------------------------
*******************************************************************
Me salvarian la vida si me ayudan!
Gracias y saludos desde Ecuador
-
Hola amigo:
Creo que te falta habilitar el permiso de interrupcion del TMR1. Lo que estas realizando es lo siguiente:
T1CON=%00110001 ;habilita interrupción en TMR1 y conf prescaler 1:8. Aqui no habilitas la interrupcion, sólo pones en funcionamiento el TMR1
PIE1=%00000001. Aqui habilitas la interrupcion de TMR1
INTCON=%10000000. Aqui habilitas el bit general para permitir las interrupciones. Pero las imterrupciones del tMR1 no se controlan con el registro INTCON si no que están en otro registro "PIE" y para que este funcione tienes que colocar el Bit"6" del registro INTON y te deberia quedar de la siguiente forma:
[color=blue]T1CON=%00110001 ;habilita interrupción en TMR1 y conf prescaler 1:8
PIE1=%00000001
INTCON=%11000000.[/color]
Si no me he equivocado es ese el problema.
Esto lo puedes ver en la pagina 23 del datasheet.
F.
-
Lo probé... y Funciona!
Gracias Fer_TACA
Y excelente foro de micros.
-
De nada :mrgreen:
Pa eso estamos :lol:
F.