Рассказ "Про TRIS, PORT и LAT или грабли на которые наступают начинающие"
Применительно к PIC16F628A имеется два полных 8-и разрядных порта - PORTA и PORTB. Они могут работать как на вход, так и на выход. Для этого имеются регистры управления направлением - TRISA (для PORTA) и TRISB (для PORTB). Например, если нулевой бит регистра TRISB установлен в 1, то вывод RB0 (нулевой бит PORTB) работает как вход, если бит установлен в 0, то работает как выход. Разработчики Microchip рекомендуют такие ассоциации: "1" похожа на букву "I", первую букву слова Input (вход), ноль - похож на букву O, первую букву слова Output (выход).
Вывод в порт:
Код:
TRISB=0; // все выводы PORTB настроили на вывод
PORTB=0xff; // на всех выводах PORTB будут единички
Чтение порта:
Код:
TRISB=0xff; // все выводы PORTB на вход
i=PORTB; // в переменной i будет сохранено значение считанное с выводов PORTB.
Теперь важное - порты устроены так, что когда выводим что-то в порт, то мы пишем в регистр с выхода которого, уровни появляются на выводах контроллера, а когда мы читаем порт, то мы считываем значение на выводах контроллера (а не читаем значение регистра, как многие предполагают).
Окончание этого рассказа следует.