ammm te va a regañar Surbyte por no poner el código como código. en fin creo te ayudara mas que cualquier foro utilizar el poderoso pero olvidado diagrama de flujo(las herramientas no son inventadas asi por asi). y por lo que veo tu problema se soluciona con una interrupción de hardware, deberías investigar un poco mas la respecto si cualquier cosa aqui estamos.
enserio hasta un diagrama de flujo y si ya lo tienes compartelo.
Saludos