AVR assembly - led включение/выключение с помощью кнопок
Я пишу ассемблерный код для ATMEGA328P (arduino uno). у меня есть пример из книги.
- Отрегулируйте предыдущее задание так, чтобы светодиод оставался включенным, даже когда вы отпустите кнопку. Светодиод должен гореть до тех пор, пока не будет нажата другая кнопка'
предыдущее задание было:
- Создайте программу, которая будет гореть светодиодом при нажатии кнопки. При нажатии кнопки 0 должен загореться светодиод 0. При нажатии кнопки 1 должен загореться светодиод 1.'
для этого я должен написать какой-то код( может быть, не самый лучший, но он работает )
.include "m328Pdef.inc" .def temp=r16 .def temp1=r18 .cseg .org 0x0000 init: ldi temp, 0xff ldi temp1, 0x00 out DDRD, temp out DDRB,temp1 out PORTB,temp1 loop: in temp,PINB out PORTD, temp rjmp loop
Итак, мой вопрос заключается в том, как я могу выполнить второе задание?
Что я уже пробовал:
я попытался добавить это:
delay: ldi temp, 0xFF delay_loop_1: dec temp cpi temp, 0x00 jmp delay_loop_1 ret
Richard MacCutchan
В будущем, когда вас попросят предоставить дополнительную информацию, пожалуйста, отредактируйте свой первоначальный вопрос, а не публикуйте новый.
Member 14611851
это уже другой вопрос
Mike Hankey
Вы должны следить за состоянием светодиода, то есть за тем, горит он или нет.
Почему вы используете петлю задержки, поскольку светодиод должен гореть до тех пор, пока не будет нажата другая кнопка?
Если вы используете Atmel Studio, то используйте симулятор для отладки своей программы, и это избавит вас от многих головных болей.
Member 14611851
мне не нужна петля задержки?