Как выполнить несколько действий в цикле 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д