Вы останавливаете процессор когда он находится в прерывании от PIT, следовательно он там и останется, и прерывание от ADC не может возникнуть, если оно ниже приоритетом и запрещены вложенные прерывания. Я бы советовал использовать флаг (если это возможно) и устанавливать его в прерывании от PIT, а в основной программе анализировать его, и если установлен - переходить в idle. Конечно можно поэксперементировать с приоритетами прерываний, вдруг поможет?