Цитата(sergik_vrn @ Dec 17 2007, 13:52)

1. тот вариант, что я привел - вовсе не оптимальный, просто в нем исправлены Ваши ошибки
2. адрес элемента массива это <имя_массива>+<номер элемента>
3. также настоятельно рекомендую воспользоваться массивом и не заниматься ерундой. судя из того, что я понял по приведенному исходнику, Вам массив и нужен, причем даже без всякой обрамляющей структуры
пассаж насчет указания адресов "лежания" для переменных до моего понимания не дошел
Пояснение по адресам "лежания":
имеется установочное меню, включающее в себя несколько десятков пунктов. Каждому пункту меню соответствует своя переменная. В процессе работы используются значения этих переменных.
Если будет сделан массив, как Вы предлагаете, то мне придется помнить, какой из элементов массива за что отвечает.
Да, будет очень удобно в этот массив переписывать данные, например, из ПЗУ в одном единственном цикле
Код
for(a=0;a<Lengh;a++){Array[a]=Read_Eprom(a);}
,
но в программе помнить о том, какая ячейка чему соответствует - весьма тяжело, и не исключены ошибки.
Используя прямую адресацию в RAM, типа
Код
unsigned int P1x __at(0x00000000000000000)
unsigned int P2x __at(0x00000000000000001)
я смогу в одном цикле выполнить действия аналогичные примеры выше, но только с косвенной адресацией
Код
unsigned int *sptr;
sptr = & P1x;
for(a=0;a<Lengh;a++;sptr++){*sptr=Read_Eprom(a);}
Значения из Eprom автоматом перепишутся по нужным адресам.
Только для этого я предполагаю явное указание адреса.
А в теле программы читать и писать, например, пункт меню Baud_Rate гораздо понятнее и приятнее чем, например, Array[64]