
- •Введение Структура гибкой производственной системы
- •1. Классификация устройств программного управления
- •2. Принципы построения микропроцессорных систем
- •3. Способы внутрисистемной организации мультимикропроцессорных систем
- •Устройства числового программного управления станками и системы управления промышленными роботами
- •4. 1. Устройство числового программного управления fms-3000
- •4.2. Учпу Маяк600
- •4.3. Система управления рб 242
- •4.4. Су «сфера-36»
- •Микроконтроллеры cisc и risc архитектуры
- •5.1. Выбор микроконтроллера
- •5. 2. Микроконтроллер км1816ве51
- •Устройство управления и синхронизации
- •Порты ввода/вывода информации
- •Таймеры/счётчики
- •Последовательный порт
- •Работа уапп в мультимикроконтроллерных системах
- •Система прерываний
- •Приоритеты прерываний при поллинге
- •Особенности запросов внешних прерываний
- •Программирование мк51 Методы адресации
- •Система команд семейства mк-51
- •Типовая схема построения су на базе мк51
Система команд семейства mк-51
Всего в системе команд семейства MК-51 можно выделить 5 групп: команды арифметических операций, команды логических операций, команды пересылки данных, команды операций с битами и команды передачи управления.
• Команды операций с битами (табл. 5.10)
Эти команды устанавливают в «1» (SETB) или «0» (CLR) прямоадресуемый бит внутренней памяти данных, изменяют его значение на противоположное (CLR), выполняют операции AND и OR над флагом переноса С и прямоадресуемым битом (AND и ORL), осуществляют пересылку значения между флагом С и прямоадресуемым битом (MOV), осуществляют передачу управления по состоянию флага С или прямоадресуемого бита (JC, JNC, JB, JNB, JBC). Команды этой группы, выполняющие логические операции и осуществляющие пересылку значения бита. изменяют значение флага С регистра PSW. Остальные команды на флаги не действуют.
Таблица 5.10. Команды операций с битами
Название команды |
Мнемокод |
Т |
Б |
Ц |
Операция |
Сброс переноса |
CLR C |
1 |
1 |
1 |
(C)← 0 |
Сброс бита |
CLR bit |
4 |
2 |
1 |
(b)← 0 |
Установка переноса |
SETB C |
1 |
1 |
1 |
(C)←1 |
Установка бита |
SETB bit |
4 |
2 |
1 |
(b)←1 |
Инверсия переноса |
CPL C |
1 |
1 |
1 |
(C)←
(
|
Инверсия бита |
CPL bit |
4 |
2 |
1 |
(b)← (b) |
Логическое И бита и переноса |
ANL C, bit |
4 |
2 |
2 |
(C)←
(C) |
Логическое И инверсии бита и переноса |
ANL C, /bit |
4 |
2 |
2 |
(C)←
(C)
( |
Логическое ИЛИ бита и переноса |
ORL C, bit |
4 |
2 |
2 |
(C)←
(C) |
Логическое ИЛИ инверсии бита и переноса |
ORL C, /bit |
4 |
2 |
2 |
(C)← (C) ( ) |
Пересылка бита в перенос |
MOV C, bit |
4 |
2 |
1 |
(C)← (b) |
Пересылка переноса в бит |
MOV bit, C |
4 |
2 |
2 |
(b)← (C) |
При выполнении некоторых операций изменяется значение флагов регистра PSW. Перечень этих команд приведён в табл. 5.11.
Таблица 5.11. Перечень команд, изменяющих флаги регистра PSW.
Команда |
Флаг |
Команда |
Флаг |
||||
C |
OV |
AC |
C |
OV |
AC |
||
ADD |
x |
x |
x |
CLR C |
0 |
|
|
ADDC |
x |
x |
x |
CPL C |
|
|
|
SUBB |
x |
x |
x |
ANL C, b |
x |
|
|
MUL |
0 |
x |
|
ANL C ,/b |
x |
|
|
DIV |
0 |
x |
|
ORL C , b |
x |
|
|
DA |
x |
|
|
ORL C, /b |
x |
|
|
RRC |
x |
|
|
MOV C ,b |
x |
|
|
RLC |
x |
|
|
CJNE |
x |
|
|
SETB C |
1 |
|
|
|
|
|
|
• Команды передачи управления
Передача управления может осуществляться безусловно или по условию, без возврата или с возвратом, в последнем случае для возврата необходимо хранить состояние процессора.
Система команд MК-51 кроме обычных «длинных» переходов с использованием 16-разрядного адреса унаследовала от семейства MК-48 команды передачи управления с «коротким» 11-разрядным адресом. Группа команд передачи управления включает четыре команды безусловного перехода без возврата («ультракороткая» SJMP, «короткая» AJMP, «длинная» LJMP и переход по значению A+DPTR в команде JMP), две команды безусловного перехода с возвратом («короткая» ACALL и «длинная» LCALL), восемь команд условного перехода без возврата. Имеются две команды возврата: из обычной подпрограммы команда RET и из подпрограммы обработки прерывания команда RETI.
Завершает эту группу и всю систему команд NOP- «нет операции». Команды передачи управления в регистре PSW значения флагов не изменяют, кроме команд условного перехода CJNE, влияющих на значение флага С.
Группа команд передачи управления представлена в таблице 5.12.
• Команды пересылки данных
Осуществляют передачу данных между ячейками внутренней памяти данных (команды MOV), внешней памяти данных (команды MOVX) и аккумулятором. Существует две команды MOVC, позволяющие читать в аккумулятор содержимое памяти программ. К этой группе относятся парные команды PUSH и POP, осуществляющие загрузку и выгрузку содержимого прямоадресуемой ячейки в стек (из стека). Имеются четыре команды взаимного обмена информацией между ячейками внутренней памяти данных (XCH и XCHD). Команды пересылки данных (табл. 5.13) значения флагов в регистре PSW не изменяют.
• Арифметические команды (табл.5.14)
Обеспечивают выполнение операций сложения и вычитания (в том числе с учетом переноса) над целочисленными 8-разрядными операндами, инкремент и декремент регистров и ячеек внутренней памяти данных, двоично-десятичную коррекцию содержимого аккумулятора. Особенностью системы команд MК-51 является наличие в составе этой группы команд умножения и деления 8-разрядных целочисленных операндов. Получившийся 16-разрядный результат хранится в регистрах А и В. Результатом выполнения арифметических команд является, кроме нового содержимого аккумулятора, измененное значение регистра РSW.
• Логические команды и команды сдвига
Система команд МК51 содержит логические операции (табл. 5.15): AND (И), OR (ИЛИ), «исключающее ИЛИ», инверсия бит. В качестве операндов могут использоваться непосредственные данные и содержимое ячеек внутренней памяти данных. Выполнение некоторых логических команд влияет на значение флага С (перенос) регистра РSW.
Операции сдвигов (табл. 5.16) выполняются над содержимым аккумулятора. Сдвиг может быть выполнен вправо или влево, а также может быть осуществлена перестановка тетрад АСС.
Пример учебной программы, написанной на Ассемблере МК51
; Рассчитать (А+В)/С=D.
; Если D>10d, то результат записать в R7 и вывести FFH в порт Р3.
; Если D≤10d (d – десятичное число), то результат записать в ячейку 100d РПД
; и установить бит 20h РПД.
; Исходные данные: А в R2, В в ячейке 99d РПД, C в R3. Все числа не более 10d.
; d – десятичное число.
……. …….
MOV А, R2 ; Пересылка содержимого из R2 в аккумулятор.
ADD A, 63h ; Сложение ячейки 99 РПД и аккумулятора.
MOV B, R3 ; Пересылка содержимого R3 в регистр В.
DIV A, B ; Деление аккумулятора на В.
MOV R4, A ; Результат D записать в R4.
SUBB A, #Ah ; Вычитание 10d из аккумулятора.
JZ M1 ; Переход на метку М1 если аккумулятор равен нулю
; (D=10).
JC M1 ; Переход на метку М1 если результат D<10.
MOV R7, R4 ; Пересылка результата деления в R7.
MOV P3, #FFh ; Вывод FFh в порт Р3.
SJMP M2 ; Переход на метку М2.
M1: MOV 64h, R4 ; Пересылка результата D в ячейку 100d РПД.
SET 20h ; Установить бит 20h в РПД.
M2: ….. ……….