Как выполнить несколько действий в цикле While ? - C (СИ)
Формулировка задачи:
Подскажите как выполнить несколько действия в бесконечном цикле while (1). Нужно чтобы мигали два светодиода и считывалось состояние кнопки и от нажатия загорался третий светодиод. Запустил код, но в цикле выполняется только мигание светодиодов, а оператор if, в котором считывается состояние кнопки, не работает. Если например оставить один оператор if, то работает. Подскажите как нужно записывать, чтобы выполнилось несколько действий ?
while (1)
{
PORTB7=1;
_delay_ms(1000);
PORT7=0;
_delay_ms(1000);
PORTB6=1;
_delay_ms(1000);
PORT6=0;
{
if (i=1)
{
PORTB3=1;
}
else
{
PORT3=0;
}
}Решение задачи: «Как выполнить несколько действий в цикле While ?»
textual
Листинг программы
while (1==1)
{
switch (PIND&(1<<PORTD))
{
case 1: PORTB=0b00000000;
break;
case 0: PORTB=0b00000100;
break;
}
if (butstate==0)
{PORTB =0b10000000;
_delay_ms(1000);
PORTB =0b00001000;
_delay_ms(1000);
}
}
}
Объяснение кода листинга программы
- Проверяется условие
1==1, которое всегда истинно, поэтому цикл будет выполняться бесконечно. - В каждой итерации цикла выполняется операция побитового И (AND) между PIND и 1<<PORTD, результат которой сохраняется в переменной PIND.
- В зависимости от значения PIND, выполняется соответствующий блок кода в блоке switch.
- Если butstate равно 0, то выполняется блок кода, который включает в себя три действия:
- PORTB устанавливается в 0b10000000.
- Выполняется задержка на 1000 миллисекунд с помощью функции _delay_ms.
- PORTB устанавливается в 0b00001000.
- Выполняется задержка на 1000 миллисекунд с помощью функции _delay_ms.