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


Способы адресации операндов



 

В зависимости от способа адресации и места расположения операнда можно выделить девять типов операндов, между которыми возможен информационный обмен (рис. 1.3). 

 

Рис. 1.3. Граф путей передачи данных в микроконтроллерах MCS-51

Аккумулятор (А) представлен на этом графе отдельной вершиной, так как многие команды используют неявную (подразумеваемую) адресацию.

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

Неявная адресация. При неявной адресации регистр-источник или ре­гистр-приемник подразумевается в самом коде операции.

 Например:

RR А                      ;сдвинуть содержимое аккумулятора вправо;

DA A                  ; произвести десятичную коррекцию результата  суммирования;

MOV A, R0           ;в первом операнде использована неявная адресация,

                            ;а во втором – регистровая.

Регистровая адресация используется для обращения к восьми рабочим регистрам выбранного банка рабочих регистров, а также для обращения к регистрам А, В, АВ (сдвоенному регистру), DPTR и к флагу переноса С. Номер регистра записывается в трех младших битах команды. На­пример:

MOV R0, А                ; в первом операнде использована регистровая адресация,

                                     ;а во втором – неявная.

Прямая байтовая адресация используется для обращения к ячейкам внут­ренней памяти (ОЗУ) данных (адреса 0:127) и к регистрам специального назначения (адреса 128 ... 256). Адрес ячейки памяти помещается во вто­рой байт команды. Например:

MOV A, 20h                      ; во втором операнде использована прямая байтовая

                                         ; адресация, а в первом – неявная

MOV 15h, R6                      ; в первом операнде использована прямая байтовая

                                               ; адресация, а во втором – регистровая.

Прямая битовая адресация используется для обращения к отдельно адре­суемым 128 битам, расположенным в ячейках с адресами 20Н—2FH, и к отдельно адресуемым битам регистров специального назначения.

На­пример:

SETB 20h                             ; использована прямая битовая адресация

CLR 15H                                ; использована прямая битовая адресация

Косвенно-регистровая адресация используется для обращения к ячейкам внутреннего ОЗУ данных. В качестве регистров-указателей используются регистры R0, R1 выбранного банка регистров. Например:

MOV A, @R0                   ;в первом операнде использована неявная адресация,

                                          ;а во втором — косвенно-регистровая

MOV @R1, A                   ;в первом операнде использована косвенно-             

                                          ; регистровая адресация, а во втором - неявная

Косвенно-регистровая адресация используется также для обращения к внешней памяти данных. В этом случае с помощью регистров-указателей и R1 (рабочего банка рабочих регистров) выбирается ячейка из блока 6 байт внешней памяти данных. Номер блока предварительно задается содержимым порта Р2. Например:

MOVX A, @R0                 ;в первом операнде использована неявная адресация,

                                            ;а во втором - косвенно-регистровая

MOVX @R1, A                 ;в первом операнде использована косвенно-

                                           ; регистровая адресация,

                                           ; а во втором - неявная

Если в качестве регистра-указателя используется 16-разрядный указатель данных (DPTR), то можно выбрать любую ячейку внешней памяти данных объемом до 64 Кбайт. (В некоторых моделях микроконтроллеров семей­ства MSC-51 таким образом можно обращаться к внутренней памяти данных объемом более 256 байт).

MOVX A, DPTR                 ;в первом операнде использована неявная адресация,

                                            ;а во втором - косвенно-регистровая

MOVX DPTR, A            ;в первом операнде использована косвенно-регистровая      

                                      ; адресация, а во втором - неявная

 Косвенно-регистровая адресация по сумме базового и индексного реги­стров (содержимое аккумулятора А) упрощает просмотр таблиц, запи­санных в памяти программ. Любой байт из таблицы может быть выбран по адресу, определяемому суммой содержимого DPTR или РС и содержи­мого А. Например:

MOVC A, 8A+PC                ;в первом операнде использована неявная адресация,          

                                         ;а во втором - косвенно-регистровая

MOVC A, SA+DPTR              ;в первом операнде использована неявная адресация,    

                                               ;а во втором - косвенно-регистровая

Непосредственная адресация позволяет выбрать из адресного простран­ства памяти программ константы, явно указанные в команде, например:

MOV A, #14h                                  ;в первом операнде использована неявная

                                                              ;адресация, а во втором - непосредственная

