Теперь Ваша проблема понятна. Все правильно. Компилятор "не знает" содержимое
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 19 декабря 2004 г. 18:10
В ответ на: Похоже не вычисляются отправлено fgggk 19 декабря 2004 г. 17:53

элементов массива. После инициализации массива, компилятор о нем "забывает". Когда обрабатывается выражение, то константным выражением является обращение по фиксированному адресу, не более того:
;kf[1]
\ 000000C6 .... LDI R30,LOW((??kf + 2))
\ 000000C8 .... LDI R31,(??kf + 2) >> 8
\ 000000CA 9165 LPM R22,Z+
\ 000000CC 9174 LPM R23,Z
Обойти эту проблему можно, если константы определить симолтиески:
#define K1 1
#define K2 2
....
#deefine K7 7
static const __flash int kf[]={K1, K2,.... K7,....};
b /= K1 + K2 +... +K7;

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru