Du kannst ja den externen INT benutzen.
In der ISR legst du fest, in welches Unterprogramm gesprungen werden soll.
Die einzelnen Unterprogramm selbst sind dann eine Endlosschleife, die so lange durchläuft bis der INT ein anderes Programm auswählt.
Das hat auch den Vorteil, das du in ein anderes Programm springen kannst, wenn eines noch abläuft. Ansonsten wäre es ja immer nur dann möglich, wenn ein Unterprogramm grade am Ende ist.