Мигающий светодиод 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;
        }
    }
}

Demo Board Руководство пользователя

2 ответа

Решение

RA3 также /MCLR, в таблице 3 таблицы указано, что подтягивание на этом выводе активируется только с внешней / MCLR конфигурацией. Если нет подтягивания, вы не получите изменений. Штифт показывает постоянно высокий или низкий уровень?

Я бы избегал использования RA3, по крайней мере, при отладке, и если вам придется использовать его в коде выпуска, поменяйте штырь на другой при отладке.

Другая распространенная проблема с PORTA - это то, что по умолчанию это порт аналогового ввода. Биты ANSEL установлены и должны быть очищены для использования в качестве цифрового входа, но RA3 не отображается на аналоговый вход.

У меня была такая же проблема, и я обнаружил следующее.

В настройках программатора для MPLAB IDE поставьте галочку в "3-х состояниях при освобождении после сброса". Я также изменил включенный заголовочный файл с "htc.h" на "pic.h", кнопка теперь работает.

Другие вопросы по тегам