Я новичок в микроконтроллерах.
Собираю свой второй "Hello World" - миниатюрно-примитивную сигнализацию на Attiny2313.
Написал код, да вот че-то сомневаюсь в его рациональности.
Помогите пожалуйста упростить.
Логика:
Ничего не делаем, до тех пор, пока нет возмещения (не открыта дверь)
Как только есть возмущение - бъем тревогу.
И бъем тревогу эту до тех пор, пока возмущение не пропадет, и еще 5 минут после этого (для упрощения примера - 5 сек).
Если по истечению 5 минут (5 СЕК) все спокойно - все спокойно, то переходим в сторожевой режим.(ничего не делаем).
Код: Выделить всё
DDRD = 0xff; /* все выводы порта D сконфигурировать как выходы */
/* DDRB = 0x00; все выводы порта B сконфигурировать как входы */
while (1)
{ // Бесконечный цикл
if (PINB != 0x00) //Если первый бит порта Б не равен 0 (есть напряжение на входе)
//(Если кто-то пришел и открыл дверь)
{
while (PINB != 0x00)
{
// И до тех пор, пока н закроют дверь - Включаем режим "тревога"
if (PIND != 0x01) PORTD = 0x01; //и его не выключаем во что бы то ни стало.
}
//Как только цикл закончится - дверь закроют, терпим время и возвращаем все в режим.
_delay_ms(5000); // Ждем 5 сек.
PORTD = 0x00; /* устанавливаем "спокойствие" */
}
} // закрывающая скобка бесконечного цикла
} // закрывающая скобка основной программы

