hola a todos, por mas que busque con el buscador, no he encontrado algo que me ayude a comprender bien el uso de las interrupciones, lo unic que e logrado comprender es como se configura una interrupcion, pero aun no logro entender como funciona, lo que encontre fue esto:
el registro intcon viene asi
|GIE|EEIE|T0IE|INTE|RBIE|T0IF|INTF|RBIF|
bit 7 6 5 4 3 2 1 0
EEIE: Permiso de Interrupción por fin de la escritura en la EEPROM
1: Permite se origine una interrupción cuando termina la escritura de la EEPROM de datos.
0:Prohíbe que se produzca esta interrupción.
TOIE: Permiso de Interrupción por sobrepasamiento del TMRO
1:Permite una interrupción al desbordarse el TMR0.
0:Prohíbe esta interrupción.
INTE: Permiso de Interrupción por activación de la patita RBOIINT
1:Permite la interrupción al activarse RBO/INT.
0:Prohibe esta interrupción.
RBIE: Permiso de Interrupción por cambio de estado en RB7.RB4
1:Permite esta interrupción.
0:Prohibe esta interrupción.
T0IF: Señalizador de sobrepasamiento del TMRO
1:Se pone a 1 cuando ha ocurrido el sobrepasamiento.
0:Indica que el TMRO no se ha desbordado.
INTF: Señalizador de activación de la patita RBOIINT
1:Se pone a 1 al activarse RBO/INT, al recibir un flanco activo desde el exterior.
0:Indica que RBO/INT no ha recibido un flanco activo.
RBIF: Señalizador de cambio de estado en las patitas RB7:RB4
1:Pasa a 1 cuando cambia el estado de alguna de estas 4 lineas.
0:No ha cambiado el estado de RB7:RB4.
Cuando GIE=0 no se acepta ninguna de las interrupciones. si GIE=1 solo se aceptan aquella interrupciones cuyo bit de permiso esta habilitado "1"
« Última modificación: 21 de Marzo de 2009, 03:08:32 por jhozate »
ahora bien por lo que he entendido si quiero programar la interrupcion en un 12f629 por medio de un pin (GPIO2) debo usar esta linea de comando:
INTCON = %10010000
eso lo tuve que lograr hacer mediante el datasheet del 12f629 en la pagina 15..
si bien voy continuo, si me equivoco en algo porfavor corrijanme
ahora leyendo el manual de pbp encontre este codigo ejemplo:
ON INTERRUPT GOTO myint
INTCON = %10010000
DISABLE
myint: led = 1
INTCON.1 = 0
RESUME
ENABLE
por lo que he entendido, las lineas:
ON INTERRUPT GOTO myint ' entendi que esta linea nos envia a la etiqueta "myint" en caso de que GP2 entre en estado alto
INTCON=%10010000 'en esta se configura la interrupcion para GP2, me vino la duda de saber si esta linea deberia ir antes de "ON INTERRUPT GO TO.."
DISABLE 'dice que se desabilita la interrupcion, pero no comprendo este comando aun
myint: led = 1 'aqui va el comando que se ejecuta al momento de la interrupcion
INTCON.1 = 0 'segun el datasheet este es una bandera que indica si la interrupcion fue correcta, pero no entiendo porque envia un 0 al flag por lo que dice el datasheet deberia ponerse en estado 1 y no en 0 cuando ya se haya realizado la interrupcion
RESUME 'es el equivalente al RETURN de GOSUB
ENABLE 'habilita la interrupcion, al igual que DISABLE no entiendo para que sirve esta linea
bueno me seria de mucha ayuda que alguien me explicara o me diera un ejemplo de las interrupciones, pues estaba trabajando con un teclado matricial, pero nececito usar las interrupciones con el teclado, pues usaba un tipo de barrido continuo para detectar la tecla, esto lo hacia en un 16f88, pero quiero aprender a usarlo con el 12f629, igual supongo que no hay problema al pasar el codigo de un pic a otro, gracias por su ayuda.
saludos!
Alex.

*olvide agregar, en caso de que la unica solucion para comprender este comando sea con lenguaje assembler, nececitaria una explicacion aun mas detallada pues estoy en ceros con el assembler desconosco de toda su sintaxis y funciones.