ТОП 10:

МИКРОПРОЦЕССОРНЫЕ ИНФОРМАЦИОННО-УПРАВЛЧЮЩИЕ СИСТЕМЫ



МИКРОПРОЦЕССОРНЫЕ ИНФОРМАЦИОННО-УПРАВЛЧЮЩИЕ СИСТЕМЫ

 

Конспект лекций

 

Москва 2014

Микроконтроллеры серии 1830ВЕ51

Особенностью построения современных технических систем является автоматизация процессов контроля их состояния и управления их состоянием с помощью контроллеров (устройств управления).

Для уменьшения аппаратных затрат при построении контроллеров и снижения их стоимости применяются однокристальные микроконтроллеры (серий 1816, 1830).

Микросхемы серии 1816 выполнены по n-МОП технологии, 1830 – по КМОП, поэтому они имеют низкое энергопотребление.

Различают два типа семейства 8-разрядных микроконтроллеров МК 48 и МК51. В настоящее время широко используются микроконтроллеры семейства МК51.

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

Микросхемы семейства МК51 по сравнению с МК48 имеют более сложную структурную организацию, больший объем памяти, быстродействие, последовательный интерфейс (для ввода и вывода данных в последовательной форме), расширенную систему команд (включающей команды по выполнению таких операций, как вычитание, умножение, деление и др.), большим числом портов для обмена данными с другими устройствами.

Восьмиразрядные микро-ЭВМ семейства МК51 выполнены по n-МОП технологии (серия 1816) или по КМОП технологии (серия 1830) и предназначены для построения на их основе высокопроизводительных котроллеров, включаемых в контур управления объектом или процессом

В состав семейства входит пять модификаций, имеющих одинаковые основные характеристики и различающиеся объемом встроенной памяти и мощности потребления. Микросхемы серии 1816 имеют мощность потребления приблизительно на порядок больше, чем серии 1830. Микро ЭВМ КР18ХХВЕ51 содержит на своем кристалле масочное ПЗУ емкостью 4096 байта, и рассчитана на применение в массовой продукции. ИС КР18ХХВЕ31 не содержит встроенной памяти программ, а ИС КМ 1816 ВЕ751 содержит РППЗУ с ультрафиолетовым стиранием емкостью 4096 байт и особенно эффективны на этапе разработки системы при отладке программ. Все перечисленные микросхемы являются аналогами БИС 8051, 80С51, 8031, 80С31 и 8751 семейства MCS фирмы Intel (США).

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

Блок управления предназначен для выработки синхронизирующих и управляющих сигналов. В состав БУ входят:

1. Устройство выработки временных интервалов;

2. Логика ввода/вывода;

3. Регистр команд;

4. Регистр управления энергопотреблением;

5. Дешифратор команд;

6. ПЛМ и логика управления микро-ЭВМ.

Устройство выработки временных интервалов предназначено для формирования внутренних синхросигналов, которые определяют продолжительность выполнения команд. Практически все команды выполняются за 1 или 2 машинных цикла, кроме команд умножения и деления (время выполнения последних составляет 4 машинных цикла). Машинный цикл включает в себя шесть состояний S1…S6, каждый из которых состоит из двух фаз Р1 и Р2. Длительность каждой фазы равна периоду следования синхроимпульсов, который задается частотой кварцевого резонатора, подключаемого к выводам XTAL1 и XTAL2 МК51, или резонансной частотой LC контура, или внешним генератором. Схема подключения элементов к МК51 показаны на рис. 1.3.

 
 

 

  Cв=10 пФ

Рис. 1.3. Схема подключения цепей синхронизации к МК51

 
 

Все машинные циклы МК51 одинаковые и состоят из 12 периодов сигнала XTAL. Машинный цикл состоит из шести состояний S1…S6, каждый из которых включает в себя две фазы P1 и P2 (рис. 1.4). Длительность фазы равна периоду следования внешнего тактового сигнала.

Рис. 1.4. Диаграмма формирования машинных циклов МК51

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

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

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

Регистр команд программно недоступен.

Регистр управления энергопотреблением (PCON) предназначен для управления последовательным портом и режимами энергопотребления МК51. В табл. 1.1 приведено обозначение разрядов PCON.

Таблица 1.1

