- •Микропроцессоры в системах автоматического управления.
- •Структура микропроцессора i8080. Принцип работы.
- •Основные понятия системы прерываний. Обработка запросов прерываний i8080.
- •Архитектура микроконтроллера мк-51. Алу, организация памяти и устройства управления. Совмещение адресного пространства памяти данных и программ.
- •5. Архитектура микроконтроллера мк-51. Порты ввода/вывода.
- •6. Архитектура микроконтроллера мк-51. Таймер/счётчик.
- •7. Архитектура микроконтроллера мк-51.Последовательный интерфейс.
- •Система команд
- •4.4.1 Общая характеристика
- •4.4.2 Типы команд
- •4.4.3 Типы операндов
- •4.4.4 Группы команд
- •4.4.5 Oбозначения, используемые при описании команд
- •Система прерываний мк-51.??
- •8. Архитектура микроконтроллера мк-51. Система прерываний.??
- •9. Режимы работы мк-51.
- •Система команд мк-51. Способы адресации в мк-51.
- •Система команд мк-51. Команды передачи данных.
- •Система команд мк-51. Команды арифметических операций.
- •13. Команды логических операций микроконтроллера 8051
- •Система команд мк-51. Команды операций с битами.
- •Система команд мк-51. Команды передачи управления.
- •Программирование на языке Ассемблера. Директивы резервирования памяти.
- •Программирование на языке Ассемблера. Использование подпрограмм – процедур и подпрограмм – функций.
- •5.7.1 Реализация подпрограмм-процедур на языке asm51.
- •5.7.2 Передача переменных-параметров в подпрограмму.
- •5.7.3 Реализация подпрограмм-функций на языке asm51.
- •Организация циклов и ветвлений. Ветвление
- •Программирование на языке Ассемблера. Использование сегментов в языке программирования ассемблер. Разбиение памяти мк на сегменты, абсолютные сегменты памяти, перемещаемые сегменты памяти.
- •5.10.1 Абсолютные сегменты памяти.
- •5.10.2 Перемещаемые сегменты памяти.
- •Архитектура микроконтроллеров семейства mcs-51 gb. Адресация регистров и памяти микроконтроллеров.
- •2.4 Организация памяти.
- •2.4.2 Память данных (озу).
- •2.4.3 Регистры специальных функций.
- •Периферийные устройства микроконтроллеров семейства mcs-51 gb. Последовательный порт с шиной i2c.
- •2.7.3 Режимы работы таймеров-счетчиков.
- •Периферийные устройства микроконтроллеров семейства mcs-51. Программируемая счётная матрица (pca).
- •Периферийные устройства микроконтроллеров семейства mcs-51 gb. Контроллер прерываний (ic).
- •2.10.1 Регистр масок прерывания (ie).
- •2.10.2 Регистр приоритетов прерываний (ip).
- •2.10.3 Выполнение подпрограммы прерывания.
- •Периферийные устройства микроконтроллеров семейства mcs-51 gb. Аналого-цифровой преобразователь (adc). Функциональная схема ацп
- •Числа в двоичном, восьмеричном, шестнадцатеричном и двоично-десятичном коде.
- •Перевод двоичных чисел в восьмеричный и шестнадцатеричный формат и наоборот.
- •Системы счисления. Перевод десятичных чисел в систему с основанием r.
- •Перевод чисел с основанием r в десятичные числа
- •Двоичная арифметика (сложение, умножение, деление двоичных чисел).
- •Вычитание двоичных чисел
- •Логические операции над двоичными числами.
Система команд мк-51. Способы адресации в мк-51.
В микроконтроллере используются следующие способы адресации данных:
• неявный;
• регистровый;
• непосредственный;
• прямой;
• косвенный.
Неявный способ получил такое название из-за того, что адрес операнда в команде явно не указывается, а подразумевается самим кодом операции (КОП). Например, однобайтная команда
CLR C (сброс флага переноса) представляет собой только КОП. Этот способ адресации позволяет получать команды минимального формата.
Регистровый способ адресации используется для операндов, хранящихся в одном из регистровых банков: регистры общего назначения R0 – R7. Например, команда
DEC R0 (декремент содержимого регистра R0). Этот способ адресации также позволяет получать команды минимального формата.
Непосредственный способ адресации служит для использования в качестве операнда непосредственных данных. При этом операнд находится в программной памяти непосредственно за КОП команды. Данные могут быть одно- или двухбайтовыми. Например, команда
MOV A, #d (загрузить байт в аккумулятор) имеет двухбайтный формат: первый байт КОП и байт данных #d. Например, команда
MOV DPTR, #d16 (загрузить два байта в регистр указатель DPTR) имеет трехбайтный формат: первый байт КОП и два байта данных #d16.
Прямой способ адресации предполагает указание операндов посредством адреса, содержащегося в команде. Адрес может быть одно- или двухбайтовым. Например, команда
ADD A, ad (сложение аккумулятора с содержимым памяти по адресу ad) имеет двухбайтный формат: первый байт КОП и байт адреса ad. Например, команда LJMP ad16 (длинный переход по адресу ad16) имеет трехбайтный формат: первый байт КОП и два байта адреса ad16.
Косвенный способ адресации предполагает указание операндов посредством адреса, содержащегося в регистре либо в регистровой паре. В команде указывается регистр, который в свою очередь указывает адрес операнда. Например, команда
MOV A, @R0 (загрузить в аккумулятор содержимое ячейки внутренней памяти, восьмиразрядный адрес которой содержится в регистре R0). Например, команда
MOV A, @DPTR (загрузить в аккумулятор u1089 содержимое ячейки внешней памяти, адрес которой содержится в двухбайтном регистре-указателе DPTR). Этот способ адресации позволяет уменьшить формат команд и повысить гибкость программирования. Многие команды для указания операндов комбинируют различные способы адресации. Например, команда
MOV @R0, #d (загрузить байт данных #d в ячейку внутренней памяти, восьмиразрядный адрес которой содержится в регистре R0). Здесь используются непосредственный (источник операнда) и косвенный (приемник операнда) способы адресации.
Система команд мк-51. Команды передачи данных.
Эта группа представлена 28 командами, их краткое описание приведено в таблице.
Название команды |
Мнемокод |
Операция |
Пересылка в аккумулятор из регистра (n=0÷7) |
MOV A, Rn |
(A) (Rn) |
Пересылка в аккумулятор прямоадресуемого байта |
MOV A, ad |
(A) (ad) |
Пересылка в аккумулятор байта из РПД (i=0,1) |
MOV A, @Ri |
(A) ((Ri)) |
Загрузка в аккумулятор константы |
MOV A, #d |
(A) #d |
Пересылка в регистр из аккумулятора |
MOV Rn, A |
(Rn) (A) |
Пересылка в регистр прямоадресуемого байта |
MOV Rn, ad |
(Rn) (ad) |
Загрузка в регистр константы |
MOV Rn, #d |
(Rn) #d |
Пересылка по прямому адресу аккумулятора |
MOV ad, A |
(ad) (A) |
Пересылка по прямому адресу регистра |
MOV ad, Rn |
(ad) (Rn) |
Пересылка прямоадресуемого байта по прямому адресу |
MOV add, ads |
(add) (ads) |
Пересылка байта из РПД по прямому адресу |
MOV ad, @Ri |
(ad) ((Ri)) |
Пересылка по прямому адресу константы |
MOV ad, #d |
(ad) #d |
Пересылка в РПД из аккумулятора |
MOV @Ri, A |
((Ri)) (A) |
Пересылка в РПД прямоадресуемого байта |
MOV @Ri, ad |
((Ri)) (ad) |
Пересылка в РПД константы |
MOV @Ri, #d |
((Ri)) #d |
Загрузка указателя данных |
MOV DPTR, #d16 |
(DPTR) #d16 |
Пересылка в аккумулятор байта из ПП |
MOVC A, @A+DPTR |
A ((A) +(DPTR)) |
Пересылка в аккумулятор байта из ПП |
MOVC A, @A+PC |
(PC) (PC)+1, (A) ((A)+(PC)) |
Пересылка в аккумулятор байта из ВПД |
MOVX A, @Ri |
(A) ((Ri)) |
Пересылка в аккумулятор байта из расширенной ВПД |
MOVX A,@DPTR |
(A) ((DPTR)) |
Пересылка в ВПД из аккумулятора |
MOVX @Ri, A |
((Ri)) (A) |
Пересылка в расширенную ВПД из аккумулятора |
MOVX @DPTR,A |
((DPTR)) (A) |
Загрузка в стек |
PUSH ad |
(SP) (SP) + 1, ((SP)) (ad) |
Извлечение из стека |
POP ad |
(ad) (SP), (SP) (SP) - 1 |
Обмен аккумулятора с регистром |
XCH A, Rn |
(A) ↔ (Rn) |
Обмен аккумулятора с прямоадресуемым байтом |
XCH A, ad |
(A) ↔ (ad) |
Обмен аккумулятора с байтом из РПД |
XCH A, @Ri |
(A) ↔ ((Ri)) |
Обмен младших тетрад аккумулятора и байта РПД |
XCHD A, @Ri |
(A0…3) ↔((Ri)0…3) |
Кратко все способы передачи данных можно представить на графе:
По команде MOV выполняется пересылка данных из второго операнда в первый. Эта команда не имеет доступа ни к внешней памяти данных, ни к памяти программ. Для этих целей предназначены команды M0VX и MOVC соответственно. Первая из них обеспечивает чтение/запись байт из внешней памяти данных, вторая – чтение байт из памяти программ.
По команде XCH выполняется обмен байтами между аккумулятором и ячейкой РПД, а по команде XCHD – обмен младшими тетрадами (битами 0 – 3).
Команды PUSH и РОР предназначены соответственно для записи данных в стек и их чтения из стека. Размер стека ограничен лишь размером резидентной памяти данных. В процессе инициализации микро-ЭВМ после сигнала сброса или при включении питающего напряжения в SP заносится код 07Н. Это означает, что первый элемент стека будет располагаться в ячейке памяти с адресом 08Н.
Группа команд пересылок микроконтроллера имеет следующую особенность - в ней нет специальных команд для работы со специальными регистрами: PSW, таймером, портами ввода-вывода. Доступ к ним, как и к другим регистрам специальных функций, осуществляется заданием соответствующего прямого адреса, т.е. это команды обычных пересылок, в которых вместо адреса можно ставить название соответствующего регистра. Например, чтение PSW в аккумулятор может быть выполнено командой
MOV A, PSW
которая преобразуется Ассемблером к виду
MOV А, 0D0h (E5 D0),
где Е5 – код операции, а D0 – операнд (адрес PSW).
Кроме того, следует отметить, что в микро-ЭВМ аккумулятор имеет два различных имени в зависимости от способа адресации: А – при неявной адресации (например, MOV A, R0) и АСС – при использовании прямого адреса. Первый способ предпочтительнее, однако, не всегда применим.