MOV DPTR, #2048h                       ;в первом операнде использована неявная

                                                             ;адресация, а во втором – непосредственная.

 

Блок управления

 

    Блок управления предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков микроконтроллера MCS–51 во всех допустимых режимах его работы.

    В состав блока управления входят: устройство выработки временных интервалов, логика ввода-вывода, регистр команд, регистр управления потреблением, дешифратор команд, программируемая логическая матрица (ПЛМ) и логика управления микроконтроллера MCS–51.

    Устройство выработки временных интервалов предназначено для формирования и выдачи внутренних синхросигналов, фаз, тактов и циклов. Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды микроконтроллера MCS-51 выполняются за один или два машинных цикла, кроме команд умножения MUL А, В и деления DIV A, B продолжительность которых четыре машинных цикла.

    Синхронизация микроконтроллера MCS-51 осуществляется с использовани­ем внутреннего инвертирующего усилителя, который может быть превра­щен в синхрогенератор посредством подключения к выводам ХТ AL 1 и XTAL2 внешнего кварцевого резонатора. Вывод XTAL1 является входом, а вывод XTAL2 выходом внутреннего усилителя. Для синхронизации может быть использован и внешний синхрогенератор. Схемы подключения внеш­него резонатора и синхрогенератора приведены на рис. 1.4.

           

                  Рис. 1.4. Подключение времязадающих цепей:

---использование внутреннего генератора (а);

---использование внешнего генератора для HMOS серии 1816 (б);

---использование внешнего генератора для CHMOS серии 1830 (в).

 

Внутри микроконтроллера частота внешнего синхросигнала делится на 2. Период внутреннего синхросигнала определяет длительность интервала времени, который фирма Intel называет состоянием Si («state») бу­дем называть тактом. Этот интервал состоит из двух фаз Р1 и Р2. Более крупной единицей времени является машинный цикл, включающий шесть тактов S1 .. S6. По длительности он равен 12 периодам внешнего синхро­сигнала. Машинный цикл служит в основном для целей внутреннего микропрог­раммного управления. При описании последовательности сигналов или со­бытий фазам в машинном цикле присваивают номера с S1Р1 по S6P2. Цикл выполнения каждой команды состоит из одного, двух или четырех машин­ных циклов.

Протоколы обмена микроконтроллеров семейства MCS-51 по магистрали реализованы в виде комбинаций следующих трех типов магистральных циклов:

---ввод кода команды из внешней памяти программ без обращения к внеш­ней памяти данных;

---чтение из внешней памяти данных;

---запись во внешнюю память данных.

Рис. 1.5а. Типы магистральных циклов.

 

Первый тип магистрального цикла (рис. 1.5, а) является основным, имеет длительность 6 тактов (12 периодов XTAL). Он характеризуется выработ­кой двух импульсов сигнала ALE, который служит для промежуточной фик­сации младшего байта адреса при обращении к внешней памяти (из порта Р0 в регистр-защелку). В этом типе магистрального цикла сигнал ALE стро­бирует адрес памяти программ, источником которого является счетчик команд (регистры РСН и PCL). Сигнал PSEN является сигналом чтения кода из внешней памяти программ. В этом типе магистрального цикла, он также вырабатывается дважды. Оба сигнала становятся активными первый раз на фазе S1P2, а второй раз на фазе S4P2. Во время второй выборки про­изводится чтение следующего байта кода. Если этот байт в данной команде не нужен, он игнорируется, а счетчик команд не инкрементируется. Этот тип магистрального цикла является основным, поскольку отсутствие обра­щения к внешней памяти данных позволяет реализовать с его помощью са­мые короткие команды (рис. 1.5а, б) длительностью в один машинный цикл (6 тактов, 12 периодов Fosc). Поскольку сигнал ALE вырабатывается по­стоянно, с частотой Fosc/6, он может быть использован для целей внешней синхронизации.

    

                   Рис. 1.5б. Типы магистральных циклов.

 

