Я новичок, и я хочу знать, что не так с этим кодом. Я хочу посчитать количество нажатий кнопки в порту A. Затем покажите эти значения с помощью светодиодов в portC. Спасибо
Вам нужны скобки вокруг блока с несколькими утверждениями, если вы хотите использовать его в качестве тела if
(или же for
или как там)
else if (PORTA.RA2==1) {
count = count+1;
PORTC = count;
}
в противном случае только первое утверждение является условным; так что ваш код выполняется PORTC = count;
каждый раз, независимо от результата if
тесты.
Мне нравится ставить скобки вокруг всех таких блоков, даже если есть только одно утверждение, поэтому я не могу забыть добавить их, если добавлю больше утверждений позже.
Также, main
должен вернуться int
не void
и вам следует больше заботиться о форматировании кода, чтобы он соответствовал его логической структуре.
ОБНОВЛЕНИЕ: Кроме того, вы никогда не инициализируете count
, поэтому он имеет произвольное значение с плавающей точкой. Вам нужен маленький целочисленный тип, поскольку он должен принимать целочисленные значения только от 0 до 16, и вам нужно его инициализировать:
char count = 0;
Если вы устанавливаете TRISA в 1, это означает, что единственным входом на этом порте является RA0, но вы пытаетесь использовать RA2. Обязательно очистите бит ANSELA0. Убедитесь, что вы правильно установили биты конфигурации, иначе ваш код может не работать.
Чтобы в будущем не понизить голосование:
Моя компания предлагает больше советов здесь: http://www.pololu.com/support