Понедельник, 27 июня 2011 04:44

Порты ввода/вывода МК PIC18XXXX.

Written by
Rate this item
(0 votes)

В микроконтроллерах 18 серии в зависимости от типа может быть разное количество портов. Сами порты то же могут быть различной разрядности (линий вывода).   Некоторые  порты    ввода/вывода мультиплексированы с   периферийными  модулями микроконтроллера. При работе на выход управление   (изменение его состояния на выводах "0;1") может производиться как "целиком"  всего порта (байт-ориентированные команды), так и  каналом   в отдельности (бит-ориентированные команды).

Каждый порт управляется с помощью специальных регистров.

 

  • TRIS – регистр выбора направления данных в каналах  порта ввода/вывода, если соответствующий бит регистра "0", то линия вывода работает на выход, если "1" то на вход. По умалчиванию порт настроен на вход.
  •  PORT – регистр порта , считывает логическую информацию с выводов порта.
  •   LAT – защелка порта ввода/вывода. (Очень полезный регистр. Подробней в статье...)

Порты ввода/вывода имеет буквенное обозначение. A, B, C ..и т.д., в зависимости от количества портов в микроконтроллере. Каждый порт имеет свои регистры управления, порт "A"  к примеру: TRISA, PORTA, LATA, порт"B"  TRISB, PORTB, LATB и т.д..

Рассмотрим настройку порта:

Допустим  необходимо настроить порт "С", линии вывода  С0-С3 на выход, а остальные на вход, для этого настраиваем регистр TRIS. Очень удобно записывать в двоичной системе .

       movlw        b'11110000' ; 
       movwf              TRISC ;

Если необходимо весь порт настроить на выход, то достаточно очистить регистр TRIS.

       clrf               TRISC ;

На вход настраивать не нужно  (по умалчиванию).

То же самое и с другими регистрами.

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

Хотя типов микроконтроллеров достаточно много, тем не менее  практически все они "построены на базовом варианте" и рассматривая МК PIC18252 многое относится и к другим микроконтроллерам 18 серии.

На пример;

  • аналоговые линии располагаются в порту "А", (если аналоговых входов больше, то  дополнительно в порту "В").
  • подключение основного генератора.
  • линии порта"В" можно аппаратно подтянуть к шине питания +5В.
  • и т.д..

Порт"А".

7-разрядный или 8-разрядный (в зависимости от типа МК) порт ввода/вывода. Линия  RA4/T0CKI  имеет триггер Шмитта на входе и открытый сток на  выходе, мультиплексирован  с  тактовым входом таймера TMR0. Для формирования на его выходе  "1" необходимо   подтянуть вывод внешним  резистором к  шине  питания +5В.

Каналы PORTA мультиплексированы  с  аналоговыми  входами  АЦП  и  аналоговым  входом  источника опорного напряжения VREF+ и VREF-. Если модуль АЦП не задействуется, то при конфигурации  нужно настроить линии порта как  цифровые каналы, т.к. при сбросе или  включении питания микроконтроллера часть линий ввода/вывода устанавливается как аналоговые входы.

Инициализация порта"А"

   clrf            PORTA ; очистка  порта. 

    movlw             07h ; настройка как цифровых 
    movwf          ADCON1 ; каналов ввода/вывода.

    movlw      b'00000111 ; настройка RA0-2 на вход
    movwf           TRISA ; остальные на выход.(пример)

 

Для настройки каналов, мультиплексированных с АЦП  вместо регистра ADCON1 (в зависимости от типа МК может применятся другой регистр "ANSEL"). Настройка порта  для работы с АЦП рассмотрена в соответствующей теме.

 

Порт"B".

 

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

Для настройки каналов, мультиплексированных с АЦП  применяется регистр управления "ANSELH" (в зависимости от типа МК, к примеру в PIC18FXX2 его нет, как нет и каналов АЦП  на этом порту). По этому, если АЦП на порту не задействовано, то  с помощью этого регистра необходимо настроить каналы как цифровые линии ввода/вывода. В некоторых типов МК 18 серии для настройки отдельных цифровых каналов ввода/вывода порта"В", при конфигурации микроконтроллера необходимо прописать   PBADEN=ON.

Инициализация порта "B" PIC18FXX2. (пример)

   clrf            PORTB ; очистка  порта. 

    movlw             07h ; настройка как цифровых 
    movwf          ADCON1 ; каналов ввода/вывода.

    movlw      b'00000111 ; настройка RA0-2 на вход
    movwf           TRISB ; остальные на выход.(пример)

Инициализация порта "B" PIC18FXXK20.(пример)

   clrf           PORTB ; очистка  порта. Можно регистр LATB.
   clrf          ANSELH ; цифровые каналы, конф.бит PBADAN должен установлен.

   movlw      b'00000111 ; настройка RB0-2 на вход
   movwf           TRISB ; остальные на выход.(пример)

Каналы порта часто применяют как источник прерываний . К примеру, изменение логического состояния на входе каналов RB4-7 часто применяют для опроса кнопок. (более подробно  можно почитать в статье....).

Порт"С".

Восьмиразрядный  порт ввода/вывода. На этом порту сосредоточены  в основном модули "связи", SPI, I2C, USART. Кроме этого различные модули таймеров и ШИМ.  Обычно если модули не задействованы, то  линии  работают как цифровые каналы вводы/вывода. Настройка порта производится с помощью специальных регистров TRISC, LATC, PORTC.

Порт"D","E".

В зависимости от типа микроконтроллера порт"Е" бывает трех или восьмиразрядным  портом ввода/вывода, Порт"D" восьмиразрядный.

Настройка порта "D" производится с помощью специальных регистров TRISD, LATD, PORTD. Порта "E" соответственно регистры TRISЕ, LATЕ, PORTЕ.

В некоторых типах микроконтроллеров могут быть специальные порты для управления LCD индикатором. А так же  различные модули (специализированные  МК) для управления нагрузкой и т.д..

Read 2130 times Last modified on Четверг, 04 сентября 2014 11:48

Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2017 © ChipMK.ru

ChipMk.ru Яндекс.Метрика
PRCY.ru