Как из цикла while перейти в loop&

Тема в разделе "Arduino & Shields", создана пользователем sanik, 24 фев 2021.

  1. parovoZZ

    parovoZZ Гуру

    А для ассемблера разве компилятор называется?
     
    Последнее редактирование: 26 фев 2021
  2. Asper Daffy

    Asper Daffy Иксперд

    Нет, конечно.
     
  3. Un_ka

    Un_ka Гуру

    Слесарь-сборщик собирает агрегат программу по нарисованному на бумажке из машинных кодов.
     
  4. Ariadna-on-Line

    Ariadna-on-Line Гуру

    Какой ни есть, а он - родня. Ассемблер - тот же компилятор, скажем так - первого поколения. Поскольку ниже его ничего нет - то можно назвать его и транслятором. Не путаем с текстовым исходным файлом XXXXXXXX.asm на языке ассемблера !!! Сам компилятор ассемблера создавали вообще программатором микросхем памяти с помощью тумблеров и пережигаемых перемычек.
     
    Последнее редактирование: 26 фев 2021
    Un_ka нравится это.
  5. sanik

    sanik Гик

    Ого вот это беседа! :) Нашел два решения Первое объединить эти циклы в один и переключаться между функциями в кейс свитч Второй банальный
    Код (C++):
    void(* resetFunc) (void) = 0;
    Все равно в этих функциях работа с епром. Какой из них лучше?

    Появилась новая задачка есть таймер "будильник" по часикам Но когда вырубают свет все сбивается Помогите найти решение восстановления текущего состояния ведь свет могут вырубить и на двое суток!
    Код (C++):
        //  проверка таймера включения
          if (t.sec  == 00) {             // если в текущем времени 0 секунд
            if (t.min == ON_alarm[1]) { // если совпали минуты
              if (t.hour == ON_alarm[0]) { // если совпали часы
                alarm_FLAG = true;          // устанавливаем флаг разрешающий работу в авторижиме
                if (time_Heart == true) {
                  clockheat = true;  // устанавливаем флаг разрешающий работу нагревателя
                }
              }
            }
          }

          // проверка таймера выключения
          if (t.sec  == 00) {             // если в текущем времени 0 секунд
            if (t.min == OFF_alarm[1]) { // если совпали минуты
              if (t.hour == OFF_alarm[0]) { // если совпали часы
                alarm_FLAG = false;          // устанавливаем флаг запрещающий работу  в авторижиме
                if (time_Heart == true) {
                  clockheat = false;  // устанавливаем флаг запрещающий работу нагревателя
                } else {
                  clockheat = true;
                }
              }
            }
          }
    Я пока нашел такое но переход через 00 часов ничерта не работает
    Код (C++):
      if ((t.hour > 0) && (t.hour > ON_alarm[0])) {
            ClocON = 1;
            ClocOFF = 0;
          } else {
            ClocOFF = 1;
            ClocON = 0;
          }
        }

    if (ClocON == 0) {
            //  проверка таймера включения
            if (t.sec  > 9) {             // если в текущем времени больше 0 секунд
              if (t.min > ON_alarm[1]) { // если в текущем времени больше 0 минут
                if (t.hour > ON_alarm[0]) { //  если в текущем времени больше 0 часов
                  ClocON = 1;
                  ClocOFF = 0;
                  alarm_FLAG = true;          // устанавливаем флаг разрешающий работу в авторижиме
                  if (time_Heart == true) {
                    clockheat = true;  // устанавливаем флаг разрешающий работу нагревателя
                  }
                }
              }
            }
          }

          if (ClocOFF == 0) {
            // проверка таймера выключения
            if (t.sec  > 0) {            // если в текущем времени больше 0 секунд
              if (t.min > OFF_alarm[1]) { //  если в текущем времени больше 0 минут
                if (t.hour > OFF_alarm[0]) { //  если в текущем времени больше 0 часов
                  ClocOFF = 1;
                  ClocON = 0;
                  alarm_FLAG = false;          // устанавливаем флаг запрещающий работу  в авторижиме
                  if (time_Heart == true) {
                    clockheat = false;  // устанавливаем флаг запрещающий работу нагревателя
                  } else {
                    clockheat = true;
                  }
                }
              }
            }
          }
     
    Последнее редактирование: 27 фев 2021