Разряды
Обозначение SMOD - - - GF1* GF0* PD* IDL*

Примечание: биты отмеченные звездочкой присутствуют только в МК51 серии 1830.

Все биты регистра PCON доступны по записи и чтению.

Бит SMOD управляет скоростью передачи через последовательный порт (при установке его в «1» скорость передачи удваивается).

Бит PD при установке его в «1» переводит МК51 в режим микропотребления.

Бит IDL равный «1» устанавливает режим холостого хода.

Биты GF0 и GF1 – флаги общего назначения.

Арифметико-логический блок

Восьмиразрядный АЛБ предназначен для выполнения арифметических операций: сложение, вычитание, умножение и деление; логических операций: И, ИЛИ, исключающие ИЛИ, циклического сдвига, сброса, инвертирования и т.д. АЛБ включает в себя следующие функциональные узлы:

1. Восьмиразрядное ALU, которое позволяет выполнять арифметические и логические операции над 4 типами данных: булевскими (1 бит), цифровыми (4 бита), байтовыми (8 бит) и адресными (16 бит);

2. Аккумулятор – восьмиразрядный параллельный регистр, предназначенный для хранения одного из операндов АЛУ, приема результата арифметико-логической операции, ряда операций передачи данных. Кроме этого, операции сдвигов, проверка их на ноль, формирование флага паритета, выполняются только над содержимым Аккумулятора;

3. Регистр В – восьмиразрядный параллельный регистр, предназначенный для хранения второго операнда при выполнении операции умножения и деления. В остальных случаях может использоваться как любой другой программно доступный регистр;

4. Два восьмиразрядных, программно-недоступных, регистра временного хранения операндов Т1 и Т2;

5. Схема десятичной коррекции DCU;

6. Регистр признаков (PSW) – предназначен для хранения признаков (флагов), вырабатываемых АЛУ при выполнении многих операций. В табл.1.2 приведено мнемоническое имя, назначение и способ установки разрядов регистра PSW.

Таблица 1.2

Разряд Имя Назначение битов Доступ к битам
PSW.7 C Флаг переноса. Изменяется во время выполнения некоторых арифметических и логических команд аппаратный или программный
PSW.6 AC Флаг промежуточного переноса устанавливается/сбрасывается при возникновении/отсутствии переноса или заема в бите 3 при образовании младшего полубайта результата аппаратный или программный
PSW.5 F0 Флаг 0. Флаг состояния определенный пользователем. программный
PSW.4 RS1 Указатель банка рабочих регистров. программный
PSW.3 RS0 Указатель банка рабочих регистров. программный
  RS1 RS0    
Банк 0 с адресами (00Н-07Н)  
Банк 1 с адресами (08Н-0FН)  
Банк 2 с адресами (10Н-17Н)  
Банк 3 с адресами (18Н-1FН)  
PSW.2 OV Флаг переполнения. аппаратный или программный
PSW.1 - Резервный. Содержит триггер, который можно использовать. программный
PSW.0 P Бит четности аппаратный или программный

Флаг переполнения OV устанавливается, если возник перенос в знаковый разряд, а из знакового разряда перенос отсутствует (индикатор переполнения разрядной сетки) при выполнении операций сложение/вычитание. При выполнении операции деления флаг OV аппаратно сбрасывается, а в случае деления на ноль устанавливается. При выполнении операции умножения флаг OV аппаратно устанавливается, если результат больше 255.

Флаг Р является дополнением содержимого Аккумулятора до четности в девятиразрядном слове состоящем из восьми разрядов Аккумулятора и бита P, число один всегда четное. Если в Аккумуляторе все разряды установлены в ноль, то Р=0. Этот бит программно доступен только по чтению.

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

Память программ МК51 может иметь емкость до 64 Кбайт (рис. 1.5) и предназначена для хранения команд, констант, управляющих слов инициализации, различных таблиц и т.п.

Рис. 1.5. Адресное пространство памяти программ

Обращение к RPM всегда осуществляется с помощью 16-ти разрядного адреса, который формируется счетчиком команд (PC) или регистром указателем данных (DPTR). Последний выполняет функции базового регистра при косвенных переходах по программе или используется в командах, оперирующих с таблицами.

