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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
главный колбасист
Это не хвост, это антенна
Сообщения: 1338
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край
Контактная информация:

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

Сообщение главный колбасист »

[uquote="shonty",url="/forum/viewtopic.php?p=3848570#p3848570"]главный колбасист,
Вы же сразу притянули конец к началу и оказались в глубокой... середине, потерявшись в направлениях. В такой ситуации даже затруднений для импульса к следующему движению возникнуть не может.
Здесь или в начало или в конец, третьего не дано.[/uquote]
:) Интересная точка зрения. :)

Опять меня преследуют разочарования. В моем протеусе не оказалось WH1602 с контроллером 44780.
Есть только какая то LM016L ,после получасовых поисков в библиотеке,но у нее 14 выводов а не 16. И нет входа С .Хотелось состыковать и поизвращаться с изменениями в коде.
Это не одно и то же? И как подключить LM016L ? Или подскажите,где импортировать модель WH1602 ?
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19054
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

LM016L и 1602 - это одно и то же.
нет выводов подсветки.
остальное всё есть.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Реклама
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15585
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Вообще-то ассемблер начинают изучать не с протеуса...
Максимум штатный симулятор IDE и/или примитив-макет.
А уже по мере усложнения задач сам придеш к пониманию "куда копать".
8)
Аватара пользователя
главный колбасист
Это не хвост, это антенна
Сообщения: 1338
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край
Контактная информация:

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

Сообщение главный колбасист »

Не получается ничего. Буковки на виртуальном дисплее не бегают. При запуске симуляции. Экран зажигается,а буковок нет. :cry:
Доглядел виртуальным осциллоскопом,что генерации нет на кварце. Может в этом причина...
Жаль,файл проекта не могу прилепить.
Вложения
HD44780.c
(3.36 КБ) 193 скачивания
lcd_mega8_circuit_small.gif
(13.48 КБ) 205 скачиваний
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

Что у вас под обозначением "A1", на пине reset, между резистром и кондером? Перемычка?

Выкинте её. Там кнопка должна быть.
Реклама
Аватара пользователя
главный колбасист
Это не хвост, это антенна
Сообщения: 1338
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край
Контактная информация:

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

Сообщение главный колбасист »

А хрен его знает. схема не моя,взятая с какого то сайта.Впрочем как и исходник. У меня там ничего нет.
Я понимаю,что при соединении reset с землей, контроллер будет делать сброс. А так,с R и C будет однократный при подаче питания.

Добавлено after 35 minutes 40 seconds:
Прилепил кнопку. При нажатии на нее,сигналы с порта D становятся неопределенными. И это понятно.
А больше ничего.
Реклама
Аватара пользователя
Starichok51
Модератор
Сообщения: 19054
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

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

Сообщение Starichok51 »

главный колбасист, а что ты тут с исходником на Си делаешь в теме про ассемблер?
если еще тут будешь продолжать, дам бан за оффтоп.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Аватара пользователя
главный колбасист
Это не хвост, это антенна
Сообщения: 1338
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край
Контактная информация:

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

Сообщение главный колбасист »

Я больше не буду.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

сигналы с порта D становятся неопределенными. И это понятно.
А больше ничего.
Ну понятное дело, что контроллеру нечего исполнять. Ты ему прошивку указал?
И да, на выводдах кварца в модели НИЧЕГО не будет - этот аспект не симулируется в виду его ненужности. Тактирование там виртуальное, и не просто так а частотой указанной в свойствах модели. Даже если биты конфигурации стоят иначе - модель на многие из них плевала с высокой колокольни в виду ненужности и бесперспективности в целях отладки программного кода, но полная симуляция всех аспектов просто впустую потратит ценный ресурс. Есть ещё ряд особенностей с которыми столкнётесь при работе с моделями/симуляторами... например UART-ы на протеусе не работают на скоростях выше 38400 бод. Если задать к примеру 115200 то реальный выход всеравно будет 38400 и не больше. Какое-то ограничение чтобы не использовали в коммерческих целях.
Аватара пользователя
главный колбасист
Это не хвост, это антенна
Сообщения: 1338
Зарегистрирован: Чт авг 21, 2014 11:11:48
Откуда: краснодарский край
Контактная информация:

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

