Цитата(IgorAVR2 @ Apr 24 2009, 14:34)

И как же всё таки сделать, что бы таки переменные всегда там создавались, даже если не используються дальше в программе, а просто присваивается им значение?
Компилятор оптимизирующий и имеет право выкидывать неиспользуемый код. Кстати, если у Вас не включены почти все предупреждения, то Вы много интересной информации о результатах компиляции упускаете.
Выдержка из моего makefile
Код
CFLAGS += -Wall
CFLAGS += -Wstrict-prototypes
CFLAGS += -Wundef
CFLAGS += -Wunreachable-code
#CFLAGS += -Wsign-compare
CFLAGS += -Wvolatile-register-var
CFLAGS += -Wunused
CFLAGS += -Wextra
Я использовал назначения регистровых переменных для работы с прерываниями, правда только на С, и переменные явно использовались.
Код
register uint8_t curdata asm("r7"); // r7
register uint8_t baudr asm("r6"); // r6
register uint8_t val_baud asm("r5"); // r5
volatile register uint8_t flag asm("r4"); // r4
volatile register uint16_t txd_Tail asm("r2"); // r2, r3
Будьте внимательны, список доступных к использованию регистров зависит от версии Winavr.