Когда я говорил, "Проверьте по документации, что Code Vision это умеет", это не просто так.
Чтобы хранить в R2 переменные, у компилятора должны быть предварительно скомпилированные библиотеки со стандартными функциями, которые не применяют R2. И чтобы компилятор при генерации кода не применял бы регистр R2. Иначе это работать не будет.
Вот ИАР для АВР начиная с какой-то версии умел резервировать регистры R15 и R14 (если не ошибаюсь).
А все это нужно исключительно для атомарного доступа к флагам.
Если вам не нужен атомарный доступ, то располагайте флаги в ОЗУ.
Цитата(mozg12342 @ Mar 8 2018, 20:17)
При изменении любой из переменных вручную, все переменные изменяются синхронно.
В результате экспериментов получил следующие результаты: когда программа устанавливает к примеру второй бит регистра (0b00000100) - все цифры в симуляторе отображают цифру 4, если установить также нулевой бит (0b00000101) - отображают 5. Логично предположить, что симулятор отображает мне переменные не побитно, а все вместе да ещё в десятиричном виде. Через контекстное меню могу установить только в шеснадцатиричном виде.
Возможно ли исправить? а то неудобно так.
Сомневаюсь, что это можно исправить. Тип данных bit - нестандартный, такое я встречал только в компиляторе HT-PICC для ПИКов.
А Code Vision и AVR Studio это программы разных разработчиков, они не обязаны понимать нестандартные вещи.
Используйте битовые поля в структурах (в примере квалификаторы из ИАРа, в Code Vision должно быть что-то подобное):
Код
__regvar __no_init volatile union {
unsigned char Flags;
struct {
unsigned char a :1;
unsigned char b :1;
unsigned char c :1;
};
} @ R2;
Цитата(mozg12342 @ Mar 8 2018, 20:17)
И объясните пожалуйста почему некоторые переменные заносятся в адрес R-2, а некоторые в адрес к примеру 0181. В чем разница и логика?
В вашем листинге этого нет.
Если вы говорите о других переменных, то это именно
правило, что они линкером помещены в ОЗУ,
а помещение битов в регистр R2 это
исключение, причем нестандартное. Это спец. фича компилятора для ядра АВР (костыль для попытки исправить недостаток системы команд в области атомарного доступа к флагам).