Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 10.04.2019, 18:37   #1
woodkld
 
Регистрация: 10.04.2019
Сообщений: 3
По умолчанию Необходима помощь с программой на ассемблере для микроконтроллера-ATmega16 - управление светодиодами

Нужна помощь с программой на assembler`е, буду рад любым идеям
Микроконтроллер-ATmega16

Условия программы:
Напишите программу, которая реализует небольшую коллекцию световых
эффектов (3 – 5 будет достаточно). Две кнопки («Вперед» и «Назад») должны
перебирать эффекты по порядку. Две других кнопки («Быстрее» и «Медленнее»)
должны управлять скоростью переключения светодиодов. Для устранения
дребезга используйте задержку (примерно 20 мс) после опроса кнопки.

Последний раз редактировалось woodkld; 11.04.2019 в 09:06.
woodkld вне форума Ответить с цитированием
Старый 11.04.2019, 00:09   #2
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 1,990
По умолчанию

Насколько подсказывает мой телепатор, эта мега-супер должна работать на микроконтроллере ? И у него есть имя ( в смысле тип, семейство ). Под световые эффекты нужна горсть светодиодов, как-то куда-то прикрученнная. И схему нарисовать? Тогда это в соответствующий раздел. Фриланс я имею в виду. Или есть кому охота тратить свое время - студенту задачку кропать? А не это пару десятков строк, мягко говоря.
Нужна идея? Это можно. Для начала определиться с предметом (темой), по которым задали задание. Потом выбрать нужный МК и читать даташит на него до полного просветления. А останутся темные пятна - в форум с исходником: "Вот тут у меня че-то не фурчит".

Даю бесплатно текст запроса для Яндекса (секретный!) Автомат световых эффектов на микроконтроллере
------------------------------
Напомнило давний случай у нас на производстве. https://cloud.mail.ru/public/A1pR/7adCJai1o

Последний раз редактировалось digitalis; 11.04.2019 в 00:24.
digitalis вне форума Ответить с цитированием
Старый 11.04.2019, 08:54   #3
woodkld
 
Регистрация: 10.04.2019
Сообщений: 3
По умолчанию

МК-ATmega16, цепь не обязательно.
Мне бы только идеи кода на assembler.
woodkld вне форума Ответить с цитированием
Старый 11.04.2019, 12:13   #4
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 1,990
По умолчанию

Ну вот, под пытками раскололи партизана - об типе устройства.
Интересно девки пляшуть. Написать прогу, управляющую зажиганием светодиодов, не зная, сколько этих СД и куда они подключены (это об отсуствии схемы) не взялся бы сам Никлаус Вирт.
Баксов за 20 какой-нить радиокот, которму времени некуда девать, взялся бы сделать - накропал бы схему, прогу, просимулировал в Студии или Протезусе - и нате вам .
Вот придет Неверов и сделает на халяву за так, он это любит.
------------------------------------------------------------------
А идея проста как грабли:
1. Продумать сами эффекты (бегущий огонь, бегущая тень, "шахматка" и пр.) - это первое, что мне со сна на ум приходит.
2. Расписать на бумаге это ноликами - единичками коммутаций.
3. Определиться все-таки, куда кнопки, куда СД, параллельно или матрично, с внеш. регистрами или бэз.
4. Описа'ть это все в коде (таймеры не забыть задействовать!)
Ну а если идея закл. в том, как написать прогу, не имея малейшего понятия даже, что такое, к примеру, MOV R1,R16 - Это к Кио. Так мол и так, напишите на асме, ведь он - единственный на все типы контроллеров, как Си или Паскаль.

Последний раз редактировалось digitalis; 11.04.2019 в 12:36.
digitalis вне форума Ответить с цитированием
Старый 11.04.2019, 14:48   #5
woodkld
 
Регистрация: 10.04.2019
Сообщений: 3
По умолчанию

Вот код который у меня получился. Прошу строга не судить, 2 код на данном языке в жизни. Любые комментарии приветствуются.
Код:
.include "m16def.inc" 
ldi r16, low(RAMEND)
out SPL, r16
ldi r16, high(RAMEND)
out SPH, r16
ldi r16, 0xff
out DDRB, r16
ldi r16, 0xff
out PORTB, r16
ldi r16, 0
out DDRA, r16
ldi r16, 0xff
out PORTA, r16
ldi r21, 1

_main_cycle:
sbi PORTB, 0 
sbi PORTB, 1
sbi PORTB, 2
rcall _delay_20ms
sbic PINA, 0
rjmp _loop3
inc r21
rjmp PC-4
_loop3:
dec r21
sbrs r21, 7 
rjmp _loop4
rcall _svet_1
dec r21
sbrs r21, 7
rjmp _loop4
rcall _svet_2
dec r21
sbrs r21, 7
rjmp _loop4
rcall _svet_3
dec r21
sbrs r21, 7
rjmp _loop4
rjmp _loop3

_loop4:
sbi PORTB, 0
sbi PORTB, 1
sbi PORTB, 2
rcall _delay_20ms
sbic PINA, 1
rjmp _loop3
inc r22
rjmp PC-4
_loop5:
dec r22
sbrs r22, 7 
rjmp _loop4
rcall _svet_3
dec r22
sbrs r22, 7
rjmp _loop4
rcall _svet_2
dec r22
sbrs r22, 7
rjmp _loop4
rcall _svet_1
dec r22
sbrs r22, 7
rjmp _loop4
rjmp _main_cycle




_svet_1:
cbi PORTB, 0
cbi PORTB, 1
cbi PORTB, 2
ret


_svet_2:
cbi PORTB, 0
sbi PORTB, 1
cbi PORTB, 2
ret

_svet_3:
cbi PORTB, 0
cbi PORTB, 1
sbi PORTB, 2
ret



_delay_20ms:
 ldi r20, 0x0a
_loop2:
 ldi r19, 0x22
_loop1:
 ldi r18, 0xa0
_loop0:
 dec r18
 brne _loop0
 dec r19
 brne _loop1
 dec r20
 brne _loop2
 ret
woodkld вне форума Ответить с цитированием
Старый 11.04.2019, 16:06   #6
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 1,990
По умолчанию

Разбираться в этм опусе без комментов - никакого желания. Задержки считать циклами - это каменный век, будь я преподом - отправил бы туды-в-качель. Таймеры существуют в природе.
При отсутствии опыта начинать лучше со схемы программы (алгоритма). Схемы придуманы не для того, чтоб бедным студеням жизть медом не казалась, а чтоб чел ясно глазами видел логику проектируемой программы. Ведь когда электронщик делает дивайс, он же не пальцами рисует в воздухе: "эту пимпочку той хреновины прикручиваем к загогулине этой мудени", а рисует схему, где сразу видно: что, куда, как. А тут для начала - хотя бы словесно определи поведение светоэффектов в разных режимах.
Компиляй, отлаживай пошагово в Студии.
Навскидку: все эти Светы 1 2 3 = ахунея: промелькнувшие за долю микросекунды состояния пинов никак не успеют отобразиться визуально, останется лишь последнее присваивание.
Все, на этом помощь заканчиваю, нет сил дальше бороться. Вложить в страницу форума целый семестр микроконтроллеров - не, легче достать бегемота. Из болота.

Последний раз редактировалось digitalis; 11.04.2019 в 21:56.
digitalis вне форума Ответить с цитированием
Старый 18.04.2019, 10:02   #7
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,462
По умолчанию

Ну вот .. закидали тапками малого. ))))
Таймеры на начальном этапе наверное рановато. Но в любом случае и правда надо на бумажке все нарисовать. Схему электрическую, блок схему алгоритма решения. А потом уже к коду переходить. Так будет эффективнее.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 18.04.2019, 12:21   #8
digitalis
Участник клуба
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 1,990
По умолчанию

Нет речи об полной реализации возможностей таймера - PWM, скажем, или еще чего. Но обработчик таймера в простейшем случае - 4 строчки. И мы уже в Хопре
digitalis вне форума Ответить с цитированием
Старый 18.04.2019, 12:45   #9
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,462
По умолчанию

Цитата:
Сообщение от digitalis Посмотреть сообщение
Нет речи об полной реализации возможностей таймера - PWM, скажем, или еще чего. Но обработчик таймера в простейшем случае - 4 строчки. И мы уже в Хопре
Так может еще не проходили этих таймеров на уроках. Азы только начали и все..
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программирование микроконтроллера MCS–51 (решение учебной задачи на Ассемблере) leva290791 Assembler - Ассемблер 9 15.11.2012 21:50
Необходима помошь с программой Serega852 Assembler - Ассемблер 3 13.06.2012 20:05
нужна помощь с программированием микроконтроллера в Ассемблере quart Фриланс 9 10.02.2011 15:49
Программирование микроконтроллера 80С196КС на ассемблере KOCT9IH Фриланс 3 07.11.2008 14:03