Второй тип магистрального цикла (рис. 1.5, б) имеет длительность 12 тактов и характеризуется тем, что второй сигнал ALE на фазе S1P2 второго ма­шинного цикла не вырабатывается. Сигнал PSEN остается пассивным с фазы S4P2 первого машинного цикла до фазы S6P1 следующего цикла, зап­рещая чтение байта кода. Второй импульс сигнала ALE стробирует фикса­цию адреса памяти данных, источником которого в микроконтроллере яв­ляется регистр DPTR (DPH и DPL) или регистр Ri (при косвенной адресации). Во втором случае содержимое регистра выдается через порт Р0 а старшие восемь разрядов определяются значением в регистре порта Р0. Далее, начиная с фазы S1P1 первого цикла до фазы S4P1 второго цикла, становится активным сигнал RD. Он стробирует ввод данных через порт Р0. Последующие импульсы сигналов ALE и PSEN вводят код следующего байта команды.

      

                      Рис. 1.5в. Типы магистральных циклов.

 

Третий тип магистрального цикла (рис. 1.5, в) имеет длительность 12 тактов и в основном аналогичен второму типу. Отличие заключаются в том, что активным становится сигнал разрешения записи WR.

Особенностью архитектуры микроконтроллера MCS-51 является то, что циклы всех команд формируются из циклов магистрали и имеют строго определенную длитель­ность (рис.1.6):

 

Рис. 1.6. Примеры циклов команд.

 

Самыми короткими по времени выполнения являются однобайтные и двухбайтные команды, выполняемые за один машинный цикл (рис. 1.6а, б). Это команды с быстрыми операциями, не использующие обращений к внешней памяти данных. В однобайтных командах (рис. 1.6, а) информация хранится в ячейках внутренней памяти данных или регистрах. По второму импульсу сигнала ALE читается код операции следующей команды, который игнори­руется. В начале следующей команды он читается вновь. В двухбайтных командах (рис. 1.6, б) во втором байте хранятся данные, либо адрес внутрен­ней ячейки памяти. В этом случае второй импульс ALE стробирует ввод второго байта текущей команды.

Еще одну группу характерных команд составляют однобайтные команды длительностью два машинных цикла (рис. 1.6, в). Это команды с медленны­ми операциями, не использующие обращений к внешней памяти данных. Такими операциями являются, например, наращивание указателя данных DPTR, операции умножения и деления, возврат из подпрограммы. В коман­дах такого типа после чтения кода операции по первому сигналу ALE три раза подряд выбирается один и тот же следующий байт кода, который игно­рируется.

Короткими, но медленными, являются команды типа МОVХ с обращением к внешней памяти данных. Они однобайтные, но выполняются за два ма­шинных цикла (рис. 1.6, г). После выборки кода операции команды по пер­вому импульсу ALE следующий импульс выбирает следующий байт кода, который игнорируется. Далее импульс ALE стробирует адрес внешней па­мяти данных, по которому производится операция чтения или записи. По последнему импульсу ALE вводится следующий байт кода.

    Логика ввода-вывода предназначена для приема и выдачи сигналов, обеспечивающих обмен информацией микроконтроллера MCS-51 с внешними устройствами через порты Р0-Р3.

    Регистр команд предназначен для записи и хранения 8-ми разрядного кода операции выполняемой команды, который с помощью дешифратора команд преобразовывается в 24-х разрядный код для ПЛМ, с помощью, которой вырабатывается набор микроопераций в соответствии с микропрограммой выполнения команды. Регистр команд программно недоступен.

    Регистр управления потреблением (PCON) позволяет останавливать работу микроконтроллера для уменьшения потребления электроэнергии и уменьшения уровня помех от микроконтроллера. Еще большего уменьшения потребления электроэнергии и уменьшения помех можно добиться, остановив задающий генератор микроконтроллера. Этого можно достичь при помощи переключения бит регистра управления потреблением PCON.

                                      Таблица 1.4. Регистр управления мощностью PCON

Символ Позиция                        Наименование и функция
SMOD PCON.7 Удвоенная скорость передачи. Если бит установлен в 1, то скорость передачи вдвое больше, чем при SMOD = 0. По сбросу SMOD = 0.
  PCON.6 Не используется
  PCON.5 Не используется
  PCON.4 Не используется
GF1 GF0 PCON.3 PCON.2 Флаги, специфицируемые пользователем (флаги общего назначения)
PD PCON.1 Бит пониженной мощности. При установке бита в 1 контроллер переходит в режим пониженной потребляемой мощности
IDL PCON.0 Бит холостого хода. Если бит установлен в 1, то контроллер переходит в режим холостого хода

 

