А вот тут нежно швырну камень в огород разработчиков. Такие слёты программ могут происходить на многих типах микроконтроллеров. Слетела, скорее всего, не программа целиком. Видимо, в тот момент, когда дернули крышку, контроллер что-то писАл в EEPROM. Либо, на падающем напряжении, стал хаотично выполнять какие-то инструкции, которые что-то и зашвырнули в ПЗУ. Вообще, универсального метода борьбы с этим нет, но если попытаться, то можно впаять копеечный монитор питания (в трехножечном корпусе, как транзистор), который тупо отправит MCU в ресет и по восстановлении питания будет удерживать его в этом состоянии, пока не пройдет дребезг питания. Хотя, мне сказали, что при отключении питания, микроконтроллер СНАЧАЛА записывает данные в ПЗУ и потом отрубается. Я, честно говоря, немного... ээээ.... смущен, потому, что запись в ПЗУ достаточно длительная операция и нужно повесить на питание хороший такой кондёр, чтобы все успело записаться. И то, где гарантия? Ну, да ладно, работает же.. )