Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Особенности работы портов.



 

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

Подобный механизм обращения к портам реализован в следующих командах:

ANL - логическое И, например: ANL Р1, А;

ORL - логическое ИЛИ, например: ORL P2, А;

XRL - исключающее ИЛИ, например: XRL РЗ, А;

JBC - переход, если в адресуемом бите единица, и последующий сброс бита, например JBC P1.1, LABEL; CPL - инверсия бита, например CPL P3.3;

INC - инкремент порта, например: INC P2;

DEC - декремент порта, например: DEC P2;

DJNZ - декремент порта и переход, если его содержимое не равно нулю, например DJNZ РЗ, LABEL;

MOV PX.Y, C - передача бита переноса в бит Y порта X;

SET PX.Y - установка бита Y порта X;

CLR PX.Y - сброс бита Y порта X.

   Совсем не очевидно, что последние три команды в приведенном списке являются командами "чтение-модификация-запись". Однако это именно так. По этим командам сначала считывается байт из порта, а затем записывается новый байт в регистр-защелку.

Причиной, по которой команды "чтение-модификация-запись" обеспечивают раздельный доступ к регистру-защелке порта и к внешним выводам порта, является необходимость исключить возможность неправильного прочтения уровней сигналов на внешних выводах. Предположим для примера, что линия Y порта Х соединяется с базой мощного транзистора и выходной сигнал на ней предназначен для его управления. Когда в данный бит записана 1, то транзистор включается. Если для проверки состояния исполнительного механизма (в нашем случае - мощного транзистора) прикладной программе требуется прочитать состояние выходного сигнала в том же бите порта, то считывание сигнала с внешнего вывода порта, а не из D-триггера регистра-защелки порта приведет к неправильному результату. Единичный сигнал на базе транзистора имеет относительно низкий уровень и будет интерпретирован в МК как сигнал 0. Команды "чтение-модификация-запись" реализуют считывание из регистра-защелки, а не с внешнего вывода порта, что обеспечивает получение правильного значения 1.

 

Запись в порт.

 При выполнении команды, которая изменяет содержимое регистра-защелки порта, новое значение фиксируется в регистре в момент S6P2 последнего цикла команды. Однако опрос содержимого регистра-защелки выходной схемой осуществляется во время фазы Р1 и, следовательно, новое содержимое регистра-защелки появляется на выходных контактах порта только в момент S1P1 следующего машинного цикла.

Рис. 1.17. Временные диаграммы операций ввода/вывода

 

На рис. 1.17 приведены временные диаграммы, иллюстрирующие процесс выполнения операций ввода / вывода информации через порты микроконтроллера.

 

                                      2.6.4. Нагрузочная способность портов.

 

 Выходные линии портов 1, 2 и 3 могут работать на одну ТТЛ - схему. Линии порта 0 могут быть нагружены на два входа ТТЛ - схем каждая. Линии порта 0 могут работать и на n – МОП - схемы, однако при этом их необходимо подключать на источник электропитания через внешние нагрузочные резисторы за исключением случая, когда шина порта 0 используется в качестве шины адреса/данных внешней памяти.

Входные сигналы для микроконтроллеров MCS-51 могут формироваться ТТЛ - схемами или n – МОП - схемами. Допустимо использование в качестве источников сигналов для микроконтроллеров MCS-51 схем с открытым коллектором или открытым стоком. Однако при этом время изменения входного сигнала при переходе из 0 в 1 окажется сильно затянутым.

Рис. 1.18. Схема подключения светодиодных индикаторов к параллельному порту.

Порты микросхемы служат для управления внешними устройствами, подключенными к микроконтроллеру. Схема подключения простейших внешних устройств приведена на рисунке 1.18. Этот рисунок иллюстрирует особенности подключения индикаторов к параллельным портам микроконтроллеров семейства  MCS-51.

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

Рис. 1.19. Эквивалентная схема подключения светодиодного индикатора к параллельному порту.

 

Для умощнения выводов порта можно применить транзисторный ключ, показанный на рисунке 1.19. Обратите внимание, что база транзистора подключена непосредственно к выводу порта. Это стало возможным только благодаря использованию в схеме порта генератора тока в верхнем плече выходного каскада. Если выходного тока достаточно для открывания транзисторного ключа, то резистор R2 не используется. Этот резистор подключается для увеличения базового тока транзисторного ключа. На максимальное значение тока через этот резистор накладываются те же ограничения, что и для непосредственного подключения светодиодного индикатора к выводам порта.

Микроконтроллеры предназначены для управления внешними устройствами, однако управлять напряжением на выходе параллельного порта микроконтроллера можно только при помощи программы, записанной в память программ. Какие напряжения необходимо подавать на выходы микросхемы зависят от схемы подключения индикатора. В приведённой на рисунке 1.19 схеме, для зажигания светодиода VD1, в шестой вывод порта P0 необходимо записать логический 0. Для зажигания светодиода VD2 необходимо в седьмой разряд порта P2 записать логическую единицу, а для его гашения – логический ноль.

Для записи числа в порт (изменения потенциалов на выводах микросхемы) можно воспользоваться командами с байтовой адресацией:

MOV (пересылка), например:

 MOV P2, #56h ;Установить единичный сигнал на выводах 1,2,4 и 6 порта P2 ;                           ;и нулевой потенциал на выводах 0,3,5 и 7;

 MOV P1, #01110011b  ;Выдать на все восемь выводов порта P1 число      ;                                            ; 01110011b

 MOV P3, A      ;Выдать на все восемь выводов содержимое аккумулятора

ANL (логическое И), например:

ANL P1, #11110011b    ;выдать низкий потенциал на выводах P1.2 и P1.3

XRL (исключающее ИЛИ), например:

XRL P3, #01000100b        ;инвертировать состояние выводов P3.2 и P3.6

ORL (логическое ИЛИ), например:

ORL P1, #00001100b  ;выдать высокий потенциал на выводах P1.2 и P1.3

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

MOV (пересылка), например:

 MOV P1.2, C   ;выдать содержимое бита переноса через 2-й бит порта P2

CPL (инверсия), например:

 CPL P1.2          ;проинвертировать второй бит порта P2

SETB (установить бит), например:

 SETB P2.3        ;выдать высокий потенциал на 3-м выводе порта P2

CLR (сбросить бит), например:

CLR P2.3           ;выдать низкий потенциал на 3-м выводе порта P2.

При записи в разряд порта (в триггер Т) логического 0 выходной транзистор открывается и на выводе микросхемы появляется низкий потенциал, изменить который извне невозможно. Поэтому при опросе вывода микросхемы входная информация в этом случае всегда будет восприниматься как логический 0 независимо от состояния выходов внешних устройств. Если в указанный разряд записать логическую 1, то выходной транзистор закрывается и на выводе микросхемы появляется высокий потенциал за счет генератора тока. Он может извне изменен на нулевой потенциал. В этом случае, считываемая микроконтроллером информация, будет соответствовать информации на выходе внешнего устройства. Поэтому, перед тем как осуществить ввод информации по какому-либо выводу порта, соответствующий разряд необходимо настроить на ввод - записать в него логическую 1.

Блок таймеров/счетчиков

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

В состав Т/С входят:

1) два 16-ти разрядных регистра Т/С0 и Т/С1;

2) восьмиразрядный регистр режимов Т/С (TMOD);

3) восьмиразрядный регистр управления (TCON);

4) схема инкремента;

5) схема фиксации , ,T0,T1;

6) схема управления флагами;

7) логика управления Т/С.

Два 16-разрядных регистра Т/С0 и Т/С1 выполняют функцию хранения содержимого счета. Каждый из них состоит из пары восьмиразрядных peгиcтpов, соответственно ТН0, ТL0 и ТН1, TL1. Причем peгиcтpы ТН0, ТН1 - старшие, а peгиcтpы ТL0, TL1 - младшие 8 разрядов. Каждый из восьмиразрядных peгиcтpoв имеет свой адрес и может быть использован как РОН, Т/С если не используются (бит ТR0 для Т/С0 и бит TR1 для Т/С1 в peгиcтpe ynpавления ТСОН paвны 0).

Код величины начального счета заносится в peгиcтpы Т/С программно. В процессе счета содержимое peгистpов Т/С инкрементируется. Признаком окончания счета, как правило, является переполнение регистра т/с, т. е. переход его содержимого из состояния "все единицы" в состояние "все нули". Все peгиcтpы ТН0, ТН1, ТL0, TL1 достyпны по чтению, и, при необходимости, контроль достижения требуемой вeличины счета может выполняться программно.

Регистр режимов Т/С (TMOD) предназначен для приема и хранения кода,

определяющего:

- один из 4-х возможных режимов работы каждого Т/С;

- работу в качестве таймеров или счетчиков;

- управление Т/С от внешнего вывода.

             Обозначение и назначение разрядов peгиcтpa TMOD приведено на рис. 1.20 и в таблице 1.7.

      Рис. 1.20. Назначение разрядов peгиcтpa TMOD

                                  

 

                                     

                                 Таблица 1.7. Регистр режима работы таймера/счетчика

Символ

Позиция Имя и назначение

GATE

TMOD.7 для T/C1 и TMOD.3 для T/C0 Управление блокировкой. Если бит установлен, то таймер/счетчик "x" разрешен до тех пор, пока на входе "INTx" высокий уровень и бит управления "TRx" установлен. Если бит сброшен то Т/С разрешается, как только бит управления "TRx" устанавливается

C/ T

TMOD.6 для T/C1 и TMOD.2 для T/C0 Бит выбора режима таймера или счетчика событий. Если бит сброшен, то работает таймер от внутреннего источника сигналов синхронизации. Если бит установлен, то работает счетчик от внешних сигналов на входе "Тх"

M1

TMOD.5 для T/C1 и TMOD.1 для T/C0 Режим работы (см. примечание)