Современные микроконтроллеры содержат на своем кристалле электрически стираемую резидентную память программ (EEPROM), емкость которой составляет 4 Кбайт. При этом емкость внешней памяти может достигать 60 Кбайт. Выбор памяти программ (резидентной или внешней) осуществляется с помощью входа EA. При подаче на этот вход логической 1 (EA=1) разрешена работа с обоими типами памяти. Если же на вход DEMA подан низкий уровень напряжения (EA=0), то разрешена работа только с внешней памятью программ. Для разрешения считывания байта из внешней памяти программ и ввода его в МК51 используется сигнал на выходе , который формируется дважды в течение каждого машинного цикла.

Резидентная память данных

Резидентная память данных состоит из двух областей: 128 байт оперативной памяти (ОЗУ) с адресами 00-7FH и области регистров специальных функций, занимающих адреса с 80Н по 0FFH. Распределение адресного пространства RDM показано на рис. 1.6. Младшие 32 байта ОЗУ данных сгруппированы в 4 банка (Банк 0...Банк 3). Команды программы могут обращаться к регистрам, используя их символические имена R0...R7. При этом в регистре PSW должны быть установлены биты RS0 и RS1, определяющие, к какому банку данных производится обращение. Такой механизм адресации позволяет экономить память программ.

Следующие 16 байт ОЗУ допускают обращение к ним как в побайтном режиме, так и в побитном. Эта область ОЗУ используется МК51 при выполнении операций над битами. Каждый бит имеет свой адрес.

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

Регистры специальных функций также имеют свои адреса, приведенные в табл. 1.3, а некоторые из них допускают побитовую адресацию.

  Регистры специальных функций FFH
  80H
  Остальные регистры ОЗУ (80 регистров) 7FH
  30H
  Прямо адресуемые биты (16 регистров) 2FH
  20H
R7   Банк 3   1FH
R0 18H
R7   Банк 2   17H
R0 10H
R7   Банк 1   0FH
R0 08H
R7   Банк 0   07H
R0

Рис. 1.6. Карта адресов RDM

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

Символическое имя Наименование Адрес, Н Побитовая адресация
ACC Аккумулятор 0E0 +
B Регистр В – расширенный аккумулятор 0F0 +
PSW Слово состояния программы 0D0 +
SP Регистр – указатель стека  
DPTR Регистр – указатель данных (DPH)  
    (DPL)  
P0 Порт 0 +
P1 Порт 1 +
P2 Порт 2 0A0 +
P3 Порт 3 0B0 +
IP Регистр приоритетов 0B8 +
IE Регистр разрешения инд. прерывания 0A8 +
TMOD Регистр режима Т/C  
TCON Регистр управления T/C +
TH0 T/C0 (старший) 8C  
TL0 T/C0 (младший) 8A  
TH1 T/C1 (старший) 8D  
TL1 T/С1 (младший) 8B  
SCON Регистр управления УАПП +
SBUF Буфер приемо/передатчика  
PCON Регистр управления потреблением  

Регистр указателя стека

Регистр указателя стека SP МК51 восьмиразрядный. Он может адресовать любую область резидентной памяти данных. В отличие от микропроцессора К580ВМ80, в МК51 стек “растет вверх”, т.е. перед выполнением команды PUSH или CALL содержимое SP инкрементируется, после чего производится запись информации в стек. Соответственно при извлечении информации из стека регистр SP декрементируется после извлечения информации. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.

Таймеры/счетчики

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

1. Два 16-разрядных регистра T/C0 и T/C1;

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

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

4. Схема инкремента;

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

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

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

Регистры T/C0 и T/C1 состоят из пары 8-разрядных регистров. Регистр T/C0 состоит из ТН0 и ТL0, а регистр T/C1 - ТН1 и ТL1. Регистры ТН0 и ТН1 - старшие , а ТL0 и ТL1 - младшие . Каждый 8-разрядный регистр имеет свой адрес и может использоваться как РОН, если Т/С не используются.

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

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

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

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

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

Обозначение разрядов регистра TMOD приведено в табл.1.4, а в табл.1.5 – их назначение.

Таблица 1.4. Обозначение разрядов TMOD

Номер разряда
Обозначение GATE1 C/T1 M1.1 M0.1 GATE0 C/T0 M1.0 M0.0

