- •Введення
- •Архітектура мікроконтролерів mcs-51
- •Блок керування та синхронізації
- •Система команд мікроконтролерів mcs-51
- •Арифметичні команди
- •Логічні команди з байтовими змінними
- •Команди пересилання даних.
- •Бітові команди.
- •Команди розгалуження та передачі управління.
- •Способи адресації операндів.
- •Побудова пам'яті мікроконтролерів сімейства mcs-51
- •Пам'ять програм мікроконтролерів mcs-51
- •Зовнішня пам'ять даних мікроконтролерів mcs-51
- •Внутрішня пам'ять даних мікроконтролерів mcs-51
- •Регістри спеціальних функцій.
Арифметичні команди
У наборі команд мікроконтролера є наступні арифметичні операції:
додавання ADD,
додавання з урахуванням прапора переносу ADDC,
віднімання з займом SUBB,
інкрементуровання (збільшення на 1) INC,
декрементування (зменшення на 1) DEC,
десяткова корекція DA,
множення MUL
ділення DIV.
Дії проводяться над цілими числами без знака.
При операції множення вміст акумулятора A множиться на вміст регістра B, і результат розміщується таким чином: молодший байт у регістрі B, старший - у регістрі А.
У разі виконання операції ділення ціле від ділення поміщається в акумулятор A, залишок - в регістр В.
Логічні команди з байтовими змінними
Система команд розглянутого мікроконтролера дозволяє реалізувати логічні операції
І ( ANL),
АБО ( ORL),
ВИКЛЮЧАЮЧЕ АБО ( XRL).
Логічні операції виконуються над акумулятором або безпосередньо над портами введення / виводу.
Існують логічні операції, які виконуються тільки на акумуляторі:
скидання всіх восьми розрядів A (CLR A);
інвертування всіх восьми розрядів A (CPL A);
циклічний зсув вліво і вправо без урахування прапора переносу (RR A; RL A);
циклічний зсув вліво і вправо з урахуванням прапора переносу (RRC A; RLC A);
обмін місцями старшої та молодшої тетрад всередині акумулятора (SWAP A).
Команди пересилання даних.
Як було розглянуто раніше, арифметичні і логічні команди можуть бути виконані лише над вмістом регістра акумулятора, тому виключно важливе значення в системі команд набувають команди пересилання даних. За допомогою цих команд можна скопіювати вміст будь-якої комірки пам'яті в регістр-акумулятор або навпаки скопіювати вміст акумулятора в будь-яку комірку пам'яті. Так, як в мікроконтролері присутній три незалежні області пам'яті, то для звернення до них введені різні команди:
копіювання даних у внутрішньому ОЗП: MOV ;
обмін даними акумулятора з внутрішнім ОЗП: XCH , XCHD
копіювання з зовнішньої пам'яті даних: MOVX
копіювання даних з пам'яті програм: MOVC
Приклади використання команд пересилання даних:
Будь-яка комірка 256 - байтового блоку внутрішнього ОЗП даних може бути обрана з використанням побічно-реєстрової адресації через регістри покажчики R0 і R1 (обраного банку робочих регістрів):
MOV A, @ R0 ;Скопіювати число з комірки пам'яті з адресою, що зберігається в R0, в акумулятор
MOV @ R1, A ; Скопіювати число з акумулятора, в комірку пам'яті з адресою, що зберігається в R1
Команди пересилання з прямою адресацією між комірками пам'яті дозволяють заносити вміст порту в комірку внутрішнього ОЗП або обмінюватися вмістом комірок внутрішнього ОЗП між собою без використання акумулятора:
MOV 15, 25 ; Скопіювати вміст 25-ої комірки в 15-у комірку
Таблиці символів (кодів), записані в ПЗП програми можуть бути скопійовані в акумулятор за допомогою команд передачі даних з непрямою адресацією :
MOVC A, @ A + DPTR ; Скопіювати символ в акумулятор
Комірка адресного простору 64 Кбайт зовнішнього ОЗП також може бути вибрана з використанням побічно-реєстрової адресації через регістр покажчик даних DPTR:
MOVX A, @ DPTR ; Скопіювати число з зовнішньої комірки пам'яті з адресою, що зберігається в DPTR, в акумулятор
Вміст акумулятора може бути обміняно з вмістом робочих регістрів обраного банку:
XCH A, R0.
Крім того, будь-який біт з прямою адресацією може бути скопійований в біт перенесення і навпаки:
MOV C, AdrBit