Сообщение главный колбасист »

Ну понятное дело, что контроллеру нечего исполнять. Ты ему прошивку указал?
разумеется.
Нас выгнали в тему по протеусу.
https://radiokot.ru/forum/viewtopic.php ... start=5040
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

Может кто-нибудь прояснить ситуацию с ".undef"?
Конечно я могу и регистрами всё переписать, но просто уже интересно стало...

Ситуация такая:

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

PODPROGRAMMA:
	.def BAR_track		=	R16
	.def BAR_height		=	R17
	.def POS_mark_line	=	R18
	.def BAR_width		=	R19
	.def BAR_count		=	R20

.....................
.....................
........... код подпрограммы ................
.....................
rcall LABEL1
.....................
.....................
.....................

	.undef BAR_track
	.undef BAR_height	
	.undef POS_mark_line	
	.undef BAR_width		
	.undef BAR_count
ret

LABEL1:
..........
..........
dec POS_mark_line
..........
..........
dec BAR_height
..........
..........
dec BAR_track
..........
..........
ret

По логике, я ставлю .undef-ы на выходе из основной подпрограммы, в которой они и были определены.
Но компилятор выдаёт: error: Invalid register

Если переношу их в конец подпрограммы под LABEL1, то принимает. Но тогда где же логика?

Первый раз столкнулся с таким. Где их правильно расположить?

PS.
Всё, понял. Их можно и ешё ниже расположить. Не зависимо в теле процедуры или нет. Но как-то странно это.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15585
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

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

Сообщение BOB51 »

Для обхода ограничений .def/.undef используем первичную привязку к "временным регистрам общего пользования"
к примеру:

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

; область полного функционала
 .def tmp0 = r16 ; рабочий регистр (полный функционал)
 .def tmp1 = r17 ; рабочий регистр (полный функционал)
 .def tmp = r18 ;(полный функционал)
 .def tmp = r19 ;(полный функционал)
 .def tmp = r20 ;(полный функционал)
 .def tmp = r21 ;(полный функционал)
 .def tmp = r22 ;(полный функционал)
 .def tmp = r23 ;(полный функционал)
а в прикладных программах применяем директивку #define

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

; proc_a
#define cnt0 tmp0
#define mod_a tmp1

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

;proc_b
#define my_buf tmp0
#define mod_5 tmp1
#define cntl tmp2
#define cnth tmp3
однако следует учитывать, что компилятор в таком случае не отслеживает "взаимоналожение" регистров
8)
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Надо только вспомнить что препроцессор(а директивы в его ведении) не знает ничего о программе и в часности о том как она работает - он работает с ТЕКСТОМ программы, для него это не более чем символы. Теперь стало яснее почему твой финт не сработал?
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

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

Сообщение shonty »

Alexeyslav писал(а):Теперь стало яснее почему твой финт не сработал?
Как бы да.
В том то и дело, что вразрез логике.
По логике: зашёл - объявил, ну и отменил объявление перед выходом.

А тут по тексту значит...

Ладно, приспособимся...
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

Просто реализация такой функциональности потребовала бы плотного взаимодействия с компилятором. Это был бы уже не препроцессор, и пришлось бы цепляться за КАЖДЫЙ выпущенный компилятор и его особенности, кроме того в каждом компиляторе надо было бы предусмотреть связи с каждым выпущенным препрроцессором - а работа это столь бесполезна сколь масштабна. Кто это будет делать и зачем, верней за какие деньги. Как представишь сколько это костылей породит, так и поймёшь почему оно такое какое есть сейчас. Если бы была только одна пара компилятор-препроцессор, это было бы пол беды. Ну а в каких-то языках так и сделано, там где нет разнообразия компиляторов.
dgrett
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

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

Сообщение dgrett »

Всем здравствуйте. Никак не доходит такая вещь : надо, чтобы регистр при каждом проходе увеличивался на 1, до, скажем, 240. По достижении этого значения начинаем отнимать от регистра до, пусть, 80. Достигнув 80 снова увеличиваем до 240 и тд. Суммирую или отнимаю с другим регистром, в который гружу то 01 то FF. Задействовал и флаг Т , то проскакиваю границы , то топчусь у границы. Подмогните пж с алгоритмом.
Я всё-всё узнAю и стану профессором.
akl
Друг Кота
Сообщения: 4447
Зарегистрирован: Пт мар 07, 2008 06:54:43
Откуда: Ижевск

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

Сообщение akl »

Как вариант

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

START:
	LDI	R22,80
	LDI	R21,1
GO_240:
	RCALL	PROHOD
	ADD	R22,R21
	CPI	R22,240
	BRLO	GO_240
	LDI	R21,-1
GO_80:
	RCALL	PROHOD
	ADD	R22,R21
	CPI	R22,80
	BRSH	GO_80
	RJMP	START

PROHOD:
	RETI
Вариант с одним регистром

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

START:
	LDI	R22,80
GO_240:
	RCALL	PROHOD
	INC	R22
	CPI	R22,240
	BRLO	GO_240
GO_80:
	RCALL	PROHOD
	DEC	R22
	CPI	R22,80
	BRSH	GO_80
	RJMP	START

PROHOD:
	RETI
Последний раз редактировалось akl Ср авг 19, 2020 10:59:16, всего редактировалось 1 раз.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Сам алгоритм может быть простой

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

// До цикла:
d = 1;
// В цикле:
if (reg >= 240) {
    d = -1;
}
if (reg <= 80) {
    d = 1;
}
reg += d;
Только на ассемблер сами переводите :)
Аватара пользователя
Ivanoff-iv
Друг Кота
Сообщения: 7077
Зарегистрирован: Пт ноя 11, 2016 05:48:09
Откуда: Сердце Пармы

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

Сообщение Ivanoff-iv »

я бы делал так:
(r2<>0) skip
r2=0x01 (либо r2=1 делать в инициализации)
(r1<240) skip
r2=0xff
(r1>80) skip
r2=0x01
r1+r2

(результат в r1. на асм думаю переведёшь)
и обязательно убедиться что r1 и r2 не портятся другим кодом между итерациями (или нужно сохранять и восстанавливать их значения)
а как сам ты делаешь? :dont_know:

Добавлено after 18 minutes 30 seconds:
akl, мне не очень понятен Ваш код...
например: вызывается PROHOD (заметь - именно вызов, а не ГоТо) а за меткой сразу RETI... куда он вернётся?

Добавлено after 1 minute 36 seconds:
и, наверно этот кусок кода должен вызываться извне, а не сам вызывать...

Добавлено after 1 minute 23 seconds:
хотя... если посмотреть под тем углом, что возврат - это и есть вызов... то, даже норм будет :beer:

Добавлено after 1 minute 41 second:
получается направление движения хранится не в регистре, а в векторе возврата
Для тех, кто не учил магию мир полон физики :)
Безграмотно вопрошающим про силовую или высоковольтную электронику я не отвечаю, а то ещё посадят за участие в (само)убиении оболтуса...
dgrett
Вымогатель припоя
Сообщения: 615
Зарегистрирован: Вс дек 28, 2014 21:54:05

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

Сообщение dgrett »

akl, Ваш код ещё не пробовал, WiseLord и Ivanoff, так я пробовал, топчусь у границы. Ведь когда меняем знак и идём в обратную сторону, то опять попадаем на условие и Тут же знак меняется. Вот и топчусь у границы. Пардон, у меня срочный вызов, сейчас проверить не могу.
Я всё-всё узнAю и стану профессором.
Ответить

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