Вопрос, конечно интересный

В конце твоей программы после того, как закончится последний цикл, т.е.
BRNE LOOP больше не сработает - что произойдет? А вот что: МК попробует взять
СЛЕДУЮЩУЮ команду, а ее
нет, т.е. в памяти по этому адресу скорее всего
0хFFFF будет... Вообще-то мне не попадался полный список кодов всех команд AVRов, но очень может быть, что МК воспринимает этот код как код несуществующей команды например, и при этом выполняет сброс... Либо он просто "пробегает" всю оставшуюся память и возвращается к нулевому адресу, т.е. к началу проги...
Чтобы программа действительно доходила до какого-то места и далее никуда не двигалась, надо в этом месте поставить следующий код:
Код:
UNENDED_LOOP: RJMP UNENDED_LOOP
То есть бесконечно "топтаться" на команде перехода на саму себя

.
Если опыта поболее - можно использовать SLEEP...