Cuando decis detener, me imagino que estas hablando de que comienze de nuevo todo un bucle SIN pasar por las demas instrucciones y en cualquier lugar donde ocurra.
Detener el flujo de lo que estas haciendo a no ser que cada sentencia este bloqueda por este bit no va a ser posible facilmente. Hay muchas cosas que quedarian cargadas, entre ellas el stack/registros, etc.
Si quisiera realmente realizar eso ( lo que escribi al comienzo) se me ocurre solo una cosa y es casi involucrarse a nivel maquina.
Reinicializar el stack, esto se podria realizar si es que es posible saber el valor del puntero de stack al comienzo de la funcion (es decir acceder a los 32 registros y hacer una copia de los mismos), supongamos al final del setup(), Ahi guardar cual es el puntero al stack. Tambien fijar una etiqueta para realizar un salto incondicional (un goto)
De esa forma la rutina de interrupcion, al ocurrir, retornaria el stack a su valor del final del setup, procede a activar las interrupciones ( ya que al entrar se deshabilitan ), limpiar flags, activar el bit y finalmente realizar un salto con un goto, para que no afecte al stack. Igual es muy rebuscado Y seria casi lo mismo que un reset, nomas que mantendrias todos los valores static o globales ( a no ser que lo reasignes en tu codigo ). Y tambien no deberias configurar los modulos ya que estan realizados, lo que si un reset podria afectar a las salidas, ya que uno setea las salidas a un nivel "default" en el setup, y estarian cambiando.
Tal ves generar un Reset sea mas sencillo. De todas formas el boton de parada deberia ser un zeta, es decir un boton que se queda presionado al hacerlo, y para liberarlo suele necesitarse un giro del mismo.
---------------------------
Ahora si queres que pare hasta que se resuelva el problema, que quede en un while (dentro de la interrupcion) hasta que las condiciones sean las apropiadas: vuelva el estado del pin a un valor alto.
---------------------------
La otra es protejer aquellas instrucciones donde se cambia algun puerto o que se maneje la parte de "potencia" que seria la que no deberia moverse ante una emergencia, con algun if, para que cuando ocurra salte al final de la funcion (con un goto o break o lo que sea ).
Es decir solo se ejecutarian las instrucciones que no harian daño, mientras que los puertos quedan como estan. Lo que si debes esperar que algo asi ocurra en tu programa, y que hay instrucciones que no se ejecutarian.
La otra es conservarlas dentro de los if a las instrucciones que modifican los puertos, para que no se ejecuten, asi termina todo el bucle sin realizar ningun daño alguno. Finalizado el bucle imagino que estara protegido ya por el bit ese.
---------------------------
Si alguno tiene mas ideas, las acepto

, es lo unico que se me ocurrio de como realizarlo.