Как выполнить несколько действий в цикле While ? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Подскажите как выполнить несколько действия в бесконечном цикле while (1). Нужно чтобы мигали два светодиода и считывалось состояние кнопки и от нажатия загорался третий светодиод. Запустил код, но в цикле выполняется только мигание светодиодов, а оператор if, в котором считывается состояние кнопки, не работает. Если например оставить один оператор if, то работает. Подскажите как нужно записывать, чтобы выполнилось несколько действий ?
Листинг программы
  1. while (1)
  2. {
  3. PORTB7=1;
  4. _delay_ms(1000);
  5. PORT7=0;
  6. _delay_ms(1000);
  7. PORTB6=1;
  8. _delay_ms(1000);
  9. PORT6=0;
  10.  
  11. {
  12. if (i=1)
  13. {
  14. PORTB3=1;
  15. }
  16. else
  17. {
  18. PORT3=0;
  19. }
  20. }

Решение задачи: «Как выполнить несколько действий в цикле While ?»

textual
Листинг программы
  1. while (1==1)
  2.     {
  3.         switch (PIND&(1<<PORTD))
  4.         {
  5.         case 1: PORTB=0b00000000;
  6.         break;
  7.         case 0: PORTB=0b00000100;
  8.         break;
  9.         }
  10.    
  11.    
  12.     if (butstate==0)
  13.     {PORTB =0b10000000;
  14.         _delay_ms(1000);
  15.         PORTB =0b00001000;
  16.         _delay_ms(1000);
  17.         }
  18.     }
  19. }

Объяснение кода листинга программы

  1. Проверяется условие 1==1, которое всегда истинно, поэтому цикл будет выполняться бесконечно.
  2. В каждой итерации цикла выполняется операция побитового И (AND) между PIND и 1<<PORTD, результат которой сохраняется в переменной PIND.
  3. В зависимости от значения PIND, выполняется соответствующий блок кода в блоке switch.
  4. Если butstate равно 0, то выполняется блок кода, который включает в себя три действия:
    • PORTB устанавливается в 0b10000000.
    • Выполняется задержка на 1000 миллисекунд с помощью функции _delay_ms.
    • PORTB устанавливается в 0b00001000.
    • Выполняется задержка на 1000 миллисекунд с помощью функции _delay_ms.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут