a ver si entiendo, estas llamando a una subrutina desde la interrupción?
Si es así, es ahi donde tienes el problema, en la atencion a la interrupcion, sea cual sea, tienes que ejecutar lo menos posible y volver a salir.
Luego en el bucle principal haces todo lo otro, escribir la memoria, seleccionar los digitos, lo que sea.
Mientras leo tu programa me imagino el diagrama de flujo, pero fijate si puedes hacerlo tu dibujado, aunque sea en una hoja con papel y veras que te ayudará mucho. Es una herramienta importante para esquematizar el flujo del programa y poder descifrar problemas como el que se te presenta.
Saludos, Willy