реклама на сайте
подробности

 
 
> Как заставить IAR AVR генерить SBI/CBI?
Yellow Tiger
сообщение May 31 2012, 17:05
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 48
Регистрация: 12-04-07
Пользователь №: 26 985



Знакомлюсь с IAR'ом, не могу понять, как заставить его работать с линиями GPIO с помощью инструкций SBI/CBI.
Код типа :
Код
        PORTG_Bit3 = 1;
        PORTG_Bit3 = 0;

транслируется вместо SBI/CBI в тройки инструкций LDS | ANDI(ORI) | STS :
Код
        LDS     R16, 101
        ANDI    R16, 0xF7
        STS     101, R16
        LDS     R16, 101
        ORI     R16, 0x08
        STS     101, R16


От оптимизации, похоже, не зависит (пробовал уровни "NO" и "High, for siZe").
В референсе по компилятору ничего на эту тему не нашел, в инете тоже. Но ведь должен быть способ?

_______________________
IAR C/C++ Compiler V6.10

Сообщение отредактировал Yellow Tiger - May 31 2012, 17:10
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Артём_
сообщение May 31 2012, 17:49
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Yellow Tiger @ May 31 2012, 20:05) *
Знакомлюсь с IAR'ом, не могу понять, как заставить его работать с линиями GPIO с помощью инструкций SBI/CBI.
_______________________
IAR C/C++ Compiler V6.10

Не надо его заставлять он и сам генерит если может:
Код
128:          PORTC|=1;
+00000294:   9AA8        SBI       0x15,0         Set bit in I/O register
129:          PORTG|=1;
+00000295:   91000065    LDS       R16,0x0065     Load direct from data space
+00000297:   6001        ORI       R16,0x01       Logical OR with immediate
+00000298:   93000065    STS       0x0065,R16

Но порт G доступен только как адрес в ОЗУ (например так в М128).
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 10:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01348 секунд с 7
ELECTRONIX ©2004-2016