M0

TMOD.4 для T/C1 и TMOD.0 для T/C0  

Примечание

M1 M0

Режим работы

0 0

"TLx" работает как 5-битный предделитель

0 1

16-битный таймер/счетчик. "ТНх" и "TLx" включены последовательно

1 0

8-битный автоперезагружаемый таймер/счетчик. "ТНх" хранит значение, которое должно быть перезагружено в "TLx" каждый раз по переполнению

1 1

Таймер/счетчик 1 останавливается. Таймер/счетчик 0: TL0 работает как 8-битный таймер/счетчик, и его режим определяется управляющими битами таймера 0. ТН0 работает только как 8-битный таймер, и его режим определяется управляющими битами таймера 1

         

 

При работе в качестве таймера содержимое реrиcтpa Т/С инкрементируeтcя в каждом машинном цикле, т. е. Т/С является счетчиком машинных циклов микроконтроллера MCS-51. Поскольку машинный цикл состоит из 12 периодов частоты синхронизации микроконтроллеров MCS -51 fXTAL то частота счета в данном случае равна fXTAL/12.

При работе Т/С в качестве счетчика внешниx событий содержимое регистра Т/С инкрементируется в ответ на переход из "1" в "0" cигнaлa на счетном входе микроконтроллеров MCS -51. (вывод Т0 для Т/С0 в и вывод Т1 для Т/С1). Счетные входы аппаратно проверяются в фазе S5P2 каждого машинного цикла. Когда проверки показывают высокий уровень на счетном входе в одном машинном цикле и низкий уровень в дpyгoм машинном цикле, регистр Т/С инкрементируется. Новое (инкрементированное) значение заносится в регистр Т/С в фазе S3P1 машинноro цикла, непосредственно следующего за тем, в котором был обнаружен переход из "1" в "0" на счетном входе микроконтроллеров MCS -51. Т. к. для распознавания такого перехода требуется два машинных цикла (24 периода частоты синхронизации микроконтроллеров MCS -51 fXTAL), то максимальная частотa счета Т/С в режиме счетчика равна fXTAL/24.

Чтобы уровень сигнала на счетном входе был гарантировано зафиксирован, он должен оставаться неизменным в течение как минимум одного машинного цикла.

Регистр управления (ТСОN) предназначен для приема и хранения кода управляющего слова. Обозначение и назначение разрядов регистра ТСОN приведено на рис.1.21 и в табл. 1.8.

Рис. 1.21. Назначение разрядов регистра ТСОN

                                                                                                                                              

Таблица 1.8. Регистр управления/статуса таймера

Символ Позиция Имя и назначение
TF1 TCON.7 Флаг переполнения таймера 1. Устанавливается аппаратурно при переполнении таймера/счетчика. Сбрасывается при обслуживании прерывания аппаратурно
TR1 TCON.6 Бит управления таймера 1. Устанавливается/сбрасывается программой для пуска/останова
TF0 TCON.5 Флаг переполнения таймера 0. Устанавливается аппаратурно. Сбрасывается при обслуживании прерывания
TR0 TCON.4 Бит управления таймера 0. Устанавливается/сбрасывается программой для пуска/останова таймера/счетчика
IE1 TCON.3 Флаг фронта прерывания 1. Устанавливается аппаратурно, когда детектируется срез внешнего сигнала ЗПР1 ( ). Сбрасывается при обслуживании прерывания
IT1 TCON.2 Бит управления типом прерывания 1. Устанавливается/сбрасывается программно для спецификации запроса ЗПР1 (срез/низкий уровень)
IE0 TCON.1 Флаг фронта прерывания 0. Устанавливается по срезу сигнала ЗПР0. Сбрасывается при обслуживании прерывания
IT0 TCON.0 Бит управления типом прерывания 0. Устанавливается/сбрасывается программно для спецификации запроса ЗПР0 (срез/низкий уровень)

 

 Схема инкремента предназначена:

--- для увеличения на 1 в каждом машинном цикле содержимого регистров Т/С0, T/C1, для которых установлен режим таймера и счет разрешен;

--- для увеличения на 1 содержимого регистров Т/С0, Т/С1, для которых установлен режим счетчика, счет разрешен и на соответствующем входе микроконтроллера MCS-51(Т0 для Т/С0 и Т1 для Т/С1) зафиксирован счетный импульс.

Схема фиксации Т0, ,Т1,  представляет собой четыре триггера. В каждом машинном цикле в момент S5P2 в них запоминается информация с выводов микроконтроллера MCS -51 , ,Т0 Т1.

Схема управления флагами вырабатывает и снимает флаги переполнения и флаги запросов внешних прерываний.

Логика управления Т/С синхронизирует работу регистров Т/С 0 и Т/С 1 в                     соответствии с запрограммированными режимами работы и синхронизирует блока Т/С с работой микроконтроллера.

 


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 225; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.029 с.)
Главная | Случайная страница | Обратная связь