Ассемблер (ASM) для AVR в вопросах и ответах
- Flash.#13
- Держит паяльник хвостом
- Сообщения: 965
- Зарегистрирован: Сб апр 12, 2014 23:46:03
- Откуда: Киев
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ARV, излучатель - пищалка с корпуса ПК, не динамик, а мелкая круглая. Звучит тихо и не приятно. Не нравится, проще выковырять с будильника.
Немного файлов по зажиганию: ФУОЗ 2.2 + программа правки таблиц 0.987, монтажка
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Каждая такая пищалка имеет собственную резонансную частоту , на которой она пищит громко и приятно. Так , что для начала ищите DS на нее
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
и при любом раскладе с пищалкой - от симметрии или асимметрии ШИМа ее звук не поменяется настолько, чтобы из неприятного стать приятным! речь только о проблеме ШИМа.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Сильно не пинайте, я сегодня не выспался.
Надо в зависимости от диапазона кода АЦП выполнить одну из N (пяти) процедур.
Кроме связки или аналога с использованием brge есть ли более изящное решение? Диапазоны в конечном итоге могут быть разной "ширины".
Надо в зависимости от диапазона кода АЦП выполнить одну из N (пяти) процедур.
Кроме связки
Код: Выделить всё
cpi ADC, 100
brlo command_1;
cpi ADC, 150
brlo command_2;
cpi ADC, 200
brlo command_3;
...[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Gudd-Head, а куда уж "изящней"? Закона для диапазонов нет, значит про вычисление адреса перехода речи не идет.
Можно "делением", но у тебя N маленькая - много не выиграешь.
Типа так:
Можно "делением", но у тебя N маленькая - много не выиграешь.
Типа так:
Спойлер
Код: Выделить всё
; r24 - значение (0..50..100..150..200..255)
cpi r24, 150
brlo less_150
cpi r24, 200
brlo cmd_4
cmd_5:
; обработка [200..255]
...
cmd_4:
; обработка [150..200)
...
less_150:
cpi r24, 100
brlo less_100
cmd_3:
; обработка [100..150)
...
less_100:
cpi r24, 50
brlo cmd_1
cmd_2:
; обработка [50..100)
...
cmd_1:
; обработка [0..50)
...
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Gudd-Head, если по времени не критично, то можно да же не париться при таком количестве диапазонов.
viiv уже подсказал. Древовидный поиск/сравнение - классика. Типа B-tree (Б-деревья).
Можно уменьшить количество сравнений в худшем случае.
viiv уже подсказал. Древовидный поиск/сравнение - классика. Типа B-tree (Б-деревья).
Можно уменьшить количество сравнений в худшем случае.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Сомневаюсь насчёт изящности, но может так.
Спойлер
Код: Выделить всё
.equ N5=150
.equ N4=140
.equ N3=130
.equ N2=120
.equ N1=110
.equ N0=00
.CSEG
.ORG $00
START:
LDS XL,$60
CLR ZH
LDI ZL,LOW(COMP_N*2)
COMPARE:
CPI ZL,LOW(COMP_N_END*2)
BRSH COMPARE_OUT
LPM R0,Z+
CP XL,R0
BRLO COMPARE
COMPARE_OUT:
;преобразование адреса для последующей обработки
;..................
;..................
;..................
; IJMP
RJMP START
;*****************************
COMP_N:
.DB N5,N4,N3,N2,N1,N0
COMP_N_END:
;*****************************
.EXIT
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Пока оставил обычным перебором вроде работает.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
IMHO, правильно сомневаетесьakl писал(а):Сомневаюсь насчёт изящности, но может так.
Ни по скорости, ни по размеру кода, ни по читаемости кода не лучше. По последней характеристике, так это вообще можно за обфускацию принять.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Re: Ассемблер (ASM) для AVR в вопросах и ответах
"...Сдвинь корону набок, чтоб не висла на ушах."Kavka писал(а):Ни по скорости, ни по размеру кода, ни по читаемости кода не лучше.
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Не ссорьтесь. Обилие вариантов - это всегда хорошо. И каждый будет подходить под свою задачу.
Кто-то почитает, выберет и спасибо скажет.
Кто-то почитает, выберет и спасибо скажет.
Прибор, защищённый предохранителем, сгорает первым, защитив предохранитель. Закон Мерфи.
- Gudd-Head
- Друг Кота
- Сообщения: 20092
- Зарегистрирован: Чт сен 18, 2008 12:27:21
- Откуда: Столица Мира Санкт-Петербург
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Чёт я перемудрил.
BRGE для знаковых данных, BRLO — для беззнаковых. Так что без ухищрений получится только с BRLO
BRGE для знаковых данных, BRLO — для беззнаковых. Так что без ухищрений получится только с BRLO

[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Был бы смайлик, тогда всё было бы на своих местах. Может добавите смайлик?akl писал(а):"...Сдвинь корону набок, чтоб не висла на ушах."
PS: А я и смайликов наставил, и "IMHO" написал... Видать выразительности средств форума недостаточно и надо как-то по другому указывать на не серьёзность утверждений и скромность высказываний.
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)
- Дима_Медвед
- Открыл глаза
- Сообщения: 73
- Зарегистрирован: Сб авг 23, 2014 21:49:24
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Всем привет. Вопрос следующий: как записать 16 розрядное число в 2 регистра да так, чтобы его можно было использовать как счетчик секунд, который настраивается кнопками и потом вести отсчет?
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Дима_Медвед писал(а):как записать 16 розрядное число в 2 регистра
любым известным вам способом - совершенно без разницы, как именно.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Дима_Медвед
- Открыл глаза
- Сообщения: 73
- Зарегистрирован: Сб авг 23, 2014 21:49:24
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ARV писал(а):любым известным вам способом - совершенно без разницы, как именно.
Смысл не в простой записи, а в возможности отсчета секунд, к примеру 9999сек. Как организовать алгоритм счетчика секунд, который будет их отсчитывать.
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
вы хотите увидеть ассемблерный листинг, который реализует вашу задумку? или о чем идет речь?
ведь "алгоритм" прост до безобразия:
1. заносим в регистровую пару нужное число
2. настраиваем таймер на прерывания 1 раз в секунду (или чаще)
3. создаем обработчик прерывания, в котором уменьшаем содержимое регистровой пары
4. когда оба регистра этой пары станут равны 0 - делаем, что хотим (время истекло)
что у вас вызывает затруднения?
ведь "алгоритм" прост до безобразия:
1. заносим в регистровую пару нужное число
2. настраиваем таймер на прерывания 1 раз в секунду (или чаще)
3. создаем обработчик прерывания, в котором уменьшаем содержимое регистровой пары
4. когда оба регистра этой пары станут равны 0 - делаем, что хотим (время истекло)
что у вас вызывает затруднения?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
- Дима_Медвед
- Открыл глаза
- Сообщения: 73
- Зарегистрирован: Сб авг 23, 2014 21:49:24
Re: Ассемблер (ASM) для AVR в вопросах и ответах
ARV писал(а):что у вас вызывает затруднения?
Как оформить обработчик прерываний, тоесть как правильно задать алгоритм уменшения регистровой пары.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
Дима_Медвед писал(а):к примеру 9999сек
Код: Выделить всё
ldi r30,low(9999)
ldi r31,high(9999)Дима_Медвед писал(а):алгоритм уменшения регистровой пары
1. декремент младшего регистра.
2. если появился перенос, то младший регистр обнулить и декремент старшего регистра.
Последний раз редактировалось pyzhman Вт апр 21, 2015 13:39:30, всего редактировалось 1 раз.
Docendo discimus
- ARV
- Ум, честь и совесть. И скромность.
- Сообщения: 18544
- Зарегистрирован: Чт дек 28, 2006 08:19:56
- Откуда: Новочеркасск
- Контактная информация:
Re: Ассемблер (ASM) для AVR в вопросах и ответах
да какой алгоритм уменьшения регистровой пары может быть?! вычесть из "младшего" регистра 1, если флаг переноса установлен - вычесть 1 из "старшего"?! в ассемблерных командах даже "если" не нужно, ибо есть команды вычитания сразу с учетом переноса...
вы не темните, прямо говорите, что не понятно. или давайте ваш код на рассмотрение и поиск ошибок в нем.
вы не темните, прямо говорите, что не понятно. или давайте ваш код на рассмотрение и поиск ошибок в нем.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!