Рано обрадовались, я ж не зря подмигивал. Тема мож и "избитая", но не до конца. Внешний сброс и внутренний (как бы он не делался) не равнозначны у них. Насколько знаю, при внутреннем сбросе не вся периферия автоматически переконфигурируется (например ф-ции выводов: P1.20/TRACESYNC, P1.26/RTCK и др.). Поэтому "сделать коректно не просто скачком на начало программы а именно со сбросом переферии" в полном смысле этого слова не получится. Копните документацию, может еще сюрпризы найдете .
Короче, "найди десять отличий и получи в подарок крышку от унитаза"