Защелка - это выходная защелка , в которую записываются значения. Порт - это напряжение на фактическом выводе.
Есть несколько ситуаций, когда они могут быть разными. Чаще всего я сталкиваюсь с тем, что у вас есть (случайно) штырь, закороченный на землю. Если вы установите защелку на высокий уровень, защелка будет показывать высокий уровень, но порт будет показывать низкий уровень, потому что напряжение на выводе все еще приблизительно заземлено.
Другая ситуация, приводящая к тому, что вы описали, - это когда порт порта не был правильно настроен. Я (и все, с кем я работаю) потратил много часов, пытаясь выяснить, почему наш PIC не работает, как ожидалось, чтобы в конечном итоге выяснить, что, к примеру, мы замолчали, отключив аналоговые модули. Убедитесь, что вы перешли в раздел I / O Ports -> PORT ?, TRIS? И LAT? регистрируется в техническом описании. Вы можете получить дополнительную информацию на вики-странице Microchip , которая объясняет, как считывать неправильное значение сразу после записи вывода на вывод, подключенный к емкостной нагрузке.
Эта вики-страница также объясняет:
Чтение регистра защелки порта возвращает настройки выходных драйверов, тогда как чтение регистра порта возвращает логические уровни, видимые на выводах.
Кроме того, вот фрагмент из раздела Порты ввода / вывода на 18F14K50 (который должен быть таким же, как и остальные серии 18F):
Каждый порт имеет три регистра для
операция. Эти регистры:
- регистр TRIS (регистр направления данных)
- регистр PORT (считывает уровни на выводах устройства)
- регистр LAT (выходной фиксатор)
Так что в большинстве ситуаций вы будете писать в защелку и читать из порта.