Таблица 1.5

Номер разряда Обозначение Назначение разрядов Примечание
1, 0 5, 4 M1.0, M0.0 M1.1, M0.1 Определяют один из 4-х режимов работы, отдельно для Т/С0 и Т/С1 Все разряды TMOD устанавливаются программно: разряды 0…3 определяют режим работы Т/С0, разряды 4…7 – Т/С1
M1 M0 Режим  
С/Т0 С/Т1 Если разряды С/Т установлены в 0, то соответствующий Т/С работает в качестве таймера. При установке этих битов в 1 – в качестве счетчика внешних событий
GATE0 GATE1 Разрешает управление Т/С от внешнего вывода ( - для Т/С0, - для Т/С1) GATE = 0 – управление запрещено GATE = 1 – управление разрешено

При работе в качестве таймера содержимое регистра Т/C инкрементируется в каждом машинном цикле, т. е. Т/C является счетчиком машинных циклов МК51 с частотой .

При работе в качестве счетчика внешних событий содержимое Т/C инкрементируется после перехода из 1 в 0 сигнала на счетном входе Т0 или Т1. Так для распознавания такого перехода требуется два машинных цикла, то максимальная частота счета равна

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

Регистр управления (TCON)предназначен для приема и хранения кода управляющего слова. Флаги переполнения TF0 и TF1 устанавливаются при переполнении соответственно Т/C0 и Т/С1. Если при этом разрешено прерывание от соответствующего Т/C, то установка флага вызовет прерывание. Сбрасываются флаги аппаратно при передаче управления программе обработке соответствующего прерывания.

Обозначение разрядов регистра TCON приведено в табл. 1.6, а их назначение – в табл. 1.7.

Таблица 1.6. Обозначение разрядов регистра TCON

Номер разряда
Обозначение TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

Таблица 1.7. Назначение разрядов регистра TCON

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

Флаги TF0 и TF1 программно доступны и могут быть установлены/сброшены программой. Используя этот механизм, можно программно вызвать (установить TF) или отменить (сбросить TF) вызов подпрограммы прерываний.

Флаги IE0, IE1 устанавливаются аппаратно от внешних источников прерываний, подключенных к внешним выводам , . Кроме этого их можно установить программно. Установка флагов IE0, IE1 приведет к вызову подпрограммы обработки прерываний, сброс этих флагов выполняется аппаратно при обслуживании прерывания, только в том случае, если прерывание было вызвано срезом сигнала (IT=1). Если прерывание было вызвано уровнем сигнала (IT=0) на входе INT, то сброс флага IE осуществляется источником прерывания под управлением подпрограммы обработки прерываний.

Схема инкремента предназначена для увеличения на 1 содержимого Т/C, для которых разрешена работа в режиме таймера или счетчика внешних событий.

Схема фиксации , , T0, T1 представляет собой 4 триггера, в которые записывается информация с этих выводов МК51.

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

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

Порты МК51

Четыре двунаправленных порта Р0...Р3 предназначены для обмена информацией MK51 с внешними устройствами. Каждый из портов содержит 8-разрядный регистр-защелку, имеющий байтовую и битовую адресацию для установки (сброса) разрядов программным способом.

Физические адреса регистров портов Р0...Р3 приведены в табл. 1.13.

Таблица 1.13

Номер порта Байтовая адресация Битовая адресация
Р0 80H 80H…87H
Р1 90H 90H…97H
Р2 0A0H 0A0H…0A7H
Р3 0B0H 0B0H…0B7H

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

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

1. Выводится младший байт адреса А0...А7 при работе с ВПД и ВПП;

2. Выдается из МК51 и принимается в МК51 байт данных при работе с внешними памятью программ и данных, причем обмен данными и выдача адреса мультиплексированы во времени;

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

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

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

1. Выводится старший байт адреса А8...А15 при работе с ВПД и ВПП;

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

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

 

Таблица 1.14

