Показать сообщение отдельно
Старый 29.03.2009, 21:18   #40   
Форумец
 
Сообщений: 1,532
Регистрация: 19.02.2009
Возраст: 54
Записей в дневнике: 1

petrd вне форума Не в сети
Рассказ "Про 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.
Теперь важное - порты устроены так, что когда выводим что-то в порт, то мы пишем в регистр с выхода которого, уровни появляются на выводах контроллера, а когда мы читаем порт, то мы считываем значение на выводах контроллера (а не читаем значение регистра, как многие предполагают).
Окончание этого рассказа следует.
  Ответить с цитированием