Страница 1 из 1
Переключение режимов одной кнопкой
Добавлено: Вт янв 17, 2012 19:24:56
igumich
Доброго времени суток! Я только начинаю осваивать прогр. AVR на С через CodeVision
Как можно осуществить:
поочерёдное переключение трёх светодиодов одной кнопкой?
поочерёдное переключение трёх подпрограмм?
Желательно с комментарием.
Re: Переключение режимов одной кнопкой
Добавлено: Вт янв 17, 2012 19:30:53
dr.doc
В качестве подсказки: Циклический кольцевой счетчик, вместо 4-ки в котором всегда будет получаться 1 при увеличении. Изменение проводить при гарантированной защите от дребезга (задержка). Каждому значению счетчика соответствует свой светодиод (условие) или подпрограмма.
Re: Переключение режимов одной кнопкой
Добавлено: Вт янв 17, 2012 20:45:17
romazan
Как-то вот так
Код: Выделить всё
unsigned char a;
while(1){ ;вечный цикл
if(PINB & 0x1) { ; если нажата первая кнопка 0х1
a++;
if(a>N) a=1;
switch a{
case 1: function1(); break;
case 2: function2(); break;
case 3: function3(); break;
case N: functionN(); break;
...
}
}
}
Re: Переключение режимов одной кнопкой
Добавлено: Ср янв 18, 2012 06:39:39
Мастер Ломастер
romazan писал(а):Как-то вот так
Код: Выделить всё
if(PINB & 0x1) { ; если нажата первая кнопка 0х1
ну сколько раз было сказано: не давайте плохих советов, не советуйте, если сами еще не понимаете, как оно все работает! нельзя определять состояние кнопки тупым однократным опросом пина!
есть же отдельная тема (кстати, не единственная - про кнопки регулярно вопрошают), читайте ее, начиная отсюда:
http://www.radiokot.ru/forum/viewtopic. ... 8#p1110548
Re: Переключение режимов одной кнопкой
Добавлено: Ср янв 18, 2012 11:58:19
romazan
Д понятно что простого опроса тут не достаточно, из-за дребезга все хаотично будет. Я человеку пример реализации показал, так как если его просто скопировать, он все-равно работать не будет