Примечание. При одновременной записи 1 в PD и IDL бит PD имеет преимущество. Сброс содержимого PCON выполняется путем загрузки в него кода 0XXX0000.

Для варианта изготовления по технологии n - МОП (серия 1816 или иностранных микросхем, в названии которых в середине отсутствует буква 'c') регистр управления потреблением PCON содержит только один бит, управляющий скоростью передачи последовательного порта SMOD, а биты управления потреблением электроэнергией отсутствуют (таблица 1.4).

Организация памяти

 

    Все контроллеры семейства MCS – 51 имеют несколько адресных пространств функционально и логически разделенных за счет разницы в механизмах адресации и сигналах управления записью и чтением:

--- память программ;

--- внешняя память программ;

--- внутренняя память данных;

--- внешняя память данных.

    Структура адресного пространства семейства MCS – 51 показана на рис.1.7. Слева приводятся адреса соответствующих областей памяти.

 

Рис. 1.7. Структура адресного пространства.

                                                                                                                                                                                                                                            

Память программ

Память программ имеет 16–ти битовую адресную шину, ее элементы адресуются с использованием счетчика команд (РС) или инструкций, которые вырабатывают 16–разрядные адреса.

    Память программ доступна только по чтению. Микроконтроллеры MCS-51 не имеют команд и управляющих сигналов, предназначенных для записи в память программ.

    Память программ имеет байтовую организацию и общий объем до 64 Кбайт. Ряд микроконтроллеров семейства MCS–51 содержат расположенную на кристалле внутреннюю память программ емкостью 4 Кбайт, которая может быть расширена до 64 Кбайт за счет подключения микросхем внешней памяти программ. Внутренняя память программ может быть либо ПЗУ, формируемое при изготовлении контроллера, либо ППЗУ с ультрафиолетовым стиранием.      

Таким образом, для семейства MCS-51 внутренняя и внешняя память программ разделены в соотношении 4К/60К. Микроконтроллеры MCS-51 могут не иметь внутренней памяти программ и работать только с внешней емкостью до 64 Кбайт. С точки зрения программиста имеется только один вид памяти программ объемом 64 К. Тот факт, что в ряде микроконтроллеров MCS-51 он образуется комбинацией массивов, находящихся на кристалле и вне его, в соотношении 4 К/60 К для программиста неощутим, так как АЛУ автоматически выбирает байт из соответствующего массива в соответствии с его адресом.

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

Для микроконтроллеров MCS-51, не имеющих внутренней памяти программ,  формируется при любом обращении к памяти программ. 

Контроллеры семейства MCS-51 имеют внешний вывод , с помощью которого можно запретить работу внутренней памяти программ, для чегo необходимо подать на вывод  "0". При этом внутренняя память программ отключается и, начиная с нулевого адреса, все обращения происходят к внешней памяти программ с формированием сигнала . В случае, если =l, работают и внутренняя и внешняя память программ. Для микроконтроллеров MCS-51, не имеющих внутренней памяти программ, для нормальной работы, всегда необходимо задавать =0.

Таким образом, доступ к внешней памяти программ осуществляется в двух случаях:

1) при действии сигнала =0 независимо от адреса обращения,

2) в любом случае, если программный счетчик (РС) содержит число, большее, чем 0FFFН.

Если центральный процессор осуществляет доступ к внешней памяти программ, сигнал  вырабатывается дважды во время каждого машинного цикла (исключение составляет команда MOVX) независимо от того, необходим или нет выбираемый байт для текущей команды. При выборке из внешней памяти программ всегда используется 16-битовый адрес, младший байт которого выдается через порт Р0, а старший байт - через порт Р2 микроконтроллера MCS-51. Байт из внешней памяти программ вводится в микроконтроллер MCS-51 через порт Р0, который в этом случае используется как шина адреса/данных в режиме мультиплексирования.

На рис.1.8 показаны младшие адреса памяти программ, которые, как правило, отводятся под обработку прерываний и начало работы микроконтроллера после сброса.

Память программ имеет отдельное от памяти данных адресное пространство объемом до 64 Кбайт, причем, может быть часть памяти программ с адресами 0000H-0FFFH расположена на кристалле.

                             

                       Рис.1.8 Младшие адреса памяти программ.

 

