Цитата(Сергей Борщ @ Nov 16 2007, 00:26)

А вы листинг смотрели? 99%, что цикл while (flag); ассемблировался в RJMP $-2. А ошибка ваша вот: volatile unsigned char flag;
P.S. А такие большие куски кода надо прикладывать в виде файлов. Исправьте, пока не поздно, а то модераторы по шапке надают
Огромное спасибо, буду пробовать.
Листинг, конечно, смотрел, я его сам и писал

. По поводу
Код
while(flag);
: если он неправильно ассемблируется, то что можно использовать вместо него для задержки до срабатывания прерывания?
По поводу ошибки: никогда не думал, что оптимизация может зайти так далеко.
Можно еще вопросик не по теме?
У меня в целевой программе есть переменная типа Int. При передачи нужно как можно быстрее передавать побайтно значение этой переменной. В настоящий момент данные передаются следующим образом:
Код
PORTA=A_int; ... PORTA=(A_int>>8) ...
. Как мне кажется, такая передача не оптимальна. По-идее, можно зарезервировать определенные регистры под переменную и выводить уже регистры:
Код
PORTA=r15; ... PORTA=r15
. Подскажите пожалуйста, будет ли такой алгоритм более быстрым по сравнению с первым и каким образом можно зарезервировать регистры под переменную? Когда я пытался осуществить резервирование, IAR говорил что-то о необходимости в изменении каких-то настроек. Заранее благодарен.
P.S. За большие вставки извиняюсь, не знал, больше не повторится.