AVR studio в вопросах и ответах
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Можно не только в студии на асме.
.macro LED1_off cbi PORTX, N. или как там правильно макрос оформить
.macro LED1_off cbi PORTX, N. или как там правильно макрос оформить
- Реклама
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
Код: Выделить всё
.macro LED1_OFF
cbi PORTA, 7
.endmacroКод: Выделить всё
.equ ON = 1
.equ OFF = 0
.macro LED1
.if @0
sbi PORTA, 7
.else
cbi PORTA, 7
.endif
.endmacroКод: Выделить всё
LED1 ON
LED1 OFFhttp://www.atmel.com/Images/doc1022.pdf
и вот http://www.atmel.com/Images/doc2550.pdf
Ставим плюсы: )
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: AVR studio 4 в вопросах и ответах
Круть
Спасибо!
ibiza11, о великий знаток макросов!
Может, сварганите макрос вида
Для загрузки двухбайтной константы в регистровую пару?
Или это просто заменяется
?
Спасибо!
ibiza11, о великий знаток макросов!
Может, сварганите макрос вида
Код: Выделить всё
ldiw Rn, 0xabcd; n=16...30Для загрузки двухбайтной константы в регистровую пару?
Или это просто заменяется
Код: Выделить всё
ldi Rn, LOW(0xabcd);
ldi R(n+1), HIGH(0xabcd)?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: AVR studio 4 в вопросах и ответах
Код: Выделить всё
.MACRO LdiW
ldi @0,low(@1)
ldi @0+1,high(@1)
.ENDMACRO
LdiW r16,0xABCD- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
так попробуйтеПрименять так:
Код: Выделить всё
.def RW1L = r16
.def RW1H = r17
.def RW2L = r18
.def RW2H = r19
.def RW3L = r20
.def RW3H = r21
.def RW4L = r22
.def RW4H = r23
.def RW5L = r24
.def RW5H = r25
.def RW6L = r26
.def RW6H = r27
.def RW7L = r28
.def RW7H = r29
.def RW8L = r30
.def RW8H = r31
.macro ldiw
ldi @0L,low(@1)
ldi @0H,high(@1)
.emdmacroКод: Выделить всё
ldiw RW1, 0xFFABСтавим плюсы: )
- Реклама
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: AVR studio 4 в вопросах и ответах
a_skr писал(а):ldi @0+1,high(@1)
Ругается на эту строчку, пишет инвалид регистр.
ibiza11 писал(а):так попробуйте
Ууу... а без введения новых регистров и привязки к регистровым парам никак?
Как-нибудь
Код: Выделить всё
.MACRO ldiw
ldi @0, low(@1)
if @0 == r22
ldi r23, high(@1)
...
.ENDMACRO[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
к сожалению не знаю как это осуществить, поскольку команде ldi в качестве операнда передается не номер регистра и не адрес в памяти (к которому можно было бы прибавить единицу и получить следующее значение), а именно название регистра (r16...r31), к которому нельзя ничего прибавить, ведь это не число, а выражение. в Си это делается проще, с помощью операции "склейки" параметров (обозначается так: ##), а в ассмеблере нет аналогичной команды препроцессора.
а что Вас напрягает в варианте, который я предложил?
а что Вас напрягает в варианте, который я предложил?
Ставим плюсы: )
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: AVR studio 4 в вопросах и ответах
А нельзя ли как-то перебрать все регистры R16...R30, передаваемые в макрос в качестве аргумента, и подгружать в соответствующие R17...R31?
Вводятся новые имена и младший байт только в чётном регистре.
ibiza11 писал(а):а что Вас напрягает в варианте, который я предложил?
Вводятся новые имена и младший байт только в чётном регистре.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
не уверен, что будет работать.
попробуйте сами, мне негде сейчас проверить.
попробуйте сами, мне негде сейчас проверить.
Код: Выделить всё
.macro ldiw
ldi @0,low(@1)
.if @0 == r16
ldi r17,high(@1)
.elif @0 == r17
ldi r18,high(@1)
.elif @0 == r18
ldi r19,high(@1)
.elif @0 == r19
ldi r20,high(@1)
.elif @0 == r20
ldi r21,high(@1)
.elif @0 == r21
ldi r22,high(@1)
.elif @0 == r22
ldi r23,high(@1)
.elif @0 == r23
ldi r24,high(@1)
.elif @0 == r24
ldi r25,high(@1)
.elif @0 == r25
ldi r26,high(@1)
.elif @0 == r26
ldi r27,high(@1)
.elif @0 == r27
ldi r28,high(@1)
.elif @0 == r28
ldi r29,high(@1)
.elif @0 == r29
ldi r30,high(@1)
.elif @0 == r30
ldi r31,high(@1)
.endif
.endmacroСтавим плюсы: )
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: AVR studio 4 в вопросах и ответах
Не-а, то же самое.
Код: Выделить всё
Синтаксическая ошибка, нежданный регистр.[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: AVR studio 4 в вопросах и ответах
а так неудобно (лишний регистр передать)?
Код: Выделить всё
.MACRO LdiW
ldi @0,low(@2)
ldi @1,high(@2)
.ENDMACRO
LdiW r16, r17, 0x1234- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: AVR studio 4 в вопросах и ответах
Видимо, остаётся только так 
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
Может так устроит? Имя не сильно меняется: вместо r16 надо писать r16_ Применять так:
Макрос:
Код: Выделить всё
ldiw r16_, 0xABCD ; результат в r16 и r17
ldiw r17_, 0xABCD ; результат в r17 и r18Макрос:
Код: Выделить всё
.def r16_L = r16
.def r16_H = r17
.def r17_L = r17
.def r17_H = r18
.macro ldiw
ldi @0L,low(@1)
ldi @0H,high(@1)
.emdmacroСтавим плюсы: )
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: AVR studio 4 в вопросах и ответах
ibiza11 писал(а):Может так устроит?
Не, менять названия регистров категорически не хочется.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
Ну тогда только указывать каждый регистр отдельно, как Вам a_skr предложил.
Ставим плюсы: )
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
ibiza11 писал(а):Код: Выделить всё
.def r16_L = r16
.def r16_H = r17
.def r17_L = r17
.def r17_H = r18
В чем принципиальное отличие от
.def r17L = r17?
Вообще этот этот вариант приведет к куче предупреждений о смене имени регистра насколько я знаю.
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: AVR studio 4 в вопросах и ответах
Более того, Ваш вариант дает возможность не менять имя регистра при использовании его в макросе.
Так что, Gudd-Head, пляшите, Вам письмо!))
Код: Выделить всё
.def r16L = r16
.def r16H = r17
.def r17L = r17
.def r17H = r18 ;остальные регистры по аналогии можно расписать
.macro ldiw
ldi @0L,low(@1)
ldi @0H,high(@1)
.endmacroПрименение
Код: Выделить всё
ldiw r16, 0x6729 ;результат: r16 = $29, r17 = $67
ldiw r17, 0xFFAA ;результат: r17 = $AA, r18 = $FFА Warning`и конечно будут, но не о смене имени регистра, а о том, что имя для этого регистра уже определено (например выше r17 это одновременно r17L и r16H). Ну и соответственно, если в проекте эти регистры еще как-то обозвали, то и там выйдет Warning.
Ставим плюсы: )
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: AVR studio 4 в вопросах и ответах
Код: Выделить всё
.def r17L = r17
.def r17H = r18 ;остальные регистры по аналогии можно расписатьОй... Что-то тааак лееень все регистры расписывать... Я лучше при вызове буду 2 регистра писать. К тому же, это даёт гибкость: можно изменить порядок, или вообще запихнуть число не в соседние регистры (не знаю, правда, где такое может понадобиться).
А Warning`и конечно будут... Ну и соответственно, если в проекте эти регистры еще как-то обозвали, то и там выйдет Warning.
Кстати, как посмотреть варнинги?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: AVR studio 4 в вопросах и ответах
Gudd-Head , вы что вчера за студию сели? Такие вопросы задаете
Предупреждения можно почитать в окошке внизу.
Если это четвертая студия, то отдельно вроде они не показываются, смотрим в результате компиляции если есть ошибки или предупреждения, то просто вверх перемещаемся по журналу и там они будут все видны, точно так же можно двойным кликом к месту в тексте перейти.
Предупреждения можно почитать в окошке внизу.
Если это четвертая студия, то отдельно вроде они не показываются, смотрим в результате компиляции если есть ошибки или предупреждения, то просто вверх перемещаемся по журналу и там они будут все видны, точно так же можно двойным кликом к месту в тексте перейти.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: AVR studio 4 в вопросах и ответах
vitalik_1984 писал(а):Gudd-Head , вы что вчера за студию сели?
В том-то и дело что нет.
На вкладке Build пишет "... 2 warnings", не щёлкается. На вкладке Message про варнинги ни слова. Или журнал это что-то другое?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


