Быстрый совет по коду для начинающих

Я новичок, и я хочу знать, что не так с этим кодом. Я хочу посчитать количество нажатий кнопки в порту A. Затем покажите эти значения с помощью светодиодов в portC. Спасибо

-7

Решение

Вам нужны скобки вокруг блока с несколькими утверждениями, если вы хотите использовать его в качестве тела if (или же for или как там)

else if (PORTA.RA2==1) {
count = count+1;
PORTC = count;
}

в противном случае только первое утверждение является условным; так что ваш код выполняется PORTC = count; каждый раз, независимо от результата if тесты.

Мне нравится ставить скобки вокруг всех таких блоков, даже если есть только одно утверждение, поэтому я не могу забыть добавить их, если добавлю больше утверждений позже.

Также, main должен вернуться int не voidи вам следует больше заботиться о форматировании кода, чтобы он соответствовал его логической структуре.

ОБНОВЛЕНИЕ: Кроме того, вы никогда не инициализируете count, поэтому он имеет произвольное значение с плавающей точкой. Вам нужен маленький целочисленный тип, поскольку он должен принимать целочисленные значения только от 0 до 16, и вам нужно его инициализировать:

char count = 0;
5

Другие решения

Если вы устанавливаете TRISA в 1, это означает, что единственным входом на этом порте является RA0, но вы пытаетесь использовать RA2. Обязательно очистите бит ANSELA0. Убедитесь, что вы правильно установили биты конфигурации, иначе ваш код может не работать.

Чтобы в будущем не понизить голосование:

  • Выберите информативное название вопроса.
  • Сделайте правильный отступ для вашего кода.
  • Скажите, какой именно ПИК вы используете и на какой доске он находится.
  • Скажите, какую среду разработки и компилятор вы используете.
  • Предоставьте фотографии ваших настроек, чтобы мы могли проверить вашу проводку.
  • Самое главное, расскажите нам, как именно вы тестируете код, каков ожидаемый результат и что вы на самом деле наблюдаете.

Моя компания предлагает больше советов здесь: http://www.pololu.com/support

1

По вопросам рекламы [email protected]