No acostumbro hacer tareas, pero... Ya me trae un poco mareado esta pregunta.
Te adjunto el código, según entendí, es lo que deseas hacer, sin usar interrupciones para que no se te haga muy complicado.
Primero, se inicializa el puerto A para lectura en RA0, puerto B para salida en RB0, se pone el puerto a 0 y se inicializa la variable bandera.
Segundo, si RA0 es 1, es decir, se pulso RA0, entonces invierte el valor de bandera, y continua con la secuencia.
Si no, entonces continua con la secuencia.
Tercero, La secuencia, primero revisa si Bandera es 1, es decir, si puede hacer la secuencia, si es así, entonces invierte el valor e RB0 y espera 10 segundos
Si no, espera 250 Milisegundos (para evitar los rebotes) y regresa al paso 2
Este código no es precisamente lo mejor, por que mientras esta haciendo la secuencia de 10 segundos, no se da cuenta si presionaste o no el botón del pulsador, pero funcionaría bien, si el tiempo fuera de medio segundo o un segundo. Aquí lo mejor, sería ir complicando más el proyecto para obtener algo mucho más fino, que puedas interrumpir en cualquier momento.
Habría que en lugar de esperar los 10 segundos, hacer un ciclo, donde haces esperas de 100 ms ó 50 ms, y entre espera y espera compruebes el estado de RA0, si cambio el valor, entonces interrumpes el ciclo, y marcas la bandera para que deje de hacer la secuencia de luces. Si la espera es de 100 ms entonces seria repetir 100 veces el ciclo.
Prueba este codigo e intenta hacer el ciclo que te digo en lugar de la espera de 10 segundos, y si tienes dudas, pregunta de nuevo.
Saludos!
-
Mike79