Ассемблер (ASM) для AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
MegaRazoR
Прорезались зубы
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Ни как не пойму !?!? Асм файл сгенерированный кодвижном содержит прерывания причем все они а симуляторе работают. НО вектора прерываний ни где не указаны ?!! конечно же скорее всего они указаны но я не пойму где.
Вот например прерывание по SPI:

Код: Выделить всё

_spi_isr:
тект программы ...
return


Раз написано _spi_isr: значит должно быть написано где то выше

Код: Выделить всё

.org 0x18
rjmp _spi_isr

но вот что то такого не видать.
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

там файлик есть типа .vec вот такого содержания к примеру


Код: Выделить всё

;INTERRUPT VECTORS
   RJMP __RESET
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP _adc_isr
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00
   RJMP 0x00


Это из примера C:\CVAVR\examples\ADC8535
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
MegaRazoR
Прорезались зубы
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

Инкремент переменной integer (16 bit): Код:
MOVW R30,R4
ADIW R30,1
MOVW R4,R30


Как работает команда MOVW ? Есть ли жесткая привязка между R4 и R5 ? Могу ли я указать здесь R5 вместо R4 с целью использования пары R5 R6 ?

В описании команды: Rd+1:Rd = Rr+1:Rr, r,d even

Могу ли я использовать любой регистр и следующий за ним в качестве операнда этой команды?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

MegaRazoR писал(а):... все равно не понятно могу ли я использовать любой регистр и следующий за ним в качестве операнда этой команды.

наверно любой из 32-ух РОН
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

tych писал(а):наверно любой из 32-ух РОН
ошибаетесь. в MOVW можно использовать любые четные регистры в качестве указателя базы операндов.
MOVW R4, R6 - работает
MOVW R3, R6 - не работает
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
YurkaM
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Пн сен 01, 2008 14:49:03
Откуда: Казахстан

Сообщение YurkaM »

И, кстати, на это чётко указано в описании команд
Rd+1:Rd = Rr+1:Rr,r,d even

even - чётный...
Последний раз редактировалось YurkaM Вт окт 28, 2008 21:30:27, всего редактировалось 1 раз.
Аватара пользователя
MegaRazoR
Прорезались зубы
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

откуда вы это знаете ? поделитесь секретом где это написано.
спасибо вам за ваше терпение и ваши подробные ответы ! :)
YurkaM
Нашел транзистор. Понюхал.
Сообщения: 151
Зарегистрирован: Пн сен 01, 2008 14:49:03
Откуда: Казахстан

Сообщение YurkaM »

В любом даташите на AVR. В книжках типа "Евстифеев А.В. Микроконтроллеры AVR" и т.д. А вообще в таких случаях достоверный на 99% ответ даст любой нормальный симулятор. Делов - на 1 минуту.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Сообщение ARV »

MegaRazoR писал(а):откуда вы это знаете ? поделитесь секретом где это написано.
я использую AVR Studio, в комплекте с которой идет отличный справочный файл по ассемблеру. по-моему, самый лучший из всех виденных мною.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
MegaRazoR
Прорезались зубы
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

как лучше всего организовать такую фунцию:
если в регистре R4 содержится число 0х11 то сбросить регистр R7
как реализуется сумма по модулю два ?
что такое сохранение ?
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Аватара пользователя
Pooher
Мучитель микросхем
Сообщения: 491
Зарегистрирован: Вс янв 07, 2007 01:45:48
Откуда: Российская Федерация, будь она неладна...

Сообщение Pooher »

как лучше всего организовать такую фунцию:
если в регистре R4 содержится число 0х11 то сбросить регистр R7
как реализуется сумма по модулю два ?


Label:
ldi tmp, 0x11
cpse tmp, r4
ret
clr r7
ret
Аватара пользователя
MegaRazoR
Прорезались зубы
Сообщения: 239
Зарегистрирован: Вт сен 09, 2008 17:35:48
Откуда: Уфа

Сообщение MegaRazoR »

а для 16 битных то же самое ?
мне надо сбросить такой то регистр если в регистре Z (16 бит) заданное число.
спасибо вам за ваше терпение и ваши подробные ответы ! :)
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

MegaRazoR писал(а):а для 16 битных то же самое ?
мне надо сбросить такой то регистр если в регистре Z (16 бит) заданное число.

Написшите после каждой строчки примера - что она делает. РАЗБЕРИТЕСЬ !!! сами.

А потом - поняв - модифицируйте код под нужную вам задачу.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
Zanzib
Вымогатель припоя
Сообщения: 634
Зарегистрирован: Пт май 23, 2008 16:49:28
Откуда: Kyiv

Сообщение Zanzib »

Ну, все-думаю., пора разобрацця с АВР. ПОлез в обучалку (кто её писал? где-то ещё видел на каком-то сайте). Скачал ассемблер, блокнот, что там ещё надо для "пробы пера"?
Написал по совету афтра батник (фу, какое слово) инифига не получилось с вот этимим ключами., которые советует афтар:
с:\Temp\avr\tavrasm\tavrasm.exe -i code.asm -e output\listfile.lst -o output\hexfile.hex
pause=null
Потому что пишет мне такое:
c:\Temp\AVR\AVR-projects\tutorial>ё:\Temp\avr\tavrasm\tavrasm.exe -i code.asm -e
output\listfile.lst -o output\hexfile.hex
Системе не удается найти указанный диск.

