Главная
Популярная публикация
Научная публикация
Случайная публикация
Обратная связь
ТОР 5 статей:
Методические подходы к анализу финансового состояния предприятия
Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века
Ценовые и неценовые факторы
Характеристика шлифовальных кругов и ее маркировка
Служебные части речи. Предлог. Союз. Частицы
КАТЕГОРИИ:
|
Система команд микроконтроллера
Список принятых сокращений, используемых при описании системы команд, приведён в таблице 2.1.
В системе команд микроконтроллера можно выделить следующие группы:
– группа арифметических команд, к ней относятся команды сложения, вычитания, умножения и деления (таблица 2.2);
– группа логических команд, в которую входят команды логического И, ИЛИ, ИСКЛЮЧАЮЩЕГО ИЛИ, инверсии, обмена и ротации (таблица 2.3);
– группа команд пересылки (таблица 2.4);
– группа команд манипуляции с битами, в которую входят команды изменения битов и проверки их состояния (таблица 2.5);
– группа команд ветвления, которая включает в себя команды условных и безусловных переходов, команды вызова подпрограмм и возврата из них, а также команды организации циклов (таблица 2.6).
Таблица 2.7 содержит список инструкций, воздействующих на флаги состояния микроконтроллера.
Таблица 2.1 – Принятые сокращения
Сокращение
| Описание сокращения
|
|
| Rn
| Регистры R0-R7 активного банка регистров
| direct
| Восьмибитный адрес внутренней памяти данных (ОЗУ). Это может быть адрес ячейки памяти или адрес регистра специального назначения
| @Ri
| Восьмибитные данные из внутренней памяти данных, адресуемые косвенно через регистры R0 и R1
| #data
| Восьмибитная константа
| #data 16
| Шестнадцатибитная константа
| addr 16
| Шестнадцатиразрядный адрес. Используется в командах LCALL и LJMP, что позволяет делать ветвления в пределах 64 кБ адресуемого адресного пространства памяти программ
| addr 11
| Одиннадцатиразрядный адрес. Используется командами ACALL и AJMP, что позволяет выполнять ветвления в пределах 2 кБ страниц памяти
| Продолжение таблицы 2.1
|
| Rel
| Байт восьмибитного смещения со знаком. Используется командами SJMP и всеми командами условных переходов, что позволяет делать переходы в пределах от минус 128 до плюс 127 байт
| Bit
| Непосредственно адресуемый бит во внутренней памяти данных или в регистрах специального назначения
|
Таблица 2.2 – Арифметические команды
Мнемоника
| Описание
| Длина, байт
| Число периодов генератора
|
|
|
|
|
| ADD
| A, Rn
| Прибавляет регистр к Аккумулятору
|
|
| ADD
| A, direct
| Прибавляет содержимое ячейки внутренней памяти данных, адрес которой задан в команде, к Аккумулятору
|
| ADD
| A, @Ri
| Прибавляет содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1, к Аккумулятору
|
| ADD
| A, #data
| Прибавляет к Аккумулятору число #data
|
| ADDC
| A, Rn
| Прибавляет регистр и флаг переноса к Аккумулятору
|
| ADDC
| A, direct
| Прибавляет содержимое ячейки внутренней памяти данных, адрес которой задан в команде, и флаг переноса к Аккумулятору
|
|
| ADDC
| A, @Ri
| Прибавляет содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1, и флаг переноса к Аккумулятору
|
| ADDC
| A, #data
| Прибавляет к Аккумулятору число #data и флаг переноса
|
| Продолжение таблицы 2.2
|
|
|
|
| SUBB
| A, Rn
| Вычитает регистр из Аккумулятора
|
|
| SUBB
| A, direct
| Вычитает содержимое ячейки внутренней памяти данных, адрес которой задан в команде, из Аккумулятора
|
| SUBB
| A, @Ri
| Вычитает содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1, из Аккумулятора
|
| SUBB
| A, #data
| Вычитает число #data из Аккумулятора
|
| INC
| A
| Инкрементирует Аккумулятор
|
| INC
| Rn
| Инкрементирует регистр
| INC
| direct
| Инкрементирует содержимое ячейки внутренней памяти данных, адрес которой задан в команде
|
| INC
| @Ri
| Инкрементирует содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1
|
| DEC
| A
| Декрементирует Аккумулятор
| DEC
| Rn
| Декрементирует регистр
| DEC
| direct
| Декрементирует содержимое ячейки внутренней памяти данных, адрес которой задан в команде
|
| DEC
| @Ri
| Декрементирует содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1
|
| INC
| DPTR
| Инкрементирует регистровую пару DPTR
|
| MUL
| AB
| Перемножает Аккумулятор и регистр В
|
| DIV
| AB
| Делит Аккумулятор на регистр В
| DA
| A
| Выполняет десятичную коррекцию Аккумулятора
|
| Таблица 2.3 – Логические команды
Мнемоника
| Описание
| Длина, байт
| Число периодов генератора
|
|
|
|
|
| ANL
| A, Rn
| Выполняет логическое И Аккумулятора и регистра
|
|
| ANL
| A, direct
| Выполняет логическое И Аккумулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в команде
|
| ANL
| A, @Ri
| Выполняет логическое И Аккумулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1
|
| ANL
| A, #data
| Выполняет логическое И Аккумулятора и числа #data
|
| ANL
| direct, A
| Выполняет логическое И содержимого ячейки внутренней памяти данных, адрес которой задан в команде, и Аккумулятора. Результат в ячейке памяти
| ANL
| direct, #data
| Выполняет логическое И содержимого ячейки внутренней памяти данных, адрес которой задан в команде, и числа #data. Результат в ячейке памяти
|
|
| ORL
| A, Rn
| Выполняет логическое ИЛИ Аккумулятора и регистра
|
|
| ORL
| A, direct
| Выполняет логическое ИЛИ Аккумулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в команде
|
| ORL
| A, @Ri
| Выполняет логическое ИЛИ Аккумулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1
|
| Продолжение таблицы 2.3
|
|
|
|
| ORL
| A, #data
| Выполняет логическое ИЛИ Аккумулятора и числа #data
|
|
| ORL
| direct, A
| Выполняет логическое ИЛИ содержимого ячейки внутренней памяти данных, адрес которой задан в команде, и Аккумулятора. Результат в ячейке памяти
|
|
| ORL
| direct, #data
| Выполняет логическое ИЛИ содержимого ячейки внутренней памяти данных, адрес которой задан в команде, и числа #data. Результат в ячейке памяти
|
|
| XRL
| A, Rn
| Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ Аккумулятора и регистра
|
|
| XRL
| A, direct
| Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ Аккумулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в команде
|
| XRL
| A, @Ri
| Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ Аккумулятора и содержимого ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1
|
| XRL
| A, #data
| Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ Аккумулятора и числа #data
|
| XRL
| direct, A
| Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ содержимого ячейки внутренней памяти данных, адрес которой задан в команде, и Аккумулятора. Результат в ячейке памяти
| XRL
| direct, #data
| Выполняет логическое ИСКЛЮЧАЮЩЕЕ ИЛИ содержимого ячейки внутренней памяти данных, адрес которой задан в команде, и числа #data. Результат в ячейке памяти
|
|
| Продолжение таблицы 2.3
|
|
|
|
| CLR
| A
| Обнуляет Аккумулятор
|
|
| CPL
| A
| Комплементирует Аккумулятор
| RL
| A
| Ротирует Аккумулятор влево
| RLC
| A
| Ротирует Аккумулятор влево с использованием флага переноса
| RR
| A
| Ротирует Аккумулятор вправо
| RRC
| A
| Ротирует Аккумулятор вправо с использованием флага переноса
| SWAP
| A
| Обменивает полубайты в Аккумуляторе
|
Таблица 2.4 – Команды пересылки
Мнемоника
| Описание
| Длина, байт
| Число периодов генератора
|
|
|
|
|
| MOV
| A, Rn
| Пересылает регистр в Аккумулятор
|
|
| MOV
| A, direct
| Пересылает содержимое ячейки внутренней памяти данных, адрес которой задан в команде, в Аккумулятор
|
| MOV
| A, @Ri
| Пересылает содержимое ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1, в Аккумулятор
|
|
| MOV
| A, #data
| Пересылает данные #data в Аккумулятор
|
| MOV
| Rn, A
| Пересылает Аккумулятор в регистр
|
| Продолжение таблицы 2.4
|
|
|
|
| MOV
| Rn, direct
| Пересылает содержимое ячейки внутренней памяти данных, адрес которой задан в команде, в регистр
|
|
| MOV
| Rn, #data
| Пересылает данные #data в регистр
|
| MOV
| direct, A
| Пересылает Аккумулятор в ячейку внутренней памяти данных, адрес которой задан в команде
| MOV
| direct, Rn
| Пересылает регистр в ячейку внутренней памяти данных, адрес которой задан в команде
|
| MOV
| direct1, direct2
| Пересылает ячейку внутренней памяти данных, адрес которой задан в команде (direct2), в ячейку внутренней памяти данных, адрес которой задан в команде (direct1)
|
| MOV
| direct, @Ri
| Пересылает ячейку внутренней памяти данных, адрес которой задан в регистре R0 или R1, в ячейку внутренней памяти данных, адрес которой задан в команде
|
|
| MOV
| direct, #data
| Пересылает данные #data в ячейку внутренней памяти данных, адрес которой задан в команде
|
| MOV
| @Ri, A
| Пересылает Аккумулятор в ячейку внутренней памяти данных, адрес которой задан в регистре R0 или R1
|
|
| MOV
| @Ri, direct
| Пересылает ячейку внутренней памяти данных, адрес которой задан в команде, в ячейку внутренней памяти данных, адрес которой задан в регистре R0 или R1
|
|
| Продолжение таблицы 2.4
|
|
|
|
| MOV
| @Ri, #data
| Пересылает данные #data в ячейку внутренней памяти данных, адрес которой задан в регистре R0 или R1
|
|
| MOV
| DPTR, #data 16
| Загружает регистровую пару DPTR числом #data 16
|
|
| MOVC
| A, @A+DPTR
| Загружает Аккумулятор содержимым ячейки памяти программ, адрес которой вычисляется как сумма содержимого регистровой пары DPTR и Аккумулятора
|
|
| MOVC
| A, @A+PC
| Загружает Аккумулятор содержимым ячейки памяти программ, адрес которой вычисляется как сумма содержимого счётчика команд PC и Аккумулятора
| MOVX
| A, @Ri
| Загружает Аккумулятор содержимым ячейки внешней памяти данных, адрес которой задан в регистре R0 или R1. Старший байт адреса задается содержимым порта Р2
| MOVX
| A, @DPTR
| Загружает Аккумулятор содержимым ячейки внешней памяти данных, адрес которой задан в регистровой паре DPTR
|
|
| MOVX
| @Ri, A
| Загружает ячейку внешней памяти данных, адрес которой задан в регистре R0 или R1, Аккумулятором. Старший байт адреса задается содержимым порта Р2
| Продолжение таблицы 2.4
|
|
|
|
| MOVX
| @DPTR, A
| Загружает Аккумулятором ячейку внешней памяти данных, адрес которой задан в регистровой паре DPTR
|
|
| PUSH
| direct
| Записывает ячейку внутренней памяти данных, адрес которой задан в команде, в стек
|
|
| POP
| direct
| Считывает в ячейку внутренней памяти данных, адрес которой задан в команде, из стека
| XCH
| A, Rn
| Обменивает содержимое Аккумулятора и регистра
|
|
| XCH
| A, direct
| Обменивает содержимое Аккумулятора и ячейки внутренней памяти данных, адрес которой задан в команде
|
| XCH
| A, @Ri
| Обменивает содержимое Аккумулятора и ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1
|
| XCHD
| A, @Ri
| Обменивает содержимое четырёх младших бит Аккумулятора и четырех младших бит ячейки внутренней памяти данных, адрес которой задан в регистре R0 или R1
| Таблица 2.5 – Команды работы с битами
Мнемоника
| Описание
| Длина, байт
| Число периодов генератора
| CLR
| C
| Сбрасывает в 0 флаг переноса
|
|
| CLR
| Bit
| Сбрасывает в 0 бит
|
| SETB
| C
| Устанавливает в 1 флаг переноса
|
| SETB
| Bit
| Устанавливает в 1 бит
|
| CPL
| C
| Инвертирует флаг переноса
|
| CPL
| Bit
| Инвертирует бит
|
| ANL
| C, bit
| Логическое И флага переноса и бита
|
| ANL
| C, /bit
| Логическое И флага переноса и инверсии бита
| ORL
| C, bit
| Логическое ИЛИ флага переноса и бита
| ORL
| C, /bit
| Логическое ИЛИ флага переноса и инверсии бита
| MOV
| C, bit
| Загрузить флаг переноса из бита
|
| MOV
| bit, C
| Загрузить бит из флага переноса
|
|
Таблица 2.6 – Команды ветвления
Мнемоника
| Описание
| Длина, байт
| Число периодов генератора
|
|
|
|
|
| JC
| rel
| Переход, если флаг переноса равен 1
|
|
| JNC
| rel
| Переход, если флаг переноса равен 0
| JB
| bit, rel
| Переход, если бит равен 1
|
| JNB
| bit, rel
| Переход, если бит равен 0
|
Продолжение таблицы 2.6
|
|
|
|
| JBC
| bit, rel
| Переход, если бит равен 1, с последующим сбросом бита в 0
|
|
| ACALL
| addr11
| Вызов подпрограммы по абсолютному адресу
|
| LCALL
| addr16
| Вызов подпрограммы по длинному абсолютному адресу
|
| RET
|
| Возврат из подпрограммы
|
| RETI
|
| Возврат из прерывания
| AJMP
| addr11
| Безусловный переход по абсолютному адресу
|
| LJMP
| addr16
| Безусловный переход по длинному абсолютному адресу
|
| SJMP
| rel
| Безусловный переход по относительному адресу
|
| JMP
| @A+DPTR
| Безусловный переход по адресу, равному сумме содержимого DPTR и Аккумулятора
|
| JZ
| rel
| Переход, если Аккумулятор равен 0
|
| JNZ
| rel
| Переход, если Аккумулятор не равен 0
| CJNE
| A, direct, rel
| Сравнивает Аккумулятор и ячейку внутренней памяти данных, адрес которой задан в команде, и переходит по относительному адресу, если они не равны
|
|
| CJNE
| A, #data, rel
| Сравнивает Аккумулятор и данные #data и переходит по относительному адресу, если они не равны
|
|
| CJNE
| Rn, #data, rel
| Сравнивает регистр и данные #data и переходит по относительному адресу, если они не равны
| Продолжение таблицы 2.6
|
|
|
|
| CJNE
| @Ri, #data, rel
| Сравнивает ячейку внутренней памяти данных, адрес которой задан в регистре R0 или R1, и данные #data и переходит по относительному адресу, если они не равны
|
|
| DJNZ
| Rn, rel
| Декрементирует регистр и переходит по относительному адресу, если регистр после этого не равен 0
|
| DJNZ
| direct, rel
| Декрементирует ячейку внутренней памяти данных, адрес которой задан в команде, и переходит по относительному адресу, если результат декремента не 0
|
| NOP
|
| Нет операции
|
|
|
Таблица 2.7 – Инструкции, влияющие на флаги переноса (С), переполнения (OV) и полупереноса (АС)
Инструкция
| Флаги
| Инструкция
| Флаги
| C
| OV
| AC
| C
| OV
| AC
| ADD
| X
| X
| X
| CLR C
|
|
|
| ADDC
| X
| X
| X
| CPL C
| X
|
|
| SUBB
| X
| X
| X
| ANL C, bit
| X
|
|
| MUL
|
| X
|
| ANL C, /bit
| X
|
|
| DIV
|
| X
|
| ORL C, bit
| X
|
|
| DA
| X
|
|
| ORL C, /bit
| X
|
|
| RRC
| X
|
|
| MOV C, bit
| X
|
|
| RLC
| X
|
|
| CJNE
| X
|
|
| SETB C
|
|
|
|
|
|
|
| Примечание – Символ «Х» означает влияние команды на флаг, символ «1» – установку флага, символ «0» – сброс флага
|
Не нашли, что искали? Воспользуйтесь поиском:
|