По крайней мере, некоторые контакты могут быть настроены как аналоговые входы.
Из таблицы данных для этого устройства
Работа вывода RA4 в качестве аналога выбирается настройкой ANS3.
бит в регистре ANSEL, который является настройкой по умолчанию после
Сброс при включении питания.
Если вы не установите регистр ANSEL, вывод не может быть использован в качестве выхода, поскольку он настроен как аналоговый вход.
Это относится ко всем контактам, которые могут быть входами A / D, и не охватывает все контакты, которые у вас есть.
Опять же, я не вижу никакой настройки бит настройки в вашем коде. Это устройство, например имеет 2 разных набора команд, и вам нужно как минимум указать, какой набор команд вы используете в битах конфигурации.
Вы можете попробовать добавить это в начало вашего кода сразу после включения:
// Configuration BITS setup
__CONFIG(1, FOSC_INTIO2 & XINST_OFF);
__CONFIG(2, WDTEN_OFF & PWRTEN_ON);
__CONFIG(3, MCLRE_OFF);