Возможно ли инвертировать HIGH в LOW и наоборот одной командой?

dimajak
Offline
Зарегистрирован: 06.12.2017

Возможно ли такое:

void setup() {
  status = LOW;
}

void loop () {
  status = ! status;
}

Т.е. при первом проходе в loop() status будет равен HIGH, при втором LOW и т.д. ?

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Почему нельзя. Залей и проверь.

bool status;
void setup() {
  pinMode(13, OUTPUT);
  digitalWrite(13, status = LOW);
}

void loop () {
  delay(500);
  digitalWrite(13, status = ! status);
}

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

На большинстве контроллеров, можно даже одной машинной командой. Только Вы не указали тип контроллера.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Вот тут, как раз, прям в первом посте, человек интересуется "че за команда ?"

http://arduino.ru/forum/programmirovanie/timer1-0

dimajak
Offline
Зарегистрирован: 06.12.2017

ЕвгенийП пишет:

На большинстве контроллеров, можно даже одной машинной командой. Только Вы не указали тип контроллера.

Заказанная Ардуинка Nano судя по треку пока не может покинуть сортировочный центр в Китае, хотя одновременно заказанная RGB лента уже пришла.

В VBB такой трюк не прокатывает. Поэтому вопрос пока чисто теоретический.

А разве возможности команд различны для разных Ардуин?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

dimajak пишет:

А разве возможности команд различны для разных Ардуин?

Возможности команд - одинаковые, наборы команд - разные.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

dimajak пишет:
Заказанная Ардуинка Nano
Тогда, для инвертирования пина (независимо от того, INPUT он или OUTPUT)  достаточно прописать 1 в соответсвующий бит регистра PINx. Это делается одной машинной командой - SBI.

dimajak
Offline
Зарегистрирован: 06.12.2017

ЕвгенийП пишет:

dimajak пишет:
Заказанная Ардуинка Nano
Тогда, для инвертирования пина (независимо от того, INPUT он или OUTPUT)  достаточно прописать 1 в соответсвующий бит регистра PINx. Это делается одной машинной командой - SBI.

А где про неё почитать? Это ассемблерная команда?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

dimajak пишет:
А где про неё почитать?

Там же, где и про всё остальное.

dimajak пишет:
Это ассемблерная команда?

Это машинная команда. В нее транслируется ассемблерная строка "sbi" или строка на С "PINx = ...". Пример использования на С++ есть вот здесь.