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