Страница 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
Д понятно что простого опроса тут не достаточно, из-за дребезга все хаотично будет. Я человеку пример реализации показал, так как если его просто скопировать, он все-равно работать не будет