Ассемблер (ASM) для AVR в вопросах и ответах
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Скажите, что означает символ ~ ?
Например выражение: ldi r16, ~Space; Автор комментирует это как загрузка символа пустого места( там вывод на семисегментник у него)
Например выражение: ldi r16, ~Space; Автор комментирует это как загрузка символа пустого места( там вывод на семисегментник у него)
Лень - двигатель прогресса!
- Реклама
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Битовое НЕ (инверсия) - меняет каждый бит константы на противоположный.
PS. удобно в знакогенераторе светящиеся сегменты цифры/символа записать единицами. А, в зависимости от схемы подключения индикатора (ОА или ОК), в порт может выводиться или прямое или инверсное значение.
PS. удобно в знакогенераторе светящиеся сегменты цифры/символа записать единицами. А, в зависимости от схемы подключения индикатора (ОА или ОК), в порт может выводиться или прямое или инверсное значение.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Спасибо, понял) а в нете нету что-то... или не там искал.
Лень - двигатель прогресса!
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Как это нету? Ищи файл Asm_AVR_rus.pdf там все прекрасно расписано! да, гугл первым результатом выдает.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
запостил не туда, извиняюсь
- Реклама
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Цитируемое утверждение неверно. Вот как ATMEL на него отвечает в этом документеFreshMan писал(а):команды типа out portb,r... не могут использовать r0-r15, поэтому temp=r16
почему ?
Посмотрел DS на ATtiny2313, ATmega8 и, к своему удивлению, не обнаружил текста, который был в DS на AT90S2313, AT8515
Спойлер
All the register operating instructions in the instruction set have direct and single-cycleaccess to all registers. The only exception is the five constant arithmetic and logic
instructions SBCI, SUBI, CPI, ANDI, ORI between a constant and a register and the LDI
instruction for load immediate constant data. These instructions apply to the second half
of the registers in the Register File (R16..R31). The general SBC, SUB, CP, AND, OR,
and all other operations between two registers or on a single register apply to the entire
Register File.
- COKPOWEHEU
- Говорящий с текстолитом
- Сообщения: 1525
- Зарегистрирован: Чт июн 10, 2010 20:11:19
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Неправда, нормально оно работает. А не используют их потому что ldi не работает с r0-r15. Ну может еще какие-то команды. Их мало но они часто используются.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
вот шаблон проги
если я не собираюсь использовать прерывания то прогу можна упростить до такого вида ?
Код: Выделить всё
.include "tn2313def.inc"
.list
.def temp=r16
.cseg ;Выбор сегмента программного кода
.org 0 ;Установка текущего адреса на ноль
;---------- векторов прерывания 19шт.----------
start: rjmp init ;Переход на начало программы.Прерывание по сбросу
reti ;Внешнее прерывание 0
reti ;Внешнее прерывание 1
reti ;Таймер/счётчик 1,захват
reti ;Таймер/счётчик 1,совпадение,канал А
reti ;Таймер/счётчик 1,прерывание по переполнению
reti ;Таймер/счётчик 0,прерывание по переполнению
reti ;Переполнение UART пирём завершён
reti ;Переполнение UART регистр данных пуст
reti ;Переполнение UART передача завершена
reti ;Прерывание по изменению на любом контакте
reti ;Переполнение по компаратору
reti ;Таймер/счётчик 1,совпадение,канал В
reti ;Таймер/счётчик 0,совпадение,канал В
reti ;Таймер/счётчик 0,совпадение,канал А
reti ;USI готовность к старту
reti ;USI Переполнение
reti ;EEPROM Готовность
reti ;Переполнение охранного таймера
;---------- регистров общего назначения--------------------
init: ldi temp,RAMEND;Выбор адреса вершины стека
out SPL,temp ;Запись его в регистр стека
ldi temp,0x80 ;Загружаем в R16 число 1000 0000 или 128
out acsr,temp ;Отключаем компаратор
;---------- будет работать основная программа----------------------
main:
rjmp mainесли я не собираюсь использовать прерывания то прогу можна упростить до такого вида ?
Код: Выделить всё
.include "tn2313def.inc"
.list
.def temp=r16
.cseg ;Выбор сегмента программного кода
.org 0 ;Установка текущего адреса на ноль
;---------- регистров общего назначения--------------------
init: ldi temp,RAMEND;Выбор адреса вершины стека
out SPL,temp ;Запись его в регистр стека
ldi temp,0x80 ;Загружаем в R16 число 1000 0000 или 128
out acsr,temp ;Отключаем компаратор
;---------- будет работать основная программа----------------------
main:
rjmp mainTell Me The Truth
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Да. И основная программа будет работать здесь. 
Docendo discimus
Re: Ассемблер (ASM) для AVR в вопросах и ответах
а сами вектора прерываний жостко привязаны к своим адресам ?
изменить я ничего не могу ?
изменить я ничего не могу ?
Tell Me The Truth
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Жёстко. Но если у МК есть бутлоадер, то можно разместить его вначале флэша, а вектор прерываний перемещается в середину (задаётся соотв. фьюзом).
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
а каким образом была сделана эта привязка ?
Tell Me The Truth
- Engineer_Keen
- Друг Кота
- Сообщения: 3870
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Аппаратно, каждое прерывание, если оно разрешено, загружает в командный счетчик свой адрес. В случае с бутлоадером адреса изменяются (возможно фьюзы меняют отдельные биты адреса).
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Видимо, с бутлоадером тут особо никто не заморачивался 
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
- Engineer_Keen
- Друг Кота
- Сообщения: 3870
- Зарегистрирован: Пт янв 29, 2010 10:27:40
- Откуда: Москва
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Честно, ни разу не было надобности в нем, хотя попробовать интересно 

Re: Ассемблер (ASM) для AVR в вопросах и ответах
каким образом вектор прерываний привязали к адресу во флеше ?
Tell Me The Truth
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Взяли и засунули его в начало. Или что-то друго интересует?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
тоесть, припустим, в диапвзоне адресов 0x00-0xА0 находятся вектора прерываний
значит в эти адреса, при всем моем желании, я никогда ничего не смогу записать и моя прога будет писаться с адреса 0хВ0 ?
значит в эти адреса, при всем моем желании, я никогда ничего не смогу записать и моя прога будет писаться с адреса 0хВ0 ?
Tell Me The Truth
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Почему? Глянь на свой код: самый первый адрес содержит прыжок куда-то дальше. Ничто не мешает начать писать программу прямо с нуля. И она будет работать.
НО: в случае возникновения любого прерывания счётчик команд перебросит тебя на соответствующую строку, где будет твой код, т.е. неизвестно что. Вот что там будет - то и продолжит работать.
Так что в этом случае нельзя использовать прерывания, и всё.
НО: в случае возникновения любого прерывания счётчик команд перебросит тебя на соответствующую строку, где будет твой код, т.е. неизвестно что. Вот что там будет - то и продолжит работать.
Так что в этом случае нельзя использовать прерывания, и всё.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ploop писал(а):Так что в этом случае нельзя использовать прерывания, и всё.
Ну не надо так категорично
Код: Выделить всё
.OGR $000
proga
proga
proga
rjmp PC+2
rjmp preryvanie
proga
proga
...[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]