Номер линии Имя линии Альтернативная функция
Р3.0 RxD вход УАПП
Р3.1 TxD выход УАПП
Р3.2 нулевой вход внешнего запроса прерывания
Р3.3 первый вход внешнего запроса прерывания
Р3.4 T0 вход счетчика внешних событий Т/С0
Р3.5 T1 вход счетчика внешних событий Т/С1
Р3.6 WR строб записи в ВПД, сопровождающий вывод данных из порта Р0 при использовании команд MOVX@Ri, А или MOVX@DPTR, A
Р3.7 RD строб чтения из ВПД, сопровождающий ввод данных через порт Р0 при использовании команды MOVXA@Ri и MOVXA@DPTR

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

Команды пересылки данных

В группу команд пересылки данных входит 28 команд, краткое описание которых, а также их количество байт и время выполнения приведено в табл. 1.16.

Таблица 1.16. Команды пересылки данных

Мнемоника команды Код операции Количество байтов в команде Время выполнения команды, циклы Выполняемые действия
MOV A, Rn 11101rrr 1 1 (A) (Rn)
MOV A, ad 11100101 2 1 (A) (ad)
MOV A, @Ri 1110011i 1 1 (A) ((Ri))
MOV A, #d 01110100 2 1 (A) #d
MOV Rn, A 11111rrr 1 1 (Rn) (A)
MOV Rn, ad 10101rrr 2 2 (Rn) (ad)
MOV Rn, #d 01111rrr 2 1 (Rn) #d
MOV ad, A 11110101 2 1 (ad) (A)
MOV ad, Rn 10001rrr 2 2 (ad) (Rn)
MOV add, ads 10000101 3 2 (add) (ads)
MOV ad, @Ri 1000011i 2 2 (ad) ((Ri))
MOV ad, #d 01110101 3 2 (ad) #d
MOV @Ri, A 1111011i 1 1 ((Ri)) (A)
MOV @Ri, ad 0110011i 2 2 ((Ri)) (ad)
MOV @Ri, #d 0111011i 2 1 ((Ri)) #d
MOV DPTR, #d16 10010000 3 2 (DPTR) #d16
MOVC A, @A+DPTR 10010011 1 2 (А) ((A) +(DPTR))
MOVC A, @A+PC 10000011 1 2 (PC) (PC)+1, (A) ((A)+(PC))
MOVX A, @Ri 1110001i 1 2 (A) ((Ri))
MOVX A,@DPTR 11100000 1 2 (A) ((DPTR))
MOVX @Ri, A 1111001i 1 2 ((Ri)) (A)
MOVX @DPTR,A 11110000 1 2 ((DPTR)) (A)
PUSH ad 11000000 2 2 (SP) (SP) + 1, ((SP)) (ad)
POP ad 11010000 2 2 (ad) (SP), (SP) (SP) - 1
XCH A, Rn 11001rrr 1 1 (A) ↔ (Rn)
XCH A, ad 11000101 2 1 (A) ↔ (ad)
XCH A, @Ri 1100011i 1 1 (A) ↔ ((Ri))
XCHD A, @Ri 1101011i 1 1 (A0…3) ↔((Ri)0…3)

По команде MOV выполняется пересылка данных из второго операнда в первый. Эта команда не имеет доступа ни к внешней памяти данных, ни к памяти программ. Для этих целей предназначены команды MOVX и MOVC соответственно. Первая из них обеспечивает чтение/запись байт из внешней памяти данных, вторая – чтение байт из памяти программ.

По команде XCH выполняется обмен байтами между аккумулятором и ячейкой РПД, а по команде XCHD – обмен младшими тетрадами (битами 0…3).

Команды PUSH и РОР предназначены соответственно для записи данных в стек и их чтения из стека. Размер стека ограничен лишь размером резидентной памяти данных. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.

Группа команд пересылок МК51 имеет следующую особенность – в ней нет специальных команд для работы со специальными регистрами: PSW, таймером, портами ввода-вывода. Доступ к ним, как и к другим регистрам специальных функций, осуществляется заданием соответствующего прямого адреса, т.е. это команды обычных пересылок, в которых вместо адреса можно ставить название соответствующего регистра. Например, чтение данных из порта Р1 в аккумулятор может быть выполнено командой MOV A, P1.

Кроме того, следует отметить, что в МК51 аккумулятор имеет два различных имени в зависимости от способа адресации: А – при неявной адресации (например, MOV A, R0) и АСС – при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.

Команды логических операций

