Вам необходимо каждый раз менять направление вывода с помощью регистра TRIS.Если вывод настроен как выход, чтение регистра PORT, скорее всего, покажет вам, к какому уровню вы выводите вывод (при условии высокого сопротивления на выводе).Если вывод установлен на вход, вы не сможете управлять желаемым выходным значением.Кроме того, убедитесь, что вы читаете входящие данные, используя регистр PORT, но выводите данные, используя регистр LAT.Это гарантирует, что у вас не возникнет никаких проблем, если ваш код (я предполагаю, что вы программируете на C здесь) конвертируется в инструкции bset / bclr / btgl, которые являются Read-Modify-Write.Если вы пишете на ассемблере, применяется то же правило, но вы знаете, когда используете эти инструкции типа RMW.Если вы хотите больше рассуждений на этот счет, пожалуйста, спросите.