Мікроконтролери MCS-51 програмна модель, структура, команди
Організація пам'яті

Пам'ять програм

● до внутрішньої пам'яті сигнал читання не формується і використовуються цикли обміну по внутрішній шині мікроконтролера.
Пам'ять даних
Особливості організації нижньої області внутрішнього ОЗУ відбито у табл.7.3.3.
Адреси бітів
Адреси бітів наведені у табл.7.3.3.
Структура команд.
Загальні відомості щодо системи команд.
Зі 111 команд 64 виконуються за один машинний цикл, 45 - за два цикли і лише дві команди (MUL - множення і DIV - розподіл) виконуються за 4 цикли. За частоти тактового генератора 12 МГц тривалість машинного циклу (12 тактів) становить 1 мкс. За функціональною ознакою команди можна розбити п'ять груп. Нижче наведено опис команд кожної групи, поданих у вигляді таблиць. Для компактності таблиць виділимо групу команд (табл.7.3.6), виконання яких впливає (позначені знаком +) стан прапорів регістру слова стану PSW.

Команди пересилання даних
Команди пересилання можна розбити окремі підгрупи. Команди пересилання та обміну даними між осередками внутрішньої пам'яті (табл.7.3.7).
Команди 17–20 забезпечують обмін інформацією між двома осередками внутрішньої пам'яті даних (або двостороннє пересилання). При виконанні команд ХСН відбувається обмін байтами, A команди XCHD - молодшими зошитами байтових операндів.
Команди пересилання даних між внутрішньою та зовнішньою пам'яттю даних (табл.7.3.8).
Ці команди призначені для читання таблиць із програмної пам'яті.
Команда MOVC A, @ А + DPTRвикористовується звернення до таблиці з числом входів від 0 до 255.
Операції множення MUL і розподілу DIV виконуються над вмістом регістрів A і В. При множенні старші 8 розрядів результату записуються в регістр, молодші 8 розрядів - в регістр A. Якщо твір більше 255, встановлюється прапор переповнення OV; прапор переносу завжди скидається. Команда DIV виконує поділ 8-бітного операнда акумулятора A на 8-бітний операнд регістру В. При поділі приватне (старші розряди) записується в регістр A, залишок (молодші розряди) — B. Прапори переносу C і переповнення OV скидаються . Під час спроби поділу на 0 встановлюється прапор переповнення OV. Операція поділу частіше використовується для зрушень та перетворення основ чисел.
При розподілі двійкового числа на 2 N відбувається його зсув N біт вліво. Зайві біти переносяться в регістр Ст.
Операції над однобайтними операндами (табл.7.3.11).
Команди логічних операцій.
Двомісні операції
Одномісні операції
(Табл.7.3.13). До складу групи входить також ряд одномісних операцій над вмістом акумулятора A: операції очищення (CLR), логічного доповнення або інверсії (CPL), циклічного та розширеного циклічного зсувів на 1 біт вправо (RL, RLC) та вліво (RR, RRC ), обміну зошит чи циклічного зсуву байта на 4 розряду (SWAP), і навіть порожня операція (NOP), у результаті якої стан всіх регістрів МК (крім програмного лічильника) залишається незмінним.

Команди передачі управління
Команди безумовного переходу
Команди умовного переходу
За допомогою команд JZ та JNZ здійснюється перехід, якщо вміст акумулятора відповідно дорівнює або не дорівнює нулю. Адресапереходу обчислюється шляхом додавання відносного знакового зміщення rel з вмістом лічильника команд PC після додавання до нього числа 2 (довжини команди в байтах).
Вміст акумулятора залишається незмінним. Команди на прапори не впливають.

Адреса переходу обчислюється додаванням усунення rel з вмістом лічильника PC, попередньо збільшеним на 3. В іншому випадку виконується наступна команда.
У графі Алгоритм показано вплив значень порівнюваних 8-розрядних операндів на прапор переносу С. Команди DJNZ (7, призначені для організації програмних циклів.
Адреса переходу обчислюється додаванням усунення вмістом лічильника, попередньо збільшеним на довжину команди (на 2 або 3). На прапори команди не впливають.
Команди виклику підпрограм та повернення з програм
При цьому логіка переривань перестає спрацьовувати на запити рівня, прийнятого до обслуговування. Для зниження рівня переривання служить команда повернення з переривання RETI, яка крім операції, еквівалентної RET, включає операцію дозволу переривання цього рівня. До типових умовних операцій МК51 відносяться також операції JZ, JNZ. Однак з'явилася нова операція «Порівняти та перейти» CJNE.
За цією командою операнд спочатку порівнюється за правилами віднімання цілих чисел з константою і відповідно до результату порівняння виставляється прапор CY Потім у разі розбіжності з константою виконується розгалуження. Порівнюючи акумулятор, регістр або комірку пам'яті з послідовністюконстант, отримуємо зручний спосіб перевірки на збіги, наприклад, з метою виявлення особливих випадків.
По суті, команда CJNE є елементом оператора мов високого рівня типу CASE.
Подальший розвиток здобула команда DJNZ. Тепер програміст як лічильник може використовувати не тільки один з робочих регістрів Rn, але і будь-яку комірку пам'яті DSEG.
Команди бітових операцій.
Група складається з 12 команд, що дозволяють виконувати операції над одним або двома бітами (скидання, встановлення, інверсію біта, A також логічні І та АБО), і 5 команд, призначених для реалізації умовних переходів (табл.7.3.17).

При виконанні операцій над двома однорозрядними операндами як логічний акумулятор використовується тригер регістра PSW, що зберігає прапор переносу C (табл.7.1.2).
До групи входять також команди (13–17) реалізації операцій умовних переходів з відносним 8–разрядным усуненням rel. Переходи можуть бути реалізовані як при встановленому биті або прапорі перенесення (команди 13, 16), так і при скинутому (команди 14, 17).