В данную группу входят 25 команды, краткое описание которых приведено в табл. 1.18. Кроме этого в таблице приведены данные о длине команды в байтах и время ее выполнения в машинных циклах.

 

 

Таблица.1.18. Логические операции

Мнемоника команды Код операции Количество байтов в команде Время выполнения команды, циклы Выполняемые действия
ANL A, Rn 01011rrr 1 1 (A) (A) AND (Rn)
ANL A, ad 01010101 2 1 (A) (A) AND (ad)
ANL A, @Ri 0101011i 1 1 (A) (A) AND ((Ri))
ANL A, #d 01010100 2 1 (A) (A) AND #d
ANL ad, A 01010010 2 1 (ad) (ad) AND (A)
ANL ad, #d 01010011 3 2 (ad) (ad) AND #d
ORL A, Rn 01001rrr 1 1 (A) (A) OR (Rn)
ORL A, ad 01000101 2 1 (A) (A) OR (ad)
ORL A, @Ri 0100011i 1 1 (A) (A) OR ((Ri))
ORL A, #d 01000100 2 1 (A) (A) OR #d
ORL ad, A 01000010 2 1 (ad) (ad) OR (A)
ORL ad, #d 01000011 3 2 (ad) (ad) OR #d
XRL A, Rn 01101rrr 1 1 (A) (A) XOR (Rn)
XRL A, ad 01100101 2 1 (A) (A) XOR (ad)
XRL A, @Ri 0110011i 1 1 (A) (A) XOR ((Ri))
XRL A, #d 01100100 2 1 (A) (A) XOR #d
XRL ad, A 01100010 2 1 (ad) (ad) XOR (A)
XRL ad, #d 01100011 3 2 (ad) (ad) XOR #d
CLR A 11100100 1 1 (A) 0
CPL A 11110100 1 1 (A) NOT(A)
RL A 00100011 1 1 (An+1) (An), n=0÷6, (A0) (A7)
RLC A 00110011 1 1 (An+1) (An), n=0÷6 (A0) (C), (C) (A7)
RR A 00000011 1 1 (An) (An+1), n=0÷6, (A7) (A0)
RRC A 00010011 1 1 (An) (An+1), n=0÷6 (A7) (C), (C) (A0)
SWAP A 11000100 1 1 (A0…3) ↔ (A4…7)

Команды операций над битами

Группа состоит из 12 команд, краткое описание которых приведено в табл. 1.19.

Таблица.1.19. Операции с битами

Мнемоника команды Код операции Количество байтов в команде Время выполнения команды, циклы Выполняемые действия
CLR С 11000011 1 1 (C) 0
CLR bit 11000010 2 1 (b) 0
SETB С 11010011 1 1 (C) 1
SETB bit 11010010 2 1 (b) 1
CPL С 10110011 1 1 (C) NOT(C)
CPL bit 10110010 2 1 (b) NOT(b)
ANL С, bit 10000010 2 2 (C) (C) AND (b)
ANL С, /bit 10110000 2 2 (C) (C) AND (NOT(b))
ORL С, bit 01110010 2 2 (C) (C) OR (b)
ORL С, /bit 10100000 2 2 (C) (C) OR (NOT(b))
MOV С, bit 10100010 2 1 (C) (b)
MOV bit, С 10010010 2 2 (b) (C)

Эти команды позволяют выполнять операции над отдельными битами: сброс, установку, инверсию бита, а также логические И (/\) и ИЛИ (\/). В качестве "логического" аккумулятора, участвующего во всех операциях с двумя операндами, выступает признак переноса С (разряд D7 PSW), в качестве операндов могут использоваться 128 бит из резидентной памяти данных и регистры специальных функций, допускающие адресацию отдельных бит.

Команды передачи управления

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

Таблица.1.20. Команды передачи управления

