Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 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» – сброс флага

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных