Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕК_6.doc
Скачиваний:
8
Добавлен:
15.11.2019
Размер:
723.97 Кб
Скачать

Регистры portb и trisb

PORTB - 8-разрядный двунаправленный порт ввода/вывода. Биты регистра TRISB определяют направление каналов порта. Установка битва в Т регистра TRISB переводит выходной буфер в 3-е состояние. Запись '0' в регистр TRISB настраивает соответствующий канал как выход, содержимое защелки PORTB передается на вывод микроконтроллера.

Выводы PORTB мультиплицированы с внешним входом прерываний, USART, ССР модулем и входом тактового сигнала для TMR1. Функциональное назначение выводов PORTB сведено в таблице 5-3.

Чтение регистра PORTB возвращает состояние на выводах порта, а запись производится в защелку PORTB. Все операции записи в порт выполняются по принципу «чтение - модификация - запись», т.е. сначала производится чтение состояния выводов порта, затем изменение и запись в защелку.

К каждому выводу PORTB подключен внутренний подтягивающий резистор (типовое значение тока =200мкА). Бит -RBPU в регистре OPTION <7> определяет, подключены (-RBPU=O) или нет (-RBPU=1) подтягивающие резисторы. Подтягивающие резисторы автоматически отключаются, когда каналы порта настраиваются на выход и после сброса по включению питания POR.

Четыре канала PORTB RB7:RB4 настроенные на вход могут генерировать прерывания по изменению логического уровня сигнала на входе. Если один из каналов RB7:RB4 настроен на выход, то он не может быть источником прерываний. Сигнал на выводах RB7:RB4 сравнивается со значением, сохраненным при последнем чтении PORTB. В случае несовпадения одного из значений устанавливается флаг RBIF в регистре INTCON<0>, если разрешено, генерируется прерывание.

Это прерывание может ввести микроконтроллер из режима SLEEP. В подпрограмме обработки прерываний необходимо сделать следующие действия:

  • выполнить чтение или запись в PORTB исключив несоответствие;

  • сбросить флаг RBIF и'О'.

Несоответствие сохраненного значения с сигналом на входе PORTB всегда устанавливает бит RBIF в 1. Чтение из PORTB прервет условие несоответствия и позволит сбросить флаг RBIF в '0'.

Прерывания по изменению сигнала на входах PORTB, программа переключения конфигурации этих каналов позволяет реализовать простой интерфейс обслуживания клавиатуры, с выходом из режима SLEEP по нажатию клавиш (см. пример AN552 в книге Microchip Embedded Control Handbook или на WEB узлах технической поддержки www.microchip.com и www.microchip.ru).

Примечание. Если изменение сигнала на входе RB7:RB4 происходит на начале цикла Q2 чтения PORTB, флаг RBIF в 1 может не устанавливается.

Прерывания по изменению сигнала на входах рекомендуется использовать для выхода из режима SLEEP по нажатию клавиш, когда PORTB полностью задействован для реализации клавиатуры. Не рекомендуется опрашивать PORTB при использовании прерываний по изменению входного сигнала.

Таблица 5-3 Функциональное назначение выводов PORTB

Обозначение вывода

бита

Описание

RBO/INT

Бит 0

Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора, вход внешнего прерывания

RB1/RX/DT

Бит1

Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора, вход приемника USART, линия данных в синхронном режиме USART

RB2/TX/CK

Бит 2

Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора, выход передатчика USART, линия тактового сигнала в синхронном режиме

RB3/CCP1

БитЗ

Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора, вывод модуля ССР

RB4/PGM

Бит 4

Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора. Изменение сигнала на входе может вывести микроконтроллер из режима SLEEP. Когда разрешено низковольтное программирование, запрещены прерывания по изменению сигнала на входе, а подтягивающий резистор отключен

RB5

Бит 5

Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора. Изменение сигнала на входе может вывести микроконтроллер из режима SLEEP

RB6/T10S0/T1CKI

Бит 6

Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора. Изменение сигнала на входе может вывести микроконтроллер из режима SLEEP. Выход генератора таймера 1

RB7/T10SI

Бит 7

Двунаправленный порт ввода/вывода с программным включением подтягивающего резистора. Изменение сигнала на входе может вывести микроконтроллер из режима SLEEP. Вход генератора таймера 1

Обозначения: TTL - вход/выход ТТЛ, ST - вход с триггером Шмидта.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]