протеус, по-моему, очень не любит, когда прошивка собрана из нескольких объектных файлов, как в моем случае. сейчас работаю надо простым проектом и все вляпываю в один исходный файл - работает, отлаживается, показывает исходники и т.п. В общем, все пристойно.
очень интересно наблюдать за тем, как реагирует оптимизатор WinAVR на ошибки в программе: если в протеусе видно, что строчка в программе есть, а адреса у нее нет - значит, оптимизатор ее выкинул

как правило, это происходит при наличии логических ошибок в программе, иногда - из-за неверного синтаксиса (например, для глобальной переменной, которую меняет обработчик прерывания, не указал
volatile - оптимизатор ее выкидывает, а заодно и весь код, который эту переменную анализирует и использует в расчетах).