Память программ, расположенная на кристалле, состоит из 12-разрядного дешифратора и ПЗУ емкостью 4К*8 бит или ППЗУ с ультрафиолетовым стиранием емкостью 4К*8 бит. Запись программ в ПЗУ происходит во время изготовления кристаллов.

Если на вывод микроконтроллера  подано напряжение питания Ucc, то обращение к внешней памяти программ происходит автоматически при выработке счетчиком команд адреса, превышающего 0FFFH. Если адрес находится в пределах 0000H-0FFFH, обращение происходит к памяти программ, расположенной на кристалле (внутренней памяти программ).

    Чтение из внешней памяти программ стробируется сигналом . При работе с внутренней памятью программ сигнал  не формируется. Микроконтроллеры MCS-51 не имеют инструкций и аппаратных средств для программной записи в память программ.

При обращениях к внешней памяти программ всегда формируется 16-разрядный адрес, младший байт которого выдается через порт Р0, а старший - через порт Р2. При этом байт адреса, выдаваемый через порт Р0, должен быть зафиксирован во внешнем регистре по спаду сигнала , т. к. в дальнейшем линии порта Р0 используются в качестве шины данных, по которой байт из внешней памяти программ вводится в микроконтроллер.

На рис.1.9. показана функциональная схема подключения к MCS-51 внешней памяти программ и внешней памяти данных.

Порт Р0 работает как мультиплексированная шина адрес/данные: выдает младший байт счетчика команд, а затем переходит в высокоимпедансное состояние и ожидает прихода байта из ППЗУ программ.

Когда младший байт адреса находится на выходах порта Р0, сигнал  защелкивает его в адресном регистре RG.

 

Рис. 1.9. Функциональная схема подключения к MCS-51 внешней памяти        программ и внешней памяти данных.

 

Старший байт адреса находится на выходах порта Р2 в течение всего времени обращения к ППЗУ. Сигнал  разрешает выборку байта из ППЗУ, после чего выбранный байт поступает на порт Р0 микроконтроллера и вводится в микроконтроллер. На рис. 1.10 и 1.11 приведены диаграммы, показывающие формирование соответствующих сигналов при работе микроконтроллера семейства MCS-51 с внешней памятью программ.

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

Рис. 1.10. Временные диаграммы операций с обращением к внешней памяти.

 

         Рис. 1.11. Временная диаграмма выборки команды из внешней

                                               памяти программ.

 

    Основная функция сигнала САВП обеспечить временное согласование передачи из порта P0 на внешний регистр младшего байта адреса в цикле чтения из ВПП. Сигнал САВП приобретает значение 1 дважды в каждом машинном цикле. Это происходит даже тогда, когда в цикле выборки нет обращения к ВПП. Доступ к ВПД возможен только в том случае, если сигнал САВП отсутствует. Первый сигнал САВП во втором машинном цикле команды MOVX блокируется. Следовательно, в любой МК-системе, не использующей ВПД, сигнал САВП генерируется с постоянной частотой, равной 1/16 частоты резонатора, и может быть использован для синхронизации внешних устройств или для реализации различных временных функций.

При обращении к РПП сигнал РВПП не генерируется, а при обращении к ВПП он выполняет функцию строб - сигнала чтения. Полный цикл чтения ВПД, включая установку и снятие сигнала ЧТ, занимает 12 периодов резонатора.

1.5.2. Память данных

Память данных предназначена для приема, хранения и выдачи информации, используемой в процессе выполнения программы. Память данных, расположенная на кристалле, состоит из регистра адреса ОЗУ, дешифратора, ОЗУ и указателя стека.

Регистр адреса ОЗУ предназначен для приема и хранения адреса выбираемой с помощью дешифратора ячейки памяти, которая может содержать, как бит, так и байт информации.

ОЗУ представляет собой 128 восьмиразрядных регистров, предназначенных для приема, хранения и выдачи различной информации.

Указатель стека представляет собой восьмиразрядный регистр, предназначенный для приема и хранения адреса ячейки стека, к которой было последнее обращение. При выполнении команд LCALL, ACALL содержимое указателя стека увеличивается на 2. При выполнении команд RET, RETI содержимое указателя стека уменьшается на 2. При выполнении команды PUSH direct содержимое указателя стека увеличивается на 1. При выполнении команды РОР direct содержимое указателя стека уменьшается на 1. После сброса в указателе стека устанавливается адрес 07Н, что соответствует началу стека с адресом 0ВН.

     Bнутренняя память данных микроконтроллеров семейства MCS-51 состоит из двух областей: 128 байт оперативной памяти (ОЗУ) с адресами   0-7FH и области регистров специальных функций, занимающей адреса 80H-FFH. Распределение пространства внутренней памяти данных показано на рис. 1.12. Физически внутреннее ОЗУ данных и область регистров специальных функций являются отдельными устройствами.

 

 

Рис. 1.12. Адресное пространство внутренней памяти данных.

 

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

Младшие 32 байта внутреннего ОЗУ данных сгруппированы в 4 банка по 8 регистров в каждом (БАНК0-БАНК3 на рис. 1.12). Команды программы могут обращаться к регистрам, используя их имена R0-R7. Два бита PSW (указатели банка рабочих регистров RS0 и RS1) определяют, с регистрами какого банка производятся манипуляции. Наличие такого механизма работы с ячейками ОЗУ позволяет экономить память программ, т. к. команды, работающие с регистрами R0-R7, короче команд, использующих прямую адресацию.

Следующие после банков регистров внутреннего ОЗУ данных 16 байт (адреса 20Н-2FН) образуют область ячеек, к которым возможна побитовая адресация. Набор команд семейства MCS-51 содержит значительное количество инструкций, позволяющих работать с отдельными битами, используя при этом прямую адресацию. 128 бит, составляющих рассматриваемую область внутреннего ОЗУ данных, имеют адреса 00H-7FH и предназначены для работы с такими инструкциями. Битовая адресация ОЗУ показана на рис. 1.13, где в квадратах, символизирующих биты, указаны их адреса.

 

Рис. 1.13. Битовая адресация ОЗУ.

 

    Обращение к внутреннему ОЗУ данных всегда осуществляется с использованием 8-разрядного адреса. При включении питания содержимое ОЗУ будет иметь случайное значение.

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

                                  Таблица 1. 5. Список регистров специальных функций

 

Наименование Назначение Адрес
P0* Порт 0 80H
SP Указатель стека 81H
DPL Младший байт указателя данных DPTR 82H
DPH Старший байт указателя данных DPTR 83H
PCON Регистр управления потреблением 87H
TCON* Регистр управления таймеров/счетчиков 88H
TMOD Регистр режимов таймеров/счетчиков 89H
TL0 Таймер/счетчик 0. Младший байт 8АH
TL1 Таймер/счетчик 1. Младший байт 8BH
TH0 Таймер/счетчик 0. Старший байт 8CH
TH1 Таймер/счетчик 1. Старший байт 8DH
P1* Порт 1 90H
SCON* Регистр управления последовательным портом 98H
SBUF Буфер последовательного порта 99H
P2* Порт 2 0A0H
IE* Регистр разрешения прерываний 0A8H
P3* Порт 3 0B0H
IP* Регистр приоритетов прерываний 0B8H
PSW* Регистр состояния программы 0D0H
A* Аккумулятор 0E0H
B* Регистр B 0F0H

  

* - регистры, допускающие побитовую адресацию.

 

Эти регистры допускают только прямую адресацию. Двенадцать байт в области регистров специальных функций допускают как байтовую, и побитовую адресацию. Список регистров с побитовой адресацией показан на рис. 1.14. Как видно из рисунка, побитовую адресацию допускают те регистры специальных функций, чей адрес заканчивается 000Н. Биты в рассматриваемой области регистров специальных функций имеют адреса 80Н-F7Н 

В микроконтроллерах семейства MCS-51 предусмотрена возможность расширения памяти данных путем подключения внешних устройств емкостью до 64 Кбайт.  

 

                   Рис. 1.14. Адреса битов регистров специальных функций.

 

 При этом обращение к внешней памяти данных возможно только с помощью команд MOVX.

Команды MOVX@Ri, А, MOVX А, @Ri формируют восьмиразрядный адрес, выдаваемый через порт Р0. Команды MOVX@DPTR, А и MOVX @ А, DPTR формируют 16-разрядный адрес, младший байт которого выдается через порт Р0, а старший - ­через порт Р2.

