Если проблема только с переполнением стека, то введите в прерывание еще одну переменную типа static, которая будет уровень вложенности указывать. Сразу при входе в прерывание делаете инкремент, а перед reti декремент. Перед тем как разрешать вложенные прерывания проверяйте уровень вложенности по значению это переменной. Если уровень вложенности больше установленного, то ветка где разрешены вложенные прерывания обходится.