THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

Система команд ОМЭВМ предоставляет большие возможности обработки данных, обеспечивает реализацию логических, арифметических операций, а также управление в режиме реалиного времени. Реализована побитовая, потетрадная (4 бита), побайтовая (8 бит) и 16-разрядная обработка данных.

БИС семейства MCS-51 - 8-разрядная ОМЭВМ: ПЗУ, ОЗУ, регистры специального назначения, АЛУ и внешние шины имеют байтовую организацию. Двухбайтовые данные используются только регистром-указателем (DPTR) и счетчиком команд (РС). Следует отметить, что регистр-указатель данных может быть использован как двухбайтовый регистр DPTR или как два однобайтовых регистра специального назначения DPH и DPL. Счетчик команд всегда используется как двухбайтовый регистр.

Набор команд ОМЭВМ имеет 42 мнемонических обозначения команд для конкретизации 33 функций этой системы.

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

Систему команд условно можно разбить на пять групп:

Существуют следующие типы адресации операндов-источников:

  • Косвенно-регистровая адресация по сумме базового и индексного регистров

Таблица обозначений и символов, используемых в системе команд

Обозначение, символ Назначение
А Аккумулятор
Rn Регистры текущего выбранного банка регистров
r Номер загружаемого регистра, указанного в команде
direct Прямо адресуемый 8-битовый внутренний адрес ячейка данных, который может быть ячейкой внутреннего ОЗУ данных (0-127) или SFR (128-255)
@Rr Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных
data8 8-битовое непосредственное данное, входящее в КОП
dataH Старшие биты (15-8) непосредственных 16-битовых данных
dataL Младшие биты (7-0) непосредственных 16-битовых данных
addr11 11-битовый адрес назначения
addrL Младшие биты адреса назначения
disp8 8-битовый байт смещения со знаком
bit Бит с прямой адресацией, адрес которого содержит КОП, находящийся во внутреннем ОЗУ данных или SFR
a15, a14...a0 Биты адреса назначения
(Х) Содержимое элемента Х
((Х)) Содержимое по адресу, хранящемуся в элементе Х
(Х)[M] Разряд М элемента Х

+
-
*
AND
OR
XOR
/X
Операции:
сложения
вычитания
умножения
деления
логического умножения (операция И)
логического сложения (операция ИЛИ)
сложения по модулю 2 (исключающее ИЛИ)
инверсия элемента Х

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

Мнемоника Функция Флаги
Команда ACALL Абсолютный вызов подпрограммы
Сложение AC, C, OV
Сложение с переносом AC, C, OV
Команда AJMP Абсолютный переход
Логическое "И"
Логическое "И" для переменных-битов C
Сравнение и переход, если не равно C
Команда CLR A Сброс аккумулятора
Команда CLR Сброс бита C, bit
Команда CPL A Инверсия аккумулятора
Команда CPL Инверсия бита C, bit
Команда DA A Десятичная коррекция аккумулятора для сложения AC, C
Команда DEC <байт> Декремент
Команда DIV AB Деление C, OV
Команда DJNZ <байт>, <смещение> Декремент и переход, если не равно нулю
Команда INC <байт> Инкремент
Команда INC DPTR Инкремент указателя данных
Команда JB , Переход, если бит установлен
Команда JBC , Переход, если бит установлен и сброс этого бита
Команда JC Переход, если перенос установлен
Команда JMP @A+DPTR Косвенный переход
Команда JNB , Переход, если бит не установлен
Команда JNC Переход, если перенос не установлен
Команда JNZ Переход, если содержимое аккумулятора не равно нулю
Команда JZ Переход, если содержимое аккумулятора равно 0
Команда LCALL Длинный вызов
Команда LJMP Длинный переход
Переслать переменную-байт
Переслать бит данных C
Команда MOV DPTR,#data16 Загрузить указатель данных 16-битовой константой
Команда MOVC A,@A+() Переслать байт из памяти программ
Переслать во внешнюю память (из внешней памяти) данных