Байт адреса, выдаваемый через порт Р0, должен быть зафиксирован во внешнем регистре по спаду сигнала ALE, т. к. в дальнейшем линии порта Р0 используются как шина данных, через которую байт данных принимается из памяти при чтении или выдается в память данных при записи. При этом чтение стробируется сигналом микроконтроллера , а запись - сигналом . При работе с внутренней памятью данных сигналы и не формируются.                                                                                                                                  

На рис. 1.15 приведены диаграммы циклов чтения и записи при работе микроконтроллеров MCS-51 с внешней памятью данных.

Рис. 1.15. Временные диаграммы циклов чтения и записи при работе с внешней памятью данных.

 

На рисунке 1.15 обозначены:

---PCL OUT- выдача младшего байта счетчика команд РС;

---DPH, DPL-соответственно младший и старший байты регистра указателя данных DPTR, который используется в качестве регистра косвенного адреса в командах MOVX A, @DPTR и MOVX DPTR, @A.

---RI- регистры R0 и R1, которые используются в качестве регистра косвенного адреса в командах MOVX A, @RI и MOVX @RI, А;

---DPL OR RI OUT- выдача младшего байта регистра указателя данных DPTR или регистра R0(R1);

---DPH OR P2 OUT- выдача старшего байта регистра указателя данных DPTR или защелки порта Р2;

---PCH OR P2- выдача старшего байта счетчика команд РС или защелки порта Р2; 

1- PCL OUT, если используется ВПП;

2- DPH OR P2 OUT;

3- PCL OUT;

4- PCH OR P2

                                      1.6. Порты ввода/вывода

Порты Р0, Р1, Р2, Р3 являются двунаправленными портами ввода/вывода и предназначены для обеспечения обмена информацией микроконтроллеров (МК) семейства MCS - 51 с внешними устройствами, образуя 32 линии ввода/вывода. Каждый из портов содержит восьмиразрядный регистр (фиксатор - защелка), имеющий байтовую и битовую адресацию для установки (сброса) разрядов.

    Физически адреса фиксаторов Р0, Р1, Р2, Р3 составляют для:

Р0 – 80Н, при битовой адресации 80Н – 87Н;

Р1 – 90Н, при битовой адресации 90Н – 97Н;

Р2 – А0Н, при битовой адресации А0Н – А7Н;

Р3 – В0Н, при битовой адресации В0Н – В0Н;

    Помимо работы в качестве обычных портов ввода/вывода линии портов Р0, Р1, Р2, Р3 могут выполнять ряд дополнительных функций, описанных ниже:

    Через порт Р0:

--- выводится младший байт адреса А0 – А7 при работе с внешней памятью программ и внешней памятью данных;

--- выдается из микроконтроллера и принимается в микроконтроллер байт данных при работе с внешней памятью (при этом обмен байтом данных и вывод младшего байта адреса внешней памяти мультиплексированы во времени);

--- задаются данные при программировании внутреннего ППЗУ и читается содержимое внутренней памяти программ.

    Через порт Р1:

--- задается младший байт адреса при программировании внутреннего ППЗУ и при чтении внутренней памяти программ.

    Через порт Р2:

