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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Flash.#13
Держит паяльник хвостом
Сообщения: 965
Зарегистрирован: Сб апр 12, 2014 23:46:03
Откуда: Киев

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

Сообщение Flash.#13 »

pyzhman писал(а):
When ADCL is read, the ADC Data Register is not updated until ADCH is read. Consequently,
if the result is left adjusted and no more than 8-bit precision is required, it is
sufficient to read ADCH. Otherwise, ADCL must be read first, then ADCH.


ААА мануал, пасибки! Заработало!!! Это такой пипец, пол дня мудохался, и так и сяк а там отакое... :shock:
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Пожалуйста.
Docendo discimus
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

вопрос относительно rjump
при обьеме флеша в 4 килослова и нахождении рабочей точки в конце памяти существует ли вероятность что я не допрыгну в начало
меня об этом должен предупредить компилятор ?
Tell Me The Truth
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

4 кило слова это +-2 килослова, которые заложены в rjmp. Прямая видимость обрабатывается как обычно, а то куда не достаёт напрямую делается "перепрыгиванием через границу". Т.е. или через конец памяти на начало, или через начало на конец. Подобно переполнению целочисленной переменной (как для байта, 255+1 даёт 0). Таким образом адресуется вся память. В любом случае компилятор ругнётся если он что-то не сможет переварить.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

Kavka писал(а):Т.е. или через конец памяти на начало, или через начало на конец.

нифигасе :))
весьма познавательно....., спасибо ! :))
Tell Me The Truth
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

вопрос относительно Н флага
при вычитании или сложении оный флаг равен единице тогда когда результат больше $0F ?
Tell Me The Truth
Аватара пользователя
Kavka
Мудрый кот
Сообщения: 1810
Зарегистрирован: Чт июн 10, 2010 08:55:35
Откуда: Сибирские Афины

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

Сообщение Kavka »

Нет. Флаг H равен единице если был перенос из 3-го бита в 4-й для сложения или был заём из 4-го в 3-й для вычитания.
Нумерация битов от нуля.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

а как на асме реализовать такую конструкцию

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

if(a>b)
{
   c=1;
}
else
{
  c=2;
}
Tell Me The Truth
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

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

Сообщение ILYAUL »

cp a,b
brsh туда
с=2
туда:
с=1
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

А в случае else после с=2 не выполнится ли часом ещё и c=1?
nirq
Опытный кот
Сообщения: 758
Зарегистрирован: Вс фев 10, 2013 15:26:00

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

Сообщение nirq »

4 кило слова это +-2 килослова, которые заложены в rjmp
Транслейт: (r)jmp прыгает не на указанный адрес, а на плюс-минус N адресов от самой инструкции (r)jmp.
Качаем doc0856.pdf, ищем там слово "Opcode".
Смекаем: а разницу между чем и чем вычисляет кто и в какой момент?
или через конец памяти на начало, или через начало на конец
а). берём микросхему такую же, но с более другими килобайтами
б). в той же самой микросхеме дописываем новый код, меняем местами старый.

Кулхацкер не нужен. Почётен, зачётен, может даже выиграть приз на каких-нибудь соревнованиях по этому за это - но не нужен.


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

ldi c,2
cp b,a
brsh pc + 1
ldi c,1
Обсуждаем со всех сторон!
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

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

Сообщение ILYAUL »

WiseLord писал(а):А в случае else после с=2 не выполнится ли часом ещё и c=1?

Т.е в уме после с=2 добавить rjmp сюда, просто лень? Ему нужна была просто структра IF в исполнении asm / Так в asm не существует и c=x
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

Добрый день, на 87 странице есть такой кусочек кода для вывода дробной части ds18b20
Код:
; таблица дробной части (12-битное преобразование)
table: .db '0','0','0',0'
.db '0','6','2',5'
.db '1','2','5','0'
.......
.db '9','3','7',5' ; всего 16 строк по 4 символа
...............
...............
; дробная часть в temp - диапазон 0b0000...0b1111
ldi ZL,low(table*2)
ldi ZH,high(table*2)
rol temp
rol temp ; temp=temp*4
add ZL,temp
clr temp
adc ZH,temp
; четыре команды LPM с инкрементом Z вытянут дробную часть из таблицы
..................
Находят начальный адрес таблицы, затем прибавляют к нему temp*4.
Для чего temp умножают именно на 4?
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

Шаг таблицы равен 4 байтам, поэтому temp умножается на 4, суммируется с началом таблицы, получается точка входа для извлечения числового значения по текущему коду.
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

Так как шаг 0,625, то одно из значений 1,250 и 1,875 будет недоступно?
akl
Друг Кота
Сообщения: 4444
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

The resolution of the temperature sensor is user-configurable to 9, 10, 11, or 12 bits, corresponding to increments of 0.5°C, 0.25°C, 0.125°C, and 0.0625°C, respectively. The default resolution at power-up is 12-bit.
Где Вы увидели такой шаг?
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

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

Сообщение ILYAUL »

Он путает шаги по таблице с точностью изм. темрературы
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

Да точность 0,0625.
Разве таблица строится не с шагом точности?
Аватара пользователя
ILYAUL
Держит паяльник хвостом
Сообщения: 906
Зарегистрирован: Ср мар 28, 2012 21:45:24
Откуда: ВО

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

Сообщение ILYAUL »

нет - она сама по себе. Тут
Аватара пользователя
baghear
Опытный кот
Сообщения: 791
Зарегистрирован: Вт июн 17, 2014 00:34:26

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

Сообщение baghear »

Разобрался :))
Спасибо akl
Ответить

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