Как инкрементировать и декрементировать одной кнопкой.
Добавлено: Сб июл 05, 2014 09:04:57
Всем привет. Делаю ночник на тини13. Управляю аппаратным ШИМ. При включении можно выбрать как будет увеличиваться значение OCRA ступенчато или плавно. Ступенчатый режим работает более или менее.
OCR0A=eebright;//
if(!eeflag)// флаг ступенчатого режима
{
if(!trig && OCR0A<238)//если кнопка нажата
{
while(!trig);// ждем отжатия кнопки
delay_ms(50);//антидребезг
eebright+=60;// увеличиваем переменную на 60
}
if(!trig && OCR0A>237)если кнопка нажата
{
while(!trig);// ждем отжатия кнопки
delay_ms(50);//антидребезг
eebright=0; // сбрасываем
}
}
А второй режим хочу сделать следующим : нажали кнопку переменная инкрементировалась. Нажали повторно декрементировалась. Как можно это сделать. Пробовал так не получается.
{
if(!trig && !i && OCR0A<255)
{
delay_ms(50);
eebright++;
i=1;
}
if(!trig && i==1 && OCR0A>0)
{
delay_ms(50);
eebright--;
i=0;
}
}
Пожалуйста укажите на мои ошибки, и можно ли используя таймер по переполнению, сделать отключение к примеру через 6 часов.
МК начал изучать месяц назад и эта моя первая работа.
Спойлер
{OCR0A=eebright;//
if(!eeflag)// флаг ступенчатого режима
{
if(!trig && OCR0A<238)//если кнопка нажата
{
while(!trig);// ждем отжатия кнопки
delay_ms(50);//антидребезг
eebright+=60;// увеличиваем переменную на 60
}
if(!trig && OCR0A>237)если кнопка нажата
{
while(!trig);// ждем отжатия кнопки
delay_ms(50);//антидребезг
eebright=0; // сбрасываем
}
}
Спойлер
if(eeflag==1){
if(!trig && !i && OCR0A<255)
{
delay_ms(50);
eebright++;
i=1;
}
if(!trig && i==1 && OCR0A>0)
{
delay_ms(50);
eebright--;
i=0;
}
}
МК начал изучать месяц назад и эта моя первая работа.