--- выводится старший байт адреса А8 – А15 при работе с внешней памятью программ и внешней памятью данных (для внешней памяти данных – только при использовании команд MOVX A,@DPTR, MOVX @DPTR,А которые вырабатывают 16 – ти разрядный адрес;

--- задается старший байт (разряды А8 – А14) адреса при программировании внутреннего ППЗУ и при чтении внутренней памяти программ.

    Каждая линия порта Р3 имеет индивидуальную альтернативную функцию:

                                                Таблица 1.6. Альтернативные функции порта 3

Символ Позиция Имя и назначение
RD P3.7 Чтение. Активный сигнал низкого уровня формируется аппаратурно при обращении к ВПД
WR P3.6 Запись. Активный сигнал низкого уровня формируется аппаратурно при обращении к ВПД
T1 P3.5 Вход таймера/счетчика 1 или тест-вход
T0 P3.4 Вход таймера/счетчика 0 или тест-вход
INT1 P3.3 Вход запроса прерывания 1. Воспринимается сигнал низкого уровня или срез
INT0 P3.2 Вход запроса прерывания 0. Воспринимается сигнал низкого уровня или срез
TXD P3.1 Выход передатчика последовательного порта в режиме УАПП. Выход синхронизации в режиме сдвигающего регистра
RXD P3.0 Вход приемника последовательного порта в режиме УАПП. Ввод/вывод данных в режиме сдвигающего регистра

       

Альтернативная функция любой из линий порта Р3 реализуется только в том случае, если в соответствующем этой линии разряде фиксатора – защелки содержится «1». В противном случае на линии порта Р3 будет присутствовать «0».

    На рис.1.16 показаны функциональные схемы одного вывода в каждом из портов для n-МОП микроконтроллера MCS – 51.

Рис. 1.16. Схемотехника портов ввода/вывода микроконтроллера MCS – 51

выполненного по n - МОП технологии

                              а - порт 0; б - порт 3.

                              

                         

                                       2.6.1. Работа с портами.

 

    Порты Р1 – Р3 имеют идентичные характеристики. Данные записанные в них, статически фиксируются и не изменяются до перезаписи.

    В режиме работы с внешней памятью программ порт Р2 служит для выдачи сигналов старших разрядов адреса и статически фиксирует их до момента изменения.

       Обращения к внешней памяти программ всегда выполняются с использованием 16 – ти разрядного адреса. Когда микроконтроллер работает с внешней памятью программ, все 8 бит порта Р2 задействованы на выдачу старшего байта адреса (старший байт счетчика команд РС) и не могут быть использованы в качестве линий ввода/вывода общего назначения.

    Обращения к внешней памяти данных могут выполняться как с использованием 16 – ти разрядного адреса (MOVX @DPTR), так и с использованием 8 - ти разрядного адреса (MOVX @Ri). При использовании 16 – ти разрядного адреса старший байт адреса выдается через порт Р2, на линиях которого байт адреса удерживается в течение всего

времени цикла записи или чтения.

    Выдача адреса через порт Р2 не влияет на содержимое защелок порта Р2. Если порт Р2 не задействован на выдачу адреса, то на его выводах выставляется содержимое защелок.

    Для перевода любой линии портов Р1 – Р3 на прием входной информации необходимо в соответствующий фиксатор – защелку порта записать «1» с помощью команды выдачи данных. Сигнал RST устанавливает все порты на прием входной информации.

    Порт Р0 – восьмиразрядный двунаправленный порт с тремя состояниями. Информация, выдаваемая портом Р0 с помощью команд выдачи, сопровождается строб - импульсом .

    При записи информации в порт Р0 с помощью команд выдачи, сопровождается строб - импульсом .

    Кроме операций ввода/вывода информации предусмотрена возможность выполнения логических операций И, ИЛИ и исключающее ИЛИ непосредственно на фиксаторах портов Р0 – Р3.

    В режиме работы внешней памятью программ порт Р0 служит для выдачи младших разрядов адреса памяти программ и приема кодов команд. В режиме работы с внешним ОЗУ данных порт Р0 служит для выдачи адреса внешнего ОЗУ данных и приема – выдачи данных при обмене с внешним ОЗУ.

    Любую линию ввода/вывода можно проверить с помощью команд условного перехода. Кроме того, выводы Р3.2 и Р3.3 можно использовать для внешнего аппаратного прерывания, выводы Р3.4 и Р3.5 – как входы счетчиков внешних событий для таймеров/счетчиков, а вывод Р3.1 можно использовать как выход тактового сигнала в синхронном режиме работы последовательного интерфейса микроконтроллеров MCS – 51. Выводы Р3.6 и Р3.7 порта Р3 служат для выдачи сигналов разрешения соответственно записи  и чтения  байта внешнего ЗУ данных через и порт Р0.

    При работе с последовательным портом микроконтроллеров MCS – 51 линии Р3.0 и Р3.1 используются, соответственно как вход и выход последовательного канала.

    Система команд микроконтроллеров MCS – 51 позволяет считывать информацию с фиксатора – защелки порта или непосредственно с выхода, в зависимости от кода инструкции. В инструкциях, в которых порт служит операндом - источником, информация считывается непосредственно с выводов порта, например,

 ADD A, P1 ; содержимое аккумулятора складывается с информацией на выводах порта Р1 и результат заносится в аккумулятор.

    Во всех случаях, когда операндом и регистром назначения является порт или бит порта, команды считывают информацию с выходов фиксаторов – защелок, а не с внешних контактов выводов порта. Например: ORL P2, A.


Поделиться:



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


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