@VARSAVA

Не понимаю в чём ошибка в коде на Assembler для Atmega 16?

6008375fb1d4c313122994.png
Вот схема. По умолчанию горит одна лампочка(допустим верхняя). При нажатии кнопки должна загореться вторая и потухнуть вторая.
Start:
in r16 pinc
sbrs r16, 2
out ddra, r16
ldi port A, r17 0b00000010
cpi r17, 1
breq zxc
rjmp start
zxc:
ldi r17, 255
out ddra, r17
ldi r18, 0b0b00000101
out porta, r18
rjmp start
написал такой код , я понимаю что он не правильно, но не понимаю в чём ошибка. ( заранее спасибо за помощь новичку).
  • Вопрос задан
  • 133 просмотра
Пригласить эксперта
Ответы на вопрос 1
@evgeniy_lm
Ошибка во всем.
1. На схеме нет лампочек
2. Допустим на схеме светодиоды (это не указано, но опять же про лампочки), то нужно было указать куда они подключены.
3. Собственно алгоритм работы:
а) настраиваем пины портов на ввод для кнопки, на вывод дляLED
b) в цикле (а лучше по таймеру) проверяем нажатие кнопки: если нажата и флаг нажатия сброшен инвертируем переменную состояния светодиодов и выдаем в порт, поднимаем флаг нажатия (чтобы не было цикличного переключения при удержании кнопки); если не нажата сбрасываем флаг

Если у вас просто код или тест в эмуляторе то пойдет, если в в железе то необходимо озадачится устранением дребезга контактов т.е. когда кнопка гарантировано удерживается в течении какого то времени (обычно 0,1с)

Если вам нужен готовый код пишите на почту, договоримся
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы