Щас приду домой попробую, вчера просто как только не ставил)
Обьясните эту фразу. К какому пину она относится, pc0? Как вы проверяли срабатывание на ноль и на единицу? Покажите оба варианта.
Пару минут и покажу )
Как работает при единице, в произвольном режиме, не знаю как исправить в коде [Imgur: The magic of the Internet]
======
Работа в 0, так же должно работать в единице [Imgur: The magic of the Internet]
Т.е должно работать только при нажатии как на втором видео, не в произвольном режиме
Зачем видео-то? Вы словами не можете объяснить, что это вообще значит и чем отличается работа по единице и по нулю? Если единица и ноль - активные уровни на пине pc0, то для перехода от одного к другому надо менять и схему и код. Покажите оба варианта
Схему не надо менять, это все заключается в коде
if (0 != (PINC & (1 << 0))) проверяет, находится ли пин PC0 в логическом высоком состоянии. Если PC0 равен 1, то условие будет истинным, и код внутри if выполнится. Если PC0 равен 0, условие не выполнится.
Если вы меняете кнопку, действующую по нулю, на кнопку, коммутируемую по единице - схема будет разная.
Может именно в этом ваша проблема, что вы этого не понимаете?
Ок это один вариант. А второй?
Если PC0 низкий (логическая 0), то результат будет 0.
if (0 != …) — это условие проверяет, является ли результат выражения
Мы друг друга не слышим.
Зачем вы мне расписываете, как работает эта строчка кода? Это все прописные истины.
Проблема то ваша в чем?
При единице управления на схеме программа начинает работу в произвольном режиме, т.е без нажатия на кнопки программа начинает сама работать, при нуле только при нажатии она начинает работу, вы так поняли?
Может вы не понимаете, что значит " управление по единице" в отличии от управления нулем?
Управление по единице ( активный уровень высокий) - это когда у вас сигнал HIGH на пине означает включено, а LOW - выключено.
А управление низким уровнем - когда ноль на пине это вкл, а единица - выкл.
Когда вы меняете управление с активного высокого на активный низкий, вам надо изменить и код и схему.
Тот код, который вы мне показываете - он только для первого случая. Покажите, как вы его меняете для смены управления единицей на управление нулем. И изменение схемы тоже.
Схема, которую вы показали, будет работать только при управлении низким уровнем ( от нуля, как вы говорите). Для управления единицей схема должна быть другая
Что-то типа такого?
Ещё раз говорю, вместо датчика, кнопку подключите в Протеусе (в поиске BUTTON ACTIVE ) одним концом к пину- другим к GND
P.S. И код, что я подправил, из #12
Сейчас попробую все сделать, и напишу получилось или нет)
Все, подключил но кажется вы все равно сделали к нулю, была бы единица на вольтметре подключенную к оптрону и земле необходимо чтобы показывало минимум 2.7 до 4.99 вольт
У вас подтяжка на PC0, значит всегда HIGH . При нажатии кнопки LOW. Ищите косяк в схеме.
// Включение подтягивающего резистора на PINC0
PORTC = 0b00000001;