Dos Acciones para una interrupcion externa RB0

Hola escibo este tema en modo auxilio me medio jugue el aprobado a que esto estaba chupado y creo que me e pillado los dedos.
El tema es conseguir que mediante una interrupcion externa conseguir que si se pulsa una vez arranque un sistema (un juego de luces x ejemplo) y al volver a pulsar se pare el sistema y vuelva a posicion inicial.
el problema lo tengo con lo de volver a posicion inicial puesto que el retfie me devuelve siempre a la linea de programa siguiente y el programa sigue andando es una locura.. . . .

si quieren que meta el codigo que tengo hasta el momento lo hare
gracias de antemano si consigo resolverlo sin el cansino metodo del polling lo pondre aqui a disposicion de to2
 
lo que puedes hacer en utilizar una variable que cuente por cada interrupción y luego testeas el último bit de esta variable para ver si esta en 1 o 0
 
No entendí eso de "volver a la posición inicial..." pero manejar dos acciones con una interrupción no es muy difícil solo define un bit de cualquier registro como flag o bandera para verificar el estado de tu "evento" a controlar, por ejemplo:

- Define un bit como bandera y lo inicializas a cero al principio del programa (si el evento esta desactivado por default)

- Al producirse la primer interrupción verificas este bit y como estará a cero, saltas a activar el evento requerido, colocas el bit a uno y regresas de la interrupción...

- Cuando se produzca de nuevo la interrupción verificas el bit, como ahora estará a uno, saltas a la rutina para desactivar el evento, pones el bit a cero y regresas de la interrupción.....................

Espero haber acertado a lo que necesitas, si no dilo.

Saludo...
 
Muchas gracias a las respuestas:
eso es lo que ice yo lo que pasa que al parecer en ciertas rutinas de interrupcion externas con el RB0 el registro status y los 2 primeros registros disponibles se alteran o cambian de este modo que tenia que grabar su contenido en otro registro y devolverselos al volver de la rutina ......
osea que al final mi programa estaba bien solo tuve mala suerte con la configuracion :LOL:

Gracias por apurarse en sus respuestas
 
Atrás
Arriba