Не корректно работает код
- Войдите на сайт для отправки комментариев
Вс, 09/10/2022 - 01:00
Всем привет, недавно возникла проблема с кодом, не могу найти ошибку, должен работать так что есть 5 светодиодов и одна кнопка, при нажатие на кнопку должен загорится первый светодиод. при следующем нажатии должен загорится второй светодиод, и так до 5 светодиода. Когда загорятся все 5 светд. то при каждом следующем нажатии она должны по очереди выключатся, но код работает не корректно, подскажите что не так)
Вот код:
https://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
канечный афтомат пагугли.
Код кривой, корявый, вставить не можешь... Бухал что ли? После ДР?
Сравнивай.
В 22 я бы сделал так:
В 22 я бы сделал так:
это когда писатель и за каждую букву оплачивают? )))
А что, инициализировать ее не надо? И так сойдёт?
Если чем-то отличным от 0, то - надо.
А почему? Что-то не пойму...
Чего именно не понимаете?
Почему бессмысленно дважды инициализировать одну и ту же переменную одним и тем же значением?
Если переменная локальная и объявляется внутри функции, то инициализировать обязательно.
А если не локальная?
В данном случае локальная
А почему? Что-то не пойму...
компилятор проинициализирует
Да?
А вот распределение памяти говорит иначе.
Результат:
должен работать
Кому это он так задолжал?
Если код из #2, то никому он ничего не должен. Разве что Вы будете очень долго кнопку нажатой держать. Он же у Вас спит по четверти секунды и плюёт на кнопку с высокой колокольни. Потом просыпается, глянет как там кнопка и снова спать.
А почему? Что-то не пойму...
Статики и глобалы автоматически инициализируются нулем.
А почему? Что-то не пойму...
Спасибо, добрый человек! Буду знать теперь.
А почему? Что-то не пойму...
Спасибо, добрый человек! Буду знать теперь.
это аппаратные особенности
это аппаратные особенности
это аппаратные особенности
Фигвам!
И в Си, кстати, тоже.
Спасибо, добрый человек! Буду знать теперь.
Аптамуш, статик это тот же глобал, и хранится там же, в глобалах, просто его область видимости ограничена функцией, вернее, блоком {...}, где он обьявлен
Аптамуш, статик это тот же глобал, и хранится там же, в глобалах, просто его область видимости ограничена функцией, вернее, блоком {...}, где он обьявлен
Спасибо, добрый человек! Буду знать теперь.
Аптамуш, статик это тот же глобал, и хранится там же, в глобалах, просто его область видимости ограничена функцией, вернее, блоком {...}, где он обьявлен
если хранится в том же адресном пространстве кто мешает оттуда достать?
но код работает не корректно
Код ВСЕГДА работает так, как написан и ему плевать на познания автора кода о корректности работы кода ...
Спасибо, добрый человек! Буду знать теперь.
Аптамуш, статик это тот же глобал, и хранится там же, в глобалах, просто его область видимости ограничена функцией, вернее, блоком {...}, где он обьявлен
если хранится в том же адресном пространстве кто мешает оттуда достать?
А во-вторых, никто доставать не мешает. Даже речи о том, что кто-то мешает, не было.
Во-первых, и глобальные переменные, и куча, и стек они изначально находятся в одном и том же адресном пространстве.
А во-вторых, никто доставать не мешает. Даже речи о том, что кто-то мешает, не было.
а в чём тогда разница? что именно создаёт область видимости?
ЗЫ невольно тут вспомнишь про петуха, у него и для поощрения и для наказания один метод...а в чём разница )))
Область видимости создаёт ЯП и строго поддерживает компилятор. Что бы ты не заблудился.)
Во-первых, и глобальные переменные, и куча, и стек они изначально находятся в одном и том же адресном пространстве.
А во-вторых, никто доставать не мешает. Даже речи о том, что кто-то мешает, не было.
а в чём тогда разница? что именно создаёт область видимости?
1. Адресное пространство - свойство аппаратное, и является совокупностью всех доступных процессору адресов ячеек или каких-либо их аналогов (например, регистров) по адресу (плоскому или сегментированному). Например, у AVR два адресных пространства: ОЗУ+регистры и flash/программы (либо PROGMEM данные). Т.е. одному и тому же адресу соответствуют два объекта - один в одном адресном пространстве, другой - в другом. У Intel x86 тоже жва адресных пространства: одно для программ и данных, другое - для портов ввода/вывода. Размер этих адресных пространств (длина адреса) различен. А вот у stm32 и других ARM адресное пространство одно, куда входит ОЗУ, ПЗУ, а также поты ввода/вывода. В любом случае это особенность аппаратной архитектуры.
2. Область видимости - особенность языка программирования, в частности Си и Си++. Есть похожие вещи и в других языках программирования, но они могут по-другому называться и иметь иные свойства. В частности, в Ассемблере, насколько я помню, такого понятия как область видимости вообще нет. В Фортране и Паскале видимость переменных определяется существенно отличающимися от области видимости правилами.
Использование локальных переменных при определении требует инициализации, а глобальных переменных - нет.