Мнемоника команды Код операции Количество байтов в команде Время выполнения, циклы Выполняемые действия
LJMP ad16 00000010 3 2 (PC) ad16
AJMP ad11 a10a9a800001 2 2 (PC) (PC) + 2, (PC0-10) ad11
SJMP rel 10000000 2 2 (PC) (PC) + 2, (PC) (PC) +rel
JMP @A+DPTR 01110011 1 2 (PC) (A) + (DPTR)
JZ rel 01100000 2 2 (PC)(PC)+2, если (A)=0, то (PC)(PC)+rel
JNZ rel 01110000 2 2 (PC)(PC)+2, если (A)≠0, то (PC)(PC)+rel
JC rel 01000000 2 2 (PC)(PC)+2, если (С)=1, то (PC)(PC)+rel
JNC rel 01010000 2 2 (PC)(PC)+2, если (С)=0, то (PC)(PC)+rel
JB bit, rel 00100000 3 2 (PC)(PC)+3, если (b)=l, то (PC)(PC)+rel
JNB bit, rel 00110000 3 2 (PC)(PC)+3, если (b)=0, то (PC)(PC)+rel
JBC bit, rel 00010000 3 2 (PC) (PC) + 3, если (b)=1, то (b) 0 и (PC) (PC) + rel
DJNZ Rn, rel 11011rrr 2 2 (PC) (PC) + 2, (Rn) (Rn) - 1, если (Rn) ≠ 0, то (PC) (PC) + rel
DJNZ ad, rel 11010101 3 2 (PC) (PC) + 2, (ad) (ad) - 1, если (ad) ≠ 0, то (PC) (PC) + rel
CJNE A, ad, rel 10110101 3 2 (PC) (PC) + 3,если (A) ≠ (ad), то (PC) (PC) + rel,если (A) < (ad), то (C) 1, иначе (C) 0
CJNE A, #d, rel 10110100 3 2 (PC) (PC) + 3,если (A) ≠ #d, то (PC) (PC) + rel,если (A) < #d, то (C) 1, иначе (С) 0
CJNE Rn, #d, rel 10111rrr 3 2 (PC) (PC) + 3,если (Rn) ≠ #d, то (PC) (PC) + rel,если (Rn) < #d, то (C) 1, иначе (С) 0
CJNE @Ri,#d,rel 1011011i 3 2 (PC) (PC) + 3,если ((Ri)) ≠ #d, то (PC) (PC) + rel,если ((Ri)) < #d, то (C) 1, иначе (C) 0
LCALL adl6 00010010 3 2 (PC) (PC) + 3, (SP) (SP) +1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC) ad16
ACALL ad11 a10a9a810001 2 2 (PC) (PC) + 2, (SP) (SP) + 1, ((SP)) (PC0…7), (SP) (SP) + 1, ((SP)) (PC8…15), (PC0-10) ad11
RET 00100010 1 2 (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1
RETI 00110010 1 2 (PC8…15) ((SP)), (SP) (SP) - 1, (PC0…7) ((SP)), (SP) (SP) – 1
NOP 00000000 1 1 (PC) (PC) + 1

Команда безусловного перехода LJMP (L – long – длинный) осуществляет переход по абсолютному 16-битному адресу, указанному в теле команды, т. е. команда обеспечивает переход в любую точку памяти программ.

Действие команды AJMP (А – absolute – абсолютный) аналогично команде LJMP, однако в теле команды указаны лишь 11 младших разрядов адреса. Поэтому переход осуществляется в пределах страницы размером 2 Кбайт, при этом надо иметь в виду, что сначала содержимое счетчика команд увеличивается на 2 и только потом заменяются 11 разрядов адреса.

В отличие от предыдущих команд, в команде SJMP (S – short – короткий) указан не абсолютный, а относительный адрес перехода. Величина смещения reI рассматривается как число со знаком, а, следовательно, переход возможен в пределах – 128...+127 байт относительно адреса команды, следующей за командой SJMP.

Команда косвенного перехода JMP @A+DPTR позволяет вычислять адрес перехода в процессе выполнения самой программы.

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

- JZ — аккумулятор содержит нулевое значение;

- JNZ — аккумулятор содержит не нулевое значение

- JC — бит переноса С установлен;

- JNC — бит переноса С не установлен;

- JB — прямо адресуемый бит равен 1

- JNB — прямо адресуемый бит равен 0;

- JBC — прямо адресуемый бит равен 1 и сбрасывается в нулевое значение при выполнении команды.

Все команды условного перехода содержат короткий относительный адрес, т. е. переход может осуществляться в пределах—128... +127 байт относительно следующей команды.







Последнее изменение этой страницы: 2016-12-30; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.232.125.29 (0.026 с.)