Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

Вообще говоря, параллельный порт ввода/вывода может рассматриваться как обычный регистр, содержимое которого доступно остальным элементам схемы. Именно такое несколько упрощенное представление показано на Рис. 11.1. На рисунке изображена небольшая область памяти данных микроконтроллера PIC16F84, структура которой полностью была показана на Рис. 4.7 (стр. 97). В микроконтроллерах PIC16XXXX среднего уровня в обязательном порядке имеется, как минимум, 13 линий ввода/вывода. В микроконтроллерах группы PIC16F87X есть дополнительный вывод RA5 (портА), в то время как в микроконтроллерах группы PIC16F62X имеется уже три дополнительных линии, показанные на Рис. 11.1 пунктиром (если пожертвовать выводами OSC1, OSC2 и [141]. В «миниатюрных» микроконтроллерах PIC10FXXX/12XXX присутствует только один параллельный порт ввода/вывода общего назначения (General-Purpose parallel I/O — GPIO), в котором сочетаются характеристики портов А и В прочих микроконтроллеров и который имеет не более 6 линий ввода/вывода.

Рис. 11.1.Упрощенное представление параллельных портов А и В микроконтроллеров линейки PIC16XXXX

В моделях среднего уровня, имеющих 28 выводов и более, реализованы дополнительные порты ввода/вывода, как указано в Табл. 11.1. В то же время эти модели имеют более богатый набор встроенных периферийных устройств, использующих линии ввода/вывода, так что увеличение емкости параллельных портов ввода/вывода может оказаться не более чем иллюзией. К примеру, в модели PIC16F87X пять линий порта A (RA5, RA[3:0]) и 3-битный порт Е используются в качестве аналоговых входов 8-канального АЦП.

И все же, несмотря на возможность такого упрощенного представления (как на Рис. 11.1), поведение порты ввода/вывода несколько отличается от поведения остальных регистров микроконтроллера. Так, необходимо иметь возможность конфигурирования портов либо на считывание сигналов с соответствующих выводов микроконтроллера (вход), либо на выдачу сигналов на эти выводы (выход). Помимо этого, нам нужно определить, каким образом та или иная конфигурация порта будет влиять на результат операций изменения или чтения состояния порта.

Из Рис. 11.1 видно, что каждому регистру параллельного порта в 0-м банке соответствует регистр TRIS в 1-м банке. В Приложении Б можно увидеть, что это справедливо для любого порта. С каждым битом n параллельного порта связан бит n соответствующего регистра TRIS, который предназначен для задания конфигурации вывода: вход (TRIS[n] = 1) или выход (TRIS[n] = 0)[142]. В большинстве микроконтроллеров других производителей такие регистры называются регистрами направления передачи данных (Data Direction Register — DDR), однако компания Microchip использует аббревиатуру TRIS, образованную от словосочетания TRI-State (тристабильный). Причину, по — которой регистры называются именно так, вы узнаете чуть позже в данной главе.

В качестве примера рассмотрим ситуацию, при которой вывод RA0 и выводы RB[7:0] являются выходами, а остальные выводы порта А — входами. Следующий фрагмент кода, как правило, размещается в самом начале основной процедуры (см. Программу 11.1, а):

bsf STATUSfRP0; Переключаемся на 1-й банк

    movlw b’1111110’; Вывод RA0 — выход

    movwf TRISA; Остальные выводы — входы

    clrf TRISB; Все выводы порта В — выходы

bcf STATUS,RP0; Возвращаемся в 0-й банк

Разумеется, на языке Си тоже можно написать код, выполняющий аналогичные действия. К примеру, в используемом нами компиляторе CCS этот код будет выглядеть следующим образом:

#bit BANK_SWITCH =3.5 /* Бит RP0 регистра STATUS */

#byte TRISA = 0x85 /* Регистр направления передачи данных TRISA */

#byte TRISB = 0x86 /* Регистр направления передачи данных TRISB */

main()

{

     BANK_SWITCH =1; /* Переключаемся на 1-й банк */

     TRISA = 0xFE; /* Вывод RA0 — выход, остальные выводы — входы */

     TRISB =0; /* Все выводы порта В — выходы */

     BANK_SWITCH =0; /* Возвращаемся в 0-й банк */

Однако в отдельных компиляторах могут иметься встроенные функции для поддержки операций инициализации и обращения к портам. Так, в компиляторе CCS для каждого порта X имеется своя функция set_tris_x () для установки соответствующего регистра TRISX:

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих
Электроника для начинающих

В ходе практических экспериментов рассмотрены основы электроники и показано, как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. Материал излагается последовательно от простого к сложному, начиная с простых опытов с электрическим током и заканчивая созданием сложных устройств с использованием транзисторов и микроконтроллеров. Описаны основные законы электроники, а также принципы функционирования различных электронных компонентов. Показано, как изготовить охранную сигнализацию для защиты от проникновения в дом, елочные огни, электронные украшения для одежды, устройство преобразования звука, кодовый замок, автономную роботизированную тележку и др. Приведены пошаговые инструкции и более 500 наглядных рисунков и фотографий.Для начинающих радиолюбителей

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки