Вы находитесь на странице: 1из 10

Основы систем автоматического

контроля, управления и
регулирования (САК, САУ,САР)
ЛЕКЦИЯ 17. АВТОМАТИЧЕСКОЕ УПРАВЛЕНИЕ.
МИКРОКОНТРОЛЛЕР PIC16F84.ПАРАЛЛЕЛЬНЫЕ ПОРТЫ
 Способность программы изменять или отслеживать состояние выводов, подключенных
к внешним цепям, является наиболее важной среди разнообразных возможностей по
приему и передаче данных, присущих микропроцессору или микроконтроллеру. Эти
выводы обычно объединяются в группы, при этом число выводов в группе может
достигать числа разрядов внутренней шины данных.
 В микроконтроллерах PIC такие параллельные порты дают возможность ядру
процессора считывать или передавать вовне до восьми битов данных побайтно.
Суммарное количество таких линий ввода/вывода, имеющихся в каждой конкретной
модели семейства, зависит от типа корпуса и от того, сколько имеется используемых
разделяемых ресурсов.
 При любом сбросе все биты регистров TRIS устанавливаются в 1, т.е. после сброса все
выводы микроконтроллера работают как входы. Такой выбор не случаен, так как если
бы вывод переключался на выход до задания ему программой начального значения, то
напряжение, появляющееся на этом выводе после выхода из состояния сброса, было
бы непредсказуемым. А это, в свою очередь, может привести к нежелательной
активизации управляемых цепей.
 Например, при управлении нагревательным элементом стиральной машины
нагреватель мог бы включиться до заполнения емкости водой. Если существует
вероятность возникновения подобной ситуации, то начальное состояние
соответствующих битов порта необходимо задавать до конфигурирования регистра
TRIS.
В моделях среднего уровня, имеющих 28 выводов и более, реализованы дополнительные порты ввода/вывода, как
указано в таблице. В то же время эти модели имеют более богатый набор встроенных периферийных устройств,
использующих линии ввода/вывода, так что увеличение емкости параллельных портов ввода/вывода может
оказаться не более чем иллюзией.
 Вообще говоря, параллельный порт
ввода/вывода может рассматриваться как
обычный регистр, содержимое которого
доступно остальным элементам схемы.
 На рисунке изображена небольшая область
памяти данных микроконтроллера PICI6F84.В
микроконтроллерах PIC16FXXX среднего
уровня в обязательном порядке имеется, как
минимум, 13 линий ввода/вывода.
 В микроконтроллерах группы PICI6F87X есть
дополнительный вывод RAS (порт А), в то
время как в микроконтроллерах группы
PICI6F62X имеется уже три дополнительных
линии, показанные пунктиром (если
пожертвовать выводами OSCI, OSC2 и MCLR).
 В миниатюрных микроконтроллерах
PICI0FXXX/l2X:XX присутствует только один
параллельный порт ввода/вывода общего
назначения (General Purpose parallel 1/0 - GPIO),
в котором сочетаются характеристики портов А
и В.
 В качестве примера рассмотрим ситуацию, при которой вывод RA0 и выводы RВ
являются выходами, а остальные выводы порта А- входами. Следующий
фрагмент кода, как правило, размещается в самом начале основной процедуры
 bsf STATUS,RPO Переключаемся на 1-й банк
 movlw Ь'1111110’ Вывод RAO - выход
 movwf TRISA Остальные выводы - ВХОДЫ
 clrf TRISB Все выводы порта В - выходы
 bcf STATUS,RPO Возвращаемся в 0-й банк
 После того как задано направление передачи данных через выводы порта, программа может
считывать данные из порта или записывать их в него, как в обычный регистр, и таким образом
взаимодействовать с окружающим миром.
А именно:
 • Для отслеживания состояния любого вывода, сконфигурированного как вход, можно
использовать команды btfsc и btfss. Так, команда btfss PORTA, 1 пропустит следующую команду,
если на выводе RAI присутствует ВЫСОКИЙ уровень (т.е. если 1-й бит регистра PORTA
установлен в l). Можно одновременно считать состояние нескольких битов, копируя
содержимое всего регистра порта в рабочий регистр, например командой movf PORTA, w. При
необходимости это значение можно будет затем переписать в какой-нибудь РОН для
дальнейшей обработки.
 • Для изменения состояния любого вывода, сконфигурированного как выход, можно
использовать команды bcf или bsf. Так, команда bcf PORTA, О установит на выводе RAO
НИЗКИЙ уровень (т.е. 0-й бит регистра PORTA сбросится в О). Можно одновременно изменять
несколько битов, копируя содержимое рабочего регистра в регистр данных порта. К примеру,
если все выводы порта В являются выходами, то для выдачи на выводы RВ[7:6] ВЫСОКОГО
уровня, а на выводы RB[S:0] - НИЗКОГО, можно воспользоваться следующими командами:
 movlw b'11000000'
 movwf PORTB

Вам также может понравиться