Откуда тут появился диск e:\
А?

Афтар пишет "Таким образом, мы создали:
D:\AVR-projects\
D:\AVR-projects\tutorial\
D:\AVR-projects\tutorial\output"

А на скриншоте совсем другое:
http://radiokot.ru/start/mcu_fpga/avr/02/02.gif
D:\Project\tutorial\ ...
Я понимаю, что афтар в последний момент передумал и вместо AVR-project, как обещал мне, создал, не предупредив? Projeсt, но ведь простите, это обучалка для начинающих, и такая небрежность настораживает.

Короче, у меня ничего не вышло с ключами и этим допотопным ассемблером. Да и, мне кажется, руками писать в наше время разные ключи-архаизм. Это как пользоваться досовским архиватором, указывая ему разными ключами, что мы от него хотим.
Аватара пользователя
tych
Э...
Сообщения: 2792
Зарегистрирован: Ср апр 04, 2007 08:39:14
Откуда: Москва
Контактная информация:

Сообщение tych »

Zanzib писал(а): ведь простите, это обучалка для начинающих, и такая небрежность настораживает.

Да уж 1.5 года примерно пишем тут про ошибки и не меняют ни фига.
Думайте сами, решайте сами ... а вот он-лайн перевод на корявый русский http://translate.ru
Аватара пользователя
Zanzib
Вымогатель припоя
Сообщения: 634
Зарегистрирован: Пт май 23, 2008 16:49:28
Откуда: Kyiv

Сообщение Zanzib »

tych писал(а):
Zanzib писал(а): ведь простите, это обучалка для начинающих, и такая небрежность настораживает.

Да уж 1.5 года примерно пишем тут про ошибки и не меняют ни фига.


На этом сайте все скопировано слово в слово и с теми же ашипками.
http://radlub.sk6.ru/index.php?name=pages&op=view&id=67

Может это специально так, чтобы установить некий порог пролезания?
Аватара пользователя
GRAF
Мудрый кот
Сообщения: 1867
Зарегистрирован: Ср янв 23, 2008 22:11:54
Откуда: Калининград

Сообщение GRAF »

Zanzib, смотрите, как у меня:
C:\AVR\AVR-Projects\tutorial

Здесь лежат и батник, и асм код.
В батнике compile.bat прописано:

Код: Выделить всё

C:\AVR\tavrasm\tavrasm.exe -i code.asm -e output\listfile.lst -o output\hexfile.hex
pause=null


Эту прогу (tavrasm.exe) я положил сюда:
C:\AVR\tavrasm
avrasm, соответственно:
C:\AVR\avrasm

В асм коде, как советуется в первом примере, написал:

Код: Выделить всё

.include "C:\AVR\avrasm\APPNOTES\2313def.inc"   ;В данном случае, мы пишем для 
;AT90s2313. Соответственно, и файл – 2313.

ldi R16,5     ;загрузка констант в регистры
ldi R17,7
and R16,R17   ;логическое «И» двух регистров
nop

;**********************************************************

; Всё прекрасно компилится и hex файл сбрасывается в папочку
; C:\AVR\AVR-Projects\tutorial\output
Аватара пользователя
GRAF
Мудрый кот
Сообщения: 1867
Зарегистрирован: Ср янв 23, 2008 22:11:54
Откуда: Калининград

Сообщение GRAF »

Подскажите, пожалуйста.

В результате инкремента 1 регистр был полностью заполнен, произошёл перенос на следующий. Инкремент вызывался прерываниями от порта INT1.
Нужно посчитать кол-во поступивших на этот порт импульсов и вывести это число также импульсами на порт B.
Как это осуществить?
Декрементом, начиная со второго регистра, каждый раз сравнивая его с 0 и выводя 1 на порт B при отрицательном результате сравнения, а при положительном перескочить на первый регистр, и продолжить его декремент?

Код: Выделить всё

start:
cmp R17,0
breq qwe
out PortB,0b0000001
out PortB,0b0000000
dec R17
cmp R17,0
brec qwe
out PortB,0b0000001
out PortB,0b0000000
rjmp start

qwe:
cmp R16,0
breq konec
out PortB,0b0000001
out PortB,0b0000000
dec R16
rjmp qwe

konec:
.............
andrestudio
Открыл глаза
Сообщения: 50
Зарегистрирован: Вт сен 04, 2007 18:06:40

Сообщение andrestudio »

Собрал утилитку что бы ассемблер было полегче учить (памяти вобще нет а от монитора в книгу от книги к монитору задолбало блин нырять), но в принципе таким образом можно и для других языков сделать подобный (если у кого есть полное описание флагов в (*.тхт) по всей линейке МК скинте куда нибудь пожалуйста) пожалуй и флаги надо будет включить.

AVR_assemler_mini_help.zip http://radiokot.ru/forum/download.php?id=8437

если есть какие неточности просьба сообщить
ДА будет свет!
Nata
Родился
Сообщения: 2
Зарегистрирован: Ср ноя 12, 2008 21:54:13

Сообщение Nata »

Здравствуйте, если ответ на мой вопрос уже есть на форуме, не пинайте сильно, искала как могла, но не нашла.
Мне нужен код прошивки для AVR для общения с жёстким диском.
Если у кого-то есть, поделитесь, пожалуйста. Или подскажите, где можно поискать.
Заранее спасибо.
Ответить

Вернуться в «AVR»