Мигающий светодиод PICkit2 с кнопкой
Я использую демонстрационную плату с низким числом выводов PICkit2 с чипом 16f690. Мне удалось написать простой код для включения и выключения светодиодов, но при попытке использовать кнопку для изменения состояния светодиодов я не смог этого сделать. Мой код ниже, вместе со ссылкой на схему для устройства.
#include <htc.h>
__CONFIG(MCLRE_OFF & BOREN_OFF & PWRTE_OFF & IESO_OFF & CP_OFF & FCMEN_ON);
void main()
{
//initialization
TRISAbits.RA3 = 1; //make button (RA3) input
TRISCbits.RC0 = 0; //make LED (RC0) output
for(;;) // loop forever
{
//set RC0 if RA3 is low (button pressed), else clear RC0
if(PORTAbits.RA3)
{
RC0 = 1;
}
else
{
RC0 = 0;
}
}
}
2 ответа
RA3 также /MCLR, в таблице 3 таблицы указано, что подтягивание на этом выводе активируется только с внешней / MCLR конфигурацией. Если нет подтягивания, вы не получите изменений. Штифт показывает постоянно высокий или низкий уровень?
Я бы избегал использования RA3, по крайней мере, при отладке, и если вам придется использовать его в коде выпуска, поменяйте штырь на другой при отладке.
Другая распространенная проблема с PORTA - это то, что по умолчанию это порт аналогового ввода. Биты ANSEL установлены и должны быть очищены для использования в качестве цифрового входа, но RA3 не отображается на аналоговый вход.
У меня была такая же проблема, и я обнаружил следующее.
В настройках программатора для MPLAB IDE поставьте галочку в "3-х состояниях при освобождении после сброса". Я также изменил включенный заголовочный файл с "htc.h" на "pic.h", кнопка теперь работает.