Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Как прочитать регистр
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
_Артём_
Требуется прочитать значение регистра (или нескольких регистров).
Процессор: xmega256A3.
Пробовал так:
Код
// асм-файл
GetR14R15:
    mov     R16, R14
    mov     R17, R15
    ret
// С++-файл
extern "C" {
    unsigned short GetR14R15();
};

// программа
     unsigned short tmp=GetR14R15();


Работает, но есть лишние действия - call/ret.
Можно ли сделать asm-inline функцию?

Update: забыл указать компилятор. IAR AVR.
SasaVitebsk
Не могу утверждать, что это работает для xmega, но для обычных AVR всё значительно проще ... biggrin.gif
В опции проекта выбирите C/C++ compiler//Code//Register utilization//2 [R14..R15]
Далее объявите в проекте

__regvar __no_init uint16_t crc @14;

ну и дальше просто обращайтесь к переменной ...
_Артём_
Цитата(SasaVitebsk @ Jan 28 2012, 19:45) *
Не могу утверждать, что это работает для xmega, но для обычных AVR всё значительно проще ... biggrin.gif

Тоже не буду утверждать (может что-то не учёл), но похоже не работает.

UPD. Ошибся, работать будет (симулятор AVRStudio ввёл меня в заблуждение - ерунду отбразил)
Нажмите для просмотра прикрепленного файла

Цитата(SasaVitebsk @ Jan 28 2012, 19:45) *
В опции проекта выбирите C/C++ compiler//Code//Register utilization//2 [R14..R15]
Далее объявите в проекте

__regvar __no_init uint16_t crc @14;

ну и дальше просто обращайтесь к переменной ...

На MegaAVR это работало, но доступны таким образом не все регистры, а только R4-R15. F хотелось бы чтоб все (lock тоже не устраивает).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.