Архитектура семейства MCS-51 в значительной мере предопределяется ее назначением - построение компактных и дешевых цифровых устройств. Все функции микроЭВМ реализуются с помощью единственной микросхемы. В состав семейства MCS-51 входит целый ряд микросхем от самых простых микроконтроллеров до достаточно сложных. Микроконтроллеры семейства MCS-51 позволяют выполнять как задачи управления различными устройствами, так и реализовывать отдельные узлы аналоговой схемы. Все микросхемы этого семейства работают с одной и той же системой команд MCS-51 , большинство из них выполняется в одинаковых корпусах с совпадающей цоколевкой (нумерация ножек для корпуса). Это позволяет использовать для разработанного устройства микросхемы разных фирм - Maxim, Atmel, NXP и т.д. (catalog..php?page=components_list&id=39"> с.м. Поиск по параметрам) без переделки принципиальной схемы устройства и программы .

Рисунок 1. Структурная схема контроллера I8751

Структурная схема контроллера представлена на рисунке 1. и состоит из следующих основных функциональных узлов: блока управления, арифметико-логического устройства, блока таймеров/счетчиков, блока последовательного интерфейса и прерываний, программного счетчика, памяти данных и памяти программ. Двусторонний обмен осуществляется с помощью внутренней 8-разрядной магистрали данных.

Рассмотрим подробнее назначение каждого блока. По такой схеме построены практически все представители семейства MCS-51 . Различные микросхемы этого семейства различаются только регистрами специального назначения (в том числе и количеством портов). Система команд всех контроллеров семейства MCS-51 содержит 111 базовых команд с форматом 1, 2 или 3 байта и не изменяется при переходе от одной микросхемы к другой. Это обеспечивает прекрасную переносимость программ с одной микросхемы на другую.

Блок управления и синхронизации

Блок управления и синхронизации (Timing and Control) предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков ОЭВМ во всех допустимых режимах ее работы.В состав блока управления входят:

  • - устройство формирования временных интервалов,
  • - логика ввода-вывода,
  • - регистр команд,
  • - регистр управления потреблением электроэнергии,
  • - дешифратор команд, логика управления ЭВМ.

Устройство формирования временных интервалов предназначено для формирования и выдачи внутренних синхросигналов фаз, тактов и циклов. Количество машинных циклов определяет продолжительность выполнения команд. Практически все команды ОЭВМ выполняются за один или два машинных цикла, кроме команд умножения и деления, продолжительность выполнения которых составляет четыре машинных цикла. Обозначим частоту задающего генератора через F г. Тогда длительность машинного цикла равна 12/F г или составляет 12 периодов сигнала задающего генератора. Логика ввода - вывода предназначена для приема и выдачи сигналов, обеспечивающих обмен информации с внешними устройствами через порты ввода вывода Р0-Р3.

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

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

Арифметико-логическое устройство (ALU) представляет собой параллельное восьмиразрядное устройство, обеспечивающее выполнение арифметических и логических операций. АЛУ состоит из:

  • - регистров аккумулятора, регистров временного хранения TMP1 и TMP2,
  • - ПЗУ констант,
  • - сумматора,
  • - дополнительного регистра (регистра В),
  • - аккумулятора (ACC),
  • - регистра состояния программ (PSW).

Регистр аккумулятор и регистры временного хранения - восьмиразрядные регистры, предназначенные для приема и хранения операндов на время выполнения операций над ними. Эти регистры программно не доступны.

ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при битовых операциях и кода констант.

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

Регистр B - восьмиразрядный регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр.

Аккумулятор - восьмиразрядный регистр, предназначенный для приема и хранения результата, полученного при выполнении арифметико-логических операций или операций сдвига

Блок последовательного интерфейса и прерываний (ПИП) предназначен для организации ввода-вывода последовательных потоков информации и организации системы прерывания программ. В состав блока входят:

  1. - буфер ПИП,
  2. - логика управления,
  3. - регистр управления,
  4. - буфер передатчика,
  5. - буфер приемника,
  6. - приемопередатчик последовательного порта,
  7. - регистр приоритетов прерываний,
  8. - регистр разрешения прерываний,
  9. - логика обработки флагов прерываний и схема выработки вектора.

Счетчик команд (Program Counter) предназначен для формирования текущего 16-разрядного адреса внутренней памяти программ и 8/16-разрядного адреса внешней памяти программ. В состав счетчика команд входят 16-разрядные буфер РС, регистр РС и схема инкремента (увеличения содержимого на 1).

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

Порты P0, P1, P2, P3 являются квазидвунаправленными портами ввода - вывода и предназначены для обеспечения обмена информацией ОЭВМ с внешними устройствами, образуя 32 линии ввода- вывода.

Устройство таймеров В базовых моделях семейства имеются два программируемых 16-битных таймера/счетчика (T/C0 и T/C1), которые могут быть использованы как в качестве таймеров, так и в качестве счетчиков внешних событий

Регистр состояния программы (PSW) предназначен для хранения информации о состоянии АЛУ при выполнении программы.

Память программ (EPROM) предназначена для хранения программ и представляет собой постоянное запоминающее устройство (ПЗУ). В разных микросхемах применяются масочные ПЗУ, стираемые ультрафиолетовым излучением или FLASH ПЗУ.

Регистр указателя данных (DPTR) предназначен для хранения 16-разрядного адреса внешней памяти данных или памяти программ.

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



Архитектура микроконтроллеров

Понимание архитектуры микроконтроллеров является ключевым при изучении языков программирования типа ассемблер. Структура ассемблера, формат его команд, адресация операндов и т. д. полностью определяются архитектурой. Целью изучения архитектуры является:

· выявление набора доступных для программирования регистров, их функционального назначения и структуры;

· понимание организации оперативной памяти и порядка ее использования;

· знакомство с типами данных;

· изучение формата машинных команд;

· выяснение организации обработки прерываний.

Архитектура семейства MCS-51 в значительной мере предопределяется ее назначением - построение компактных и дешевых цифровых устройств. Все функции МК реализуются с помощью единственной микросхемы. В состав семейства MCS-51 входит целый ряд микросхем от самых простых микроконтроллеров до достаточно сложных. Микроконтроллеры семейства MCS-51 позволяют выполнять как задачи управления различными устройствами, так и реализовывать отдельные узлы аналоговой схемы. Все микросхемы этого семейства работают с одной и той же системой команд, большинство из них выполняется в одинаковых корпусах с совпадающей цоколевкой (нумерация выводов для корпуса). Это позволяет использовать для разработанного устройства микросхемы разных фирм - производителей (таких какIntel, Dallas, Atmel, Philips и т.д.) без переделки принципиальной схемы устройства и программы.

MCS-51 выполнен по Гарвардской архитектуре, где адресные пространства памяти программ и данных разделены.

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

Двусторонний обмен осуществляется с помощью внутренней 8-разрядной магистрали данных. Рассмотрим подробнее назначение каждого блока. По такой схеме построены практически все представители семейства MCS-51. Различные микросхемы этого семейства различаются только регистрами специального назначения (в том числе и количеством портов). Система команд всех контроллеров семейства MCS-51 содержит 111 базовых команд с форматом 1, 2 или 3 байта и не изменяется при переходе от одной микросхемы к другой. Это обеспечивает прекрасную переносимость программ с одной микросхемы на другую.

Блок управления и синхронизации (Timing and Control) предназначен для выработки синхронизирующих и управляющих сигналов, обеспечивающих координацию совместной работы блоков ОЭВМ во всех допустимых режимах ее работы. В состав блока управления входят:


  • устройство формирования временных интервалов,
  • комбинационная схема ввода-вывода,
  • регистр команд,
  • дешифратор команд.

Входные и выходные сигналы блока управления и синхронизации :

1 PSEN – разрешение программной памяти;

2 ALE – выходной сигнал разрешения фиксации адреса;

3 PROG – сигнал программирования;

4 EA – блокировка работы с внутренней памятью;

5 VPP – напряжение программирования;

6 RST – сигнал общего сброса.

Устройство формирования временных интервалов необходимо для синхронизации последовательности состояний ЦП, образующих машинный цикл, а также для правильной работы всех внутреннихзащелок и выходных буферов портов. Машинный цикл состоит из шести последовательныхсостояний (States) от S1 до S6, каждое из которых, в свою очередь, подразделяется на две фазы:

фазу 1 (Phase 1 - P1) и фазу 2 (Phase 2 - P2). Таким образом, машинный цикл может быть определен как последовательность временных интервалов S1P1, S1P2, S2P1,....,S6P2. Длительность фазы равна периоду следования тактовых импульсов, поэтому машинный цикл занимает 12 тактовых периодов.

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

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

Рис 2.3. Структурная схема однокристального микроконтроллера Intel 8051

(семейство MCS-51)

Арифметико-логическое устройство (ALU) представляет собой параллельное восьмиразрядное устройство, обеспечивающее выполнение арифметических и логических операций. АЛУ состоит из:

  • регистров временного хранения -TMP1 и TMP2,
  • ПЗУ констант,
  • сумматора,
  • дополнительного регистра - регистра В,
  • аккумулятора - ACC,
  • регистра слова состояния программ (регистр флагов)- PSW .

Регистры временного хранения TMP1, TMP2 - восьмиразрядные регистры, предназначенные для приема и хранения операндов на время выполнения операций над ними. Эти регистры программно не доступны.

ПЗУ констант обеспечивает выработку корректирующего кода при двоично-десятичном представлении данных, кода маски при битовых операциях и кода констант.

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

Регистр B - восьмиразрядный регистр, используемый во время операций умножения и деления. Для других инструкций он может рассматриваться как дополнительный сверхоперативный регистр.

Аккумулятор - восьмиразрядный регистр, предназначенный для приема и хранения результата, полученного при выполнении арифметико-логических операций или операций сдвига.

Регистр состояния программ PSW (Programm Status Word) предназначен для хранения слова состояния выполняемых команд. При выполнении многих команд в ALU формируется ряд признаков операции (флагов), которые фиксируются в регистре слова состояния программы (PSW). В табл. 1 приводится перечень флагов PSW, даются их символические имена и описываются условия их формирования.

Блок прерываний и последовательного интерфейса - UART(Universal Asynchronous Receiver/Transmitter) предназначен для организации ввода - вывода последовательных потоков информации и организации системы прерывания программ.

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

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

АРХИТЕКТУРА МИКРОКОНТРОЛЛЕРОВ СЕМЕЙСТВА MCS -51

Конспект лекций по курсам

«Микропроцессоры в системах контроля», «Микропроцессорная техника»

«Микропроцессорные средства и системы»

для студентов всех форм обучения специальностей

072000 – Стандартизация и сертификация

210200 – Автоматизация технологических процессов

230104 – Системы автоматизированного проектирования

Тамбов 2005

ВВЕДЕНИЕ.. 3

1. СТРУКТУРА МИКРОКОНТРОЛЛЕРА INTEL 8051. 3

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

1.2. Арифметико-логическое устройство. 6

1.3. Резидентная память программ и данных. 7

1.4. Аккумулятор и регистры общего назначения. 8

1.5. Регистр слова состояния программы и его флаги. 9

1.6. Регистры-указатели. 10

1.7. Регистры специальных функций. 11

1.8. Устройство управления и синхронизации. 11

1.9. Параллельные порты ввода/вывода информации. 12

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

1.11. Последовательный порт. 18

1.11.1. Регистр SBUF.. 18

1.11.2. Режимы работы последовательного порта. 18

1.11.3. Регистр SCON.. 19

1.11.4. Скорость приёма/передачи. 21

1.12. Система прерываний. 22

2. СИСТЕМА КОМАНД МИКРОКОНТРОЛЛЕРА INTEL 8051. 26

2.1. Общие сведения. 26

2.1.1. Типы команд. 27

2.1.2. Типы операндов. 28

2.1.3. Способы адресации данных. 30

2.1.4. Флаги результата. 31

2.1.5. Символическая адресация. 32

2.2. Команды передачи данных. 33

2.2.1. Структура информационных связей. 33

2.2.2. Обращение к аккумулятору. 33

2.2.3. Обращение к внешней памяти данных. 34

2.2.4. Обращение к памяти программ.. 34


2.2.5. Обращение к стеку. 35

2.3. Арифметические операции. 35

2.4. Логические операции. 39

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

2.5.1. Длинный переход. 43

2.5.2. Абсолютный переход. 43

2.5.3. Относительный переход. 44

2.5.4. Косвенный переход. 44

2.5.5. Условные переходы.. 44

2.5.6. Подпрограммы.. 47

2.6. Операции с битами. 48

Контрольные вопросы... 49

ЛИТЕРАТУРА.. 50

Приложение СИСТЕМА КОМАНД INTEL 8051. 51

ВВЕДЕНИЕ

С 80-х годов 20 века в микропроцессорной технике выделился самостоятельный класс интегральных схем – однокристальные микроконтроллеры, которые предназначены для встраивания в приборы различного назначения. От класса однокристальных микропроцессоров их отличает наличие внутренней памяти, развитые средства взаимодействия с внешними устройствами.

Широкое распространение получили 8-разрядных однокристальные микроконтроллеры семейства MCS-51. Это семейство образовалось на основе микроконтроллера Intel 8051, получившего большую популярность у разработчиков микропроцессорных систем контроля благодаря удачно спроектированной архитектуры. Архитектура микроконтроллера это совокупность внутренних и внешних программно доступных аппаратных ресурсов и системы команд.

В последствии фирма Intel выпустила около 50 моделей на базе операционного ядра микроконтроллера Intel 8051. Одновременно многие другие фирмы, такие как Atmel, Philips начали производство своих микроконтроллеров разработанных в стандарте MCS-51. Существует также и отечественный аналог микроконтроллера Intel 8051 - микросхема К1816ВЕ51.

2. СТРУКТУРА МИКРОКОНТРОЛЛЕРА INTEL 8051

Микроконтроллер Intel 8051 выполнен на основе высокоуровневой n-МОП технологии. Его основные характеристики следующие:

· восьмиразрядный центральный процессор, оптимизированный для реализации функций управления;

· встроенный тактовый генератор (максимальная частота 12 МГц);

· адресное пространство памяти программ - 64 Кбайт;

· адресное пространство памяти данных - 64 Кбайт;

· внутренняя память программ - 4 Кбайт;

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

· дополнительные возможности по выполнению операций булевой алгебры (побитовые операции);

· 2 шестнадцатиразрядных многофункциональных таймера/счетчика;

· полнодуплексный асинхронный приемопередатчик (последовательный порт);

· векторная система прерываний с двумя уровнями приоритета и пятью источниками событий.

Рисунок 1 - Структурная схема микроконтроллера Intel 8051

Основу структурной схемы (рис. 1) образует внутренняя двунаправленная 8-разрядная шина, которая связывает между собой основные узлы и устройства микроконтроллера: резидентную память программ (RPM), резидентную память данных (RDM), арифметико-логическое устройство (ALU), блок регистров специальных функций, устройство управления (CU), параллельные порты ввода/вывода (P0-P3), а также программируемые таймеры и последовательный порт.

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

Данный микроконтроллер имеет встроенную (резидентную) и внешнюю память программ и данных. Резидентная память программ (RPM) имеет объем 4 Кбайт, резидентная память данных (RDM) – 128 Байт.


В зависимости от модификации микроконтроллера RPM выполняется в виде масочного ПЗУ, однократно программируемого либо репрограммируемого ПЗУ.

При необходимости пользователь может расширять память программ установкой внешнего ПЗУ. Доступ к внутреннему или внешнему ПЗУ определяется значением сигнала на выводе ЕА (External Access):

EA=VCC (напряжение питания) - доступ к внутреннему ПЗУ;

EA=VSS (потенциал земли) - доступ к внешнему ПЗУ.

Внешняя память программ и данных может составлять по 64 Кбайт и адресоваться с помощью портов P0 и P2. На рис.2 представлена карта памяти Intel 8051.

Рисунок 2 - Организация памяти Intel 8051

Строб чтения внешнего ПЗУ - (Program Store Enable) генерируется при обращении к внешней памяти программ и является неактивным во время обращения к ПЗУ, расположенному на кристалле.

Область нижних адресов памяти программ (рис. 3) используется системой прерываний. Архитектура микросхемы INTEL 8051 обеспечивает поддержку пяти источников прерываний. Адреса, по которым передается управление по прерыванию, называются векторами прерывания.

Рисунок 3 - Карта нижней области программной памяти

2.2. Арифметико-логическое устройство

8-битное арифметико-логическое устройство (ALU) может выполнять арифметические операции сложения, вычитания, умножения и деления; логические операции И, ИЛИ, исключающее ИЛИ, а также операции циклического сдвига, сброса, инвертирования и т. п. К входам подключены программно-недоступные регистры T1 и T2, предназначенные для временного хранения операндов, схема десятичной коррекции (DCU) и схема формирования признаков результата операции (PSW).

Простейшая операция сложения используется в ALU для инкрементирования содержимого регистров, продвижения регистра-указателя данных (RAR) и автоматического вычисления следующего адреса резидентной памяти программ. Простейшая операция вычитания используется в ALU для декрементирования регистров и сравнения переменных.

Простейшие операции автоматически образуют “тандемы” для выполнения таких операций, как, например, инкрементирование 16-битных регистровых пар. В ALU реализуется механизм каскадного выполнения простейших операций для реализации сложных команд. Так, например, при выполнении одной из команд условной передачи управления по результату сравнения в ALU трижды инкрементируется счётчик команд (PC), дважды производится чтение из RDM, выполняется арифметическое сравнение двух переменных, формируется 16-битный адрес перехода и принимается решение о том, делать или не делать переход по программе. Все перечисленные операции выполняются всего лишь за 2 мкс.

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

Таким образом, ALU может оперировать четырьмя типами информационных объектов: булевыми (1 бит), цифровыми (4 бита), байтными (8 бит) и адресными (16 бит). В ALU выполняется 51 различная операция пересылки или преобразования этих данных. Так как используется 11 режимов адресации (7 для данных и 4 для адресов), то путем комбинирования операции и режима адресации базовое число команд 111 расширяется до 255 из 256 возможных при однобайтном коде операции.

2.3. Резидентная память программ и данных

Резидентные (размещённые на кристалле) память программ (RPM) и память данных (RDM) физически и логически разделены, имеют различные механизмы адресации, работают под управлением различных сигналов и выполняют разные функции.

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

Память данных RDM предназначена для хранения переменных в процессе выполнения прикладной программы, адресуется одним байтом и имеет емкость
128 байт. Кроме того, к её адресному пространству примыкают адреса регистров специальных функций, которые перечислены в табл. 1.

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

Таблица 1

Блок регистров специальных функций

Наименование

Аккумулятор

Регистр-расширитель аккумулятора

Слово состояния программы

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

Регистр-указатель данных

Регистр приоритетов прерываний

Регистр маски прерываний

Регистр режима таймера/счётчика

Регистр управления/статуса таймера

Таймер 0 (старший байт)

Таймер 0 (младший байт)

Таймер 1 (старший байт)

Таймер 1 (младший байт)

Регистр управления приёмопередатчиком

Буфер приёмопередатчика

Регистр управления мощностью

Примечание. Регистры, имена которых отмечены знаком (*), допускают адресацию отдельных битов.

2.4. Аккумулятор и регистры общего назначения

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

В распоряжении пользователя имеется четыре банка по 8 регистров общего назначения R0–R7 (рис. 9). Однако возможно использование регистров только одного из четырёх банков, который выбирается с помощью бит регистра PSW.

2.5. Регистр слова состояния программы и его флаги

При выполнении многих команд в ALU формируется ряд признаков операции (флагов), которые фиксируются в регистре слова состояния программы (PSW). В табл. 2 приводится перечень флагов PSW, даются их символические имена и описываются условия их формирования.

Таблица 2

Формат слова состояния программы PSW

Имя и назначение

Флаг переноса. Устанавливается и сбрасывается аппаратно или программно при выполнении арифметических и логических операций

Флаг вспомогательного переноса. Устанавливается и сбрасывается только аппаратно при выполнении команд сложения и вычитания и сигнализирует о переносе или займе в бите 3

Флаг 0. Может быть установлен, сброшен или проверен программой как флаг, специфицируемый пользователем

Выбор банка регистров. Устанавливается и сбрасывается программно для выбора рабочего банка регистров (табл. 3)

Флаг переполнения. Устанавливается и сбрасывается аппаратно при выполнении арифметических операций

Не используется

Флаг паритета. Устанавливается и сбрасывается аппаратно в каждом цикле и фиксирует нечётное/чётное число единичных битов в аккумуляторе, т. е. выполняет контроль по четности

Таблица 3

Выбор рабочего банка регистров

Границы адресов

Наиболее “активным” флагом PSW является флаг переноса, который принимает участие и модифицируется в процессе выполнения множества операций, включая сложение, вычитание и сдвиги. Кроме того, флаг переноса (CY) выполняет функции “булева аккумулятора” в командах, манипулирующих с битами. Флаг переполнения (OV) фиксирует арифметическое переполнение при операциях над целыми числами со знаком и делает возможным использование арифметики в дополнительных кодах. ALU не управляет флагами селекции банка регистров (RS0, RS1), их значение полностью определяется прикладной программой и используется для выбора одного из четырёх регистровых банков.

В виде байта регистр PSW может быть представлен следующим образом:

В микропроцессорах, архитектура которых опирается на аккумулятор, большинство команд работают с ним, используя неявную адресацию. В Intel 8051 дело обстоит иначе. Хотя процессор имеет в своей основе аккумулятор, он может выполнять множество команд и без его участия. Например, данные могут быть переданы из любой ячейки RDM в любой регистр, любой регистр может быть загружен непосредственным операндом и т. д. Многие логические операции могут быть выполнены без участия аккумулятора. Кроме того, переменные могут быть инкрементированы, декрементированы и проверены без использования аккумулятора. Флаги и управляющие биты могут быть проверены и изменены аналогично.

2.6. Регистры-указатели

8-битный указатель стека (SP) может адресовать любую область RDM. Его содержимое инкрементируется прежде, чем данные будут запомнены в стеке в ходе выполнения команд PUSH и CALL. Содержимое SP декрементируется после выполнения команд POP и RET. Подобный способ адресации элементов стека называют прединкрементным/постдекрементным. В процессе инициализации микроконтроллера после сигнала RST в SP автоматически загружается код 07Н. Это значит, что если прикладная программа не переопределяет стек, то первый элемент данных в стеке будет располагаться в ячейке RDM с адресом 08Н.

Двухбайтный регистр-указатель данных DPTR обычно используется для фиксации 16-битного адреса в операциях с обращением к внешней памяти. Командами микроконтроллера регистр-указатель данных может быть использован или как 16-битный регистр, или как два независимых 8-битных регистра (DPH и DPL).

2.7. Регистры специальных функций

Регистры с символическими именами IP, IE, TMOD, TCON, SCON и PCON используются для фиксации и программного изменения управляющих бит и бит состояния схемы прерывания, таймера/счётчика, приёмопередатчика последовательного порта и для управления энергопотреблением. Подробно их организация будет описана в разделах 1.8-1.12, при рассмотрении особенностей работы микроконтроллера в различных режимах.

2.8. Устройство управления и синхронизации

Кварцевый резонатор, подключаемый к внешним выводам микроконтроллера, управляет работой внутреннего генератора, который в свою очередь формирует сигналы синхронизации. Устройство управления (CU) на основе сигналов синхронизации формирует машинный цикл фиксированной длительности, равной 12 периодам генератора. Большинство команд микроконтроллера выполняется за один машинный цикл. Некоторые команды, оперирующие с 2-байтными словами или связанные с обращением к внешней памяти, выполняются за два машинных цикла. Только команды деления и умножения требуют четырех машинных циклов. На основе этих особенностей работы устройства управления производится расчёт времени исполнения прикладных программ.

На схеме микроконтроллера к устройству управления примыкает регистр команд (IR). В его функцию входит хранение кода выполняемой команды.

Входные и выходные сигналы устройства управления и синхронизации:

1. PSEN – разрешение программной памяти,

2. ALE – выходной сигнал разрешения фиксации адреса,

3. PROG – сигнал программирования,

4. EA – блокировка работы с внутренней памятью,

5. VPP – напряжение программирования,

6. RST – сигнал общего сброса,

7. VPD – вывод резервного питания памяти от внешнего источника,

8. XTAL – входы подключения кварцевого резонатора.

2.9. Параллельные порты ввода/вывода информации

Все четыре порта (P0-P3) предназначены для ввода или вывода информации побайтно. Каждый порт содержит управляемые регистр-защёлку, входной буфер и выходной драйвер.

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

Все выводы порта P3 могут быть использованы для реализации альтернативных функций, перечисленных в табл. 4. Эти функции могут быть задействованы путем записи 1 в соответствующие биты регистра-защёлки (P3.0-P3.7) порта P3.

Таблица 4

Альтернативные функции порта P3

Имя и назначение

Чтение. Активный сигнал низкого уровня формируется аппаратно при обращении к внешней памяти данных

Запись. Активный сигнал низкого уровня формируется аппаратно при обращении к внешней памяти данных

Вход таймера/счётчика 1 или тест-вход

Вход таймера/счётчика 0 или тест-вход

Вход запроса прерывания 1. Воспринимается сигнал низкого уровня или срез

Вход запроса прерывания 0. Воспринимается сигнал низкого уровня или срез

Выход передатчика последовательного порта в режиме UART. Выход синхронизации в режиме регистра сдвига

Вход приёмника последовательного порта в режиме UART. Ввод/вывод данных в режиме регистра сдвига

Порт 0 является двунаправленным, а порты 1-3 - квазидвунаправленными. Каждая линия портов может быть использована независимо для ввода или вывода.

По сигналу RST в регистры-защёлки всех портов автоматически записываются единицы, настраивающие их тем самым на режим ввода.

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

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

ПЛАН ЛЕКЦИИ

1. Введение

2. Арифметические и логические инструкции

3. Команды передачи данных

4. Булевы операции

5. Инструкции переходов

1. Введение

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

Режимы адресации : набор команд MCS-51 поддерживает следующие режимы адресации. Прямая адресация : операнд определяется 8-битовым адресом в инструкции. Прямая адресация используется только для младшей половины внутренней памяти данных и регистров SFR . Косвенная адресация : инструкция адресует регистр, содержащий адрес операнда. Данный вид адресации используется для внешнего и внутреннего ОЗУ. Для указания 8-битовых адресов могут использоваться регистры R0 и R1 выбранного регистрового банка или указатель стека SP . Для 16-битовой адресации используется только регистр указателя данных DPTR .

Регистровые инструкции : регистры R0–R7 текущего регистрового банка могут быть адресованы через конкретные инструкции, содержащие 3-битовое поле, указывающее номер регистра в самой инструкции. В этом случае соответствующее поле адреса в команде отсутствует. Операции с использованием специальных регистров : некоторые инструкции используют индивидуальные регистры (например, операции с аккумулятором, DPTR , и т. д.). В данном случае адрес операнда вообще не указывается в команде. Он предопределяется кодом операции.

Непосредственные константы : константа может находиться прямо в команде за кодом операции.

Индексная адресация : индексная адресация может использоваться только для доступа к программной памяти и только в режиме чтения. В этом режиме осуществляется просмотр таблиц в памяти программ. 16-битовый регистр (DPTR или программный счетчик) указывает базовый адрес требуемой таблицы, а аккумулятор указывает на точку входа в нее.

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

Систему команд условно можно разбить на пять групп: арифметические команды; логические команды; команды передачи данных; команды битового процессора; команды ветвления и передачи управления. Обозначения и символы, используемые в системе команд, приведены далее.

Таблица. Обозначения и символы, используемые в системе команд

Обозначение, символ

Назначение

Аккумулятор

Регистры текущего выбранного банка регистров

Номер загружаемого регистра, указанного в команде

direct

Прямо адресуемый 8-битовый внутренний адрес ячейки данных, который может быть ячейкой внутреннего ОЗУ данных (0–127) или регистром специальных функций SFR (128–255)

Косвенно адресуемая 8-битовая ячейка внутреннего ОЗУ данных

8-битовое непосредственное данное, входящее в код операции (КОП)

dataH

Старшие биты (15–8) непосредственных 16-битовых данных

dataL

Младшие биты (7­–0) непосредственных 16-битовых данных

11-битовый адрес назначения

addrL

Младшие биты адреса назначения

8-битовый байт смещения со знаком

Бит с прямой адресацией, адрес которого содержит КОП, находящийся во внутреннем ОЗУ данных или регистре специальных функций SFR

a15, a14...a0

Биты адреса назначения

Содержимое элемента Х

Содержимое по адресу, хранящемуся в элементе Х

Разряд М элемента Х


+

*
AND
OR
XOR
/X

Операции:
сложения
вычитания
умножения
деления
логического умножения (операция И)
логического сложения (операция ИЛИ)
сложения по модулю 2 (исключающее ИЛИ)
инверсия элемента Х

Мнемонические обозначения функций однозначно связаны с конкретными комбинациями способов адресации и типами данных. Всего в системе команд возможно 111 таких сочетаний.

2. Арифметические и логические инструкции

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

ADD A ,7 F 16 – прибавить к содержимому регистра А число 7 F 16 и результат сохранить в регистре А;

ADD A ,@ R 0 – прибавить к содержимому регистра А число, адрес которого (@ – commercial at ) хранится в регистре R 0 (косвенная адресация), и результат сохранить в регистре А;

ADD A,R7 – прибавить к содержимому регистра А содержимое регистра R 7 и результат сохранить в регистре А;

ADD A,#127 – прибавить к содержимому регистра А число, адрес ячейки хранения которого 127 (# – символ номера), и результат сохранить в регист ­- ре А.

Все арифметические инструкции выполняются за один машинный цикл за исключением команды INC DPTR (смещение указателя данных DPTR на следующий байт), требующей два машинных цикла, а также операций умножения и деления, выполняемых за 4 машинных цикла. Любой байт во внутренней памяти данных может быть инкрементирован и декрементирован без использования аккумулятора.

Инструкция MUL AB производит умножение (multiplication – умножение) данных в аккумуляторе на данные, находящиеся в регистре B, помещая произведение в регистры A (младшая половина) и B (старшая половина).

Инструкция DIV AB делит (division – деление) содержимое аккумулятора на значение в регистре B, оставляя остаток в B, а частное – в аккумуляторе.

Инструкция DA A предназначена для двоично-десятичных арифметических операций (арифметические операции над числами, представленными в двоично-десятичном коде). Она не делает преобразования двоичного числа в двоично-десятичное , а лишь обеспечивает правильный результат при сложении двух двоично-десятичных чисел.

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

ANL A ,7 F 16 – логическое умножение содержимого регистра А на число 7 F 16 и результат сохраняется в регистре А;

ANL A ,@ R 1 – логическое умножение содержимого регистра А на число, адрес которого хранится в регистре R 1 (косвенная адресация), и результат сохранить в регистре А;

ANL A,R6 – логическое умножение содержимого регистра А на содержимое регистра R 6, и результат сохранить в регистре А;

ANL A,#53 – логическое умножение содержимого регистра А на число, адрес ячейки хранения которого 53 16 , и результат сохранить в регистре А.

Все логические операции над содержимым аккумулятора выполняются за один машинный цикл, остальные – за два. Логические операции могут производиться над любым из нижних 128 байтов внутренней памяти данных или над любым регистром SFR (регистров специальных функций) в режиме прямой адресации без использования аккумулятора.

Операции циклического сдвига RL A, RLC A и т. д. перемещают содержимое аккумулятора на один бит вправо или влево. В случае левого циклического сдвига младший бит перемещается в старшую позицию. В случае правого циклического сдвига происходит обратное .

Операция SWAP A осуществляет обмен младшей и старшей тетрад в аккумуляторе.

3. Команды передачи данных

Команда MOV dest,src позволяет пересылать данные между ячейками внутреннего ОЗУ или областью регистров специальных функций SFR без использования аккумулятора. При этом работа с верхней половиной внутреннего ОЗУ может осуществляться только в режиме косвенной адресации, а обращение к регистрам SFR – только в режиме прямой адресации.

Во всех микросхемах MCS-51 стек размещается непосредственно в резидентной памяти данных и увеличивается вверх. Инструкция PUSH вначале увеличивает значение в регистре указателя стека SP , а затем записывает в стек байт данных. Команды PUSH и POP используются только в режиме прямой адресации (записывая или восстанавливая байт), но стек является всегда доступным при косвенной адресации через регистр SP . Таким образом, стек может использовать и верхние 128 байт памяти данных. Эти же соображения исключают возможность использования стековых команд для адресации регистров SFR .

Инструкции передачи данных включают в себя 16-битовую операцию пересылки MOV DPTR,#data16 , которая используется для инициализации регистра указателя данных DPTR при просмотре таблиц в программной памяти или для доступа к внешней памяти данных.

Операция XCH A,byte применяется для обмена данными между аккумулятором и адресуемым байтом. Команда XCHD A,@Ri аналогична предыдущей , но выполняется только для младших тетрад , участвующих в обмене операндов.

Для доступа к внешней памяти данных используется только косвенная адресация. В случае однобайтных адресов используются регистры R0 или R1 текущего регистрового банка, а для 16-разрядных – регистр указателя данных DPTR . При любом методе доступа к внешней памяти данных аккумулятор играет роль источника либо приемника информации.

Для доступа к таблицам, размещённым в программной памяти, используются команды:

MOVC A,@A+DPTR ;

MOVC A,@A+PC .

В качестве базового адреса таблицы используется содержимое соответственно регистра указателя данных DPTR или PC (программного счётчика), а смещение берется из A . Эти команды используются исключительно для чтения данных из программной памяти, но не для записи в нее.

4. Булевы операции

Микросхемы MCS-51 содержат в своем составе «булевый» процессор. Внутреннее ОЗУ имеет 128 прямо адресуемых бит. Пространство регистров специальных функций SFR может также поддерживать до 128 битовых полей. Битовые инструкции осуществляют условные переходы, пересылки, сброс, инверсии, операции «И» и «ИЛИ». Все указанные биты доступны в режиме прямой адресации.

Бит переноса CF в регистре специальных функций «слово состояния программы PSW » используется как однобитный аккумулятор булевого процессора.

5. Инструкции переходов

Адреса операций переходов обозначаются на языке ассемблера меткой либо реальным значением в пространстве памяти программ. Адреса условных переходов ассемблируются в относительное смещение – знаковый байт, прибавляемый к программному счетчику PC в случае выполнения условия перехода. Границы таких переходов лежат в пределах между минус 128 и 127 относительно первого байта, следующего за инструкцией. В регистре специальных функций «слово состояния программы PSW » отсутствует флажок нуля, поэтому инструкции JZ и JNZ проверяют условие «равно нулю» как тестирование данных в аккумуляторе.

Существует три вида команды безусловного перехода: SJMP , LJMP и AJMP – различающиеся форматом адреса назначения. Инструкция SJMP кодирует адрес как относительное смещение, и занимает два байта. Дальность перехода ограничена диапазоном от минус 128 до 127 байт относительно инструкции, следующей за SJMP .

В инструкции LJMP используется адрес назначения в виде 16-битной константы. Длина команды составляет три байта. Адрес назначения может располагаться в любом месте памяти программ.

Команда AJMP использует 11-битную константу адреса. Команда состоит из двух байт. При выполнении этой инструкции младшие 11 бит адресного счетчика замещаются 11-битным адресом из команды. Пять старших бит программного счетчика PC остаются неизменными. Таким образом, переход может производиться внутри 2К-байтного блока, в котором располагается инструкция, следующая за командой AJMP .

Существует два вида команды вызовы подпрограммы: LCALL и ACALL . Инструкция LCALL использует 16-битный адрес вызываемой подпрограммы. В данном случае подпрограмма может быть расположена в любом месте памяти программ. Инструкция ACALL использует 11-битный адрес подпрограммы. В этом случае вызываемая подпрограмма должна быть расположена в одном 2К-байтном блоке с инструкцией, следующей за ACALL . Оба варианта команды кладут на стек адрес следующей команды и загружают в программный счетчик PC соответствующее новое значение.

Подпрограмма завершается инструкцией RET , позволяющей вернуться на инструкцию, следующую за командой CALL . Эта инструкция снимает со стека адрес возврата и загружает его в программный счетчик PC . Инструкция RETI используется для возврата из подпрограмм обработки прерываний. Единственное отличие RETI от RET состоит в том, что RETI информирует систему о том, что обработка прерывания завершилась. Если в момент выполнения RETI нет других прерываний, то она идентична RET .

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

Команда CJNE сравнивает два своих операнда как беззнаковые целые и производит переход по указанному в ней адресу, если сравниваемые операнды не равны. Если первый операнд меньше, чем второй, то бит переноса CF устанавливается в «1».

Все команды в ассемблированном виде занимают 1, 2 или 3 байта.

THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама