[an error occurred while processing this directive]
|
У меня ИАР 3.2d
Вообще я очень осторожно отношусь ко С компилятору для авра, и на всякий случай просматриваю что он там генерит, а на визуал с++ под винду никогда проблем с изменениями из разных потоков не было, хотя именно с прерываниями там не работал.
Имею такой вариант
1.
extern char IntFlags;
......
// 99 while(!(IntFlags&0x01));
??main_0:
LDI R30,LOW(IntFlags)
LDI R31,(IntFlags) >> 8
LD R16,Z
SBRS R16,0
RJMP ??main_0
2.
extern char IntFlag;
......
// 99 while(IntFlag);
??main_0:
LDS R16,IntFlag
TST R16
BRNE ??main_0
Специально щас перепробовал разные варианты оптимизации, результат аналогичен, странно что для 1-го вариант не использует lds, не могу поянть почему
E-mail: info@telesys.ru