Вбудовані мікропроцесорні системи на основі однокристальних мікро ЕОМ

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати


ВБУДОВАНІ МІКРОПРОЦЕСОРНІ СИСТЕМИ НА ОСНОВІ однокристальних мікроЕОМ

Зміст

1. Структура мікроконтролера сімейства MCS-51

2. Програмно доступні ресурси та організація пам'яті

3. Система команд

4. Способи адресації операндів

5. Програмна модель бітового процесора

6. Застосування бітового процесора

СПИСОК ЛІТЕРАТУРИ

1. Структура мікроконтролера сімейства MCS-51

Внутрішня структура вихідного мікроконтролера сімейства MCS-51 (рис.1) включає наступний набір функціональних модулів:

  • 8-розрядне АЛП з апаратною реалізацією операцій типу множення;

  • внутрішня пам'ять програм (4Кбайт) і ОЗУ даних (128 байт);

  • чотири універсальних програмованих паралельних 8-розрядних порту введення-виводу з можливістю реалізації певних альтернативних функцій;

  • два 16-розрядних програмованих таймера / лічильника;

  • дуплексний послідовний порт.

Цей набір апаратних засобів та сукупність реалізованих функцій роблять МК сімейства 8051 ефективним засобом збору, передобробки інформації та управління об'єктом.

Удосконалення HMOS технології, зростання ступеня інтеграції дозволив у рамках усталеної архітектури розширити набір внутрішніх інтерфейсних блоків, збільшити внутрішню пам'ять програм і даних. Таким чином з'явилися мікроконтролери типу 8052. Далі сімейство продовжувало збільшуватися за рахунок модифікацій типу 80С51/52/54/58, виконаних з використанням фірмової компліментарною MOS технології (CHMOS). Ця технологія дозволила зменшити рассеиваемую потужність при звичайній роботі і ввести особливі режими, додатково знижують енергоспоживання. З'явилися мікроконтролери типу 80L52/54/58 із зниженою напругою живлення.

З групою 80C51FA/FB/FC пов'язане запровадження в архітектуру сімейства модуля РСА (programmable counter array) і сторожового таймера WDT (watchdog timer). Модуль РСА призначений для виконання різних операцій рахунку і визначення тривалості інтервалів часу, в тому числі при широтно-імпульсної модуляції. Сторожовий таймер забезпечує перезавантаження процесора при зависаннях. Старшими членами сімейства є мікроконтролери типу 80C51GB, що мають вбудований 8-розрядний АЦП, шість паралельних портів. Сучасні версії мікроконтролерів сімейства MCS-51 виконані з використанням повністю статичної схемотехніки. Це дозволяє зупиняти мікроконтроллер при налагодженні системи, що розробляється.

Рисунок 1 - Структура мікроконтролера 8051AH

2. Програмно доступні ресурси та організація пам'яті

ОМЕВМ (МК сімейства MCS-51) має: 32 POH; 128 визначених користувачем програмно-керованих прапорів; набір регістрів спеціальних функцій. POH і визначені користувачем програмно-керовані прапори розташовані в адресному просторі внутрішнього ОЗУ даних. Регістри спеціальних функцій (SFR, SPECIAL FUNCTION REGISTERS) із зазначенням їх адрес наведено в таблиці 1.

Таблиця 1 - Регістри спеціальних функцій

Позначення

Найменування

Адреса

* АСС

Акумулятор

0Е0Н

* У

Регістр У

0F0H

* PSW

Регістр стану програми

0D0H

SP

Покажчик стека

81Н

DPTR

Покажчик даних. 2 байти:


DPL

Молодший байт

82Н

DPH

Старший байт

83Н

* Р0

Порт 0

80Н

* Р1

Порт 1

90н

* Р2

Порт 2

0А0Н

* РЗ

Порт 3

0В0Н

* IP

Регістр пріоритетів переривань

0В8Н

* IE

Регістр дозволу переривань

0А8Н

TMOD

Регістр режимів таймера / лічильника

89Н

* TCON

Регістр управління таймера / лічильника

88Н

TH0

Таймер / лічильник 0. Старший байт

8СН

TL0

Таймер / лічильник 0. Молодший байт

8АН

TH1

Таймер / лічильник 1. Старший байт

8DH

TL1

Таймер / лічильник 1. Молодший байт

8ВН

* SCON

Управління послідовним портом

98Н

SBUF

Буфер послідовного порту

99Н

PCON

Управління споживанням

87Н

* - Регістри, що допускають побітове адресацію.

Акумулятор. АСС - регістр акумулятора. Команди, призначені для роботи з акумулятором, використовують мнемоніку "А", наприклад, MOV А, Р2. Мнемоніка "АСС" використовується, наприклад, при побітової адресації акумулятора. Так, символічне ім'я п'ятий біта акумулятора при використанні асемблера ASM51 буде наступним: АСС.5.

Регістр В. Використовується під час операцій множення і ділення. Для інших інструкцій регістр В може розглядатися як додатковий сверхоперативной регістр.

Регістр стану програми. Регістр PSW містить інформацію про стан програми.

Покажчик стека SP. 8-бітовий регістр, вміст якого инкрементируется перед записом даних у стек при виконанні команд PUSH і CALL. При початковому скиданні покажчик стека встановлюється в 07Н, а область стека в ОЗП даних починається з адреси 08Н. При необхідності шляхом перевизначення покажчика стека область стека може бути розташована в будь-якому місці внутрішнього ОЗУ даних мікроЕОМ.

Покажчик даних. Покажчик даних (DPTR) складається з старшого байта (DPH) та молодшого байта (DPL). Містить 16-бітову адресу при зверненні до зовнішньої пам'яті. Може використовуватися як 16-бітовий регістр або як два незалежних восьмибітових регістру.

Порт0 - ПортЗ. Регістрами спеціальних функцій Р0, Р1, Р2, РЗ є регістри-"засувки" відповідно портів Р0, Р1, Р2, РЗ.

Буфер послідовного порту. SBUF представляє собою два окремих регістру: буфер передавача і буфер приймача. Коли дані записуються в SBUF, вони надходять у буфер передавача, причому запис байта в SBUF автоматично ініціює його передачу через послідовний порт. Коли дані читаються з SBUF, вони вибираються з буфера приймача.

Регістри таймера. Реєстрові пари (TH0, TL0) і (TH1, TL1) утворюють 16-бітові лічильні регістри відповідно таймера / лічильника 0 і таймера / лічильника 1.

Регістри управління. Регістри спеціальних функцій IP, IE, TMOD, TCON, SCON і PCON містять біти управління й біти стану системи переривань, таймерів / лічильників і послідовного порту. ОМЕВМ при функціонуванні забезпечує:

  • мінімальний час виконання команд складання - 1 мкс;

  • апаратне множення і ділення з мінімальним часом виконання команд множення / поділу - 4 мкс.

Всі ОМЕВМ розглянутого сімейства мають кілька адресних просторів, функціонально і логічно розділених за рахунок різниці в механізмах адресації і сигнали управління записом і читанням: пам'ять програм; внутрішня пам'ять даних; зовнішня пам'ять даних.

Структура адресного простору ОМЕВМ показана на рис. 2. Зліва наводяться адреси відповідних областей пам'яті.

Рисунок 2 - Простір пам'яті ОМЕВМ

Пам'ять програм має 16-бітову адресну шину, її елементи адресуються використанням лічильника команд (PC) або інструкцій, які виробляють 16-розрядні адреси.

Пам'ять програм доступна тільки з читання. ОМЕВМ не мають команд і керуючих сигналів, призначених для запису в пам'ять програм. Пам'ять програм має байтове організацію і загальний обсяг до 64 Кбайт. Ряд OMЕВМ (КР1816ВЕ51, КМ1816ВЕ751, КР1830ВЕ51) містять розташовану на кристалі внутрішню пам'ять програм ємністю 4 Кбайт, яка може бути розширена до 64 Кбайт за рахунок підключення мікросхем зовнішньої пам'яті програм.

ОМЕВМ сімейства MCS -51 мають зовнішній висновок DEMA, за допомогою якого можна заборонити роботу внутрішньої пам'яті програм, для чого необхідно подати на висновок DEMA "0". При цьому внутрішня пам'ять програм відключається і, починаючи з нульового адреси, всі звернення відбуваються до зовнішньої пам'яті програм з формуванням сигналу РМЕ. У випадку, якщо DEMA = 1, працюють і внутрішня, і зовнішня пам'ять програм. Для ОМЕВМ, що не мають внутрішньої пам'яті програм, для нормальної роботи завжди необхідно задавати DEMA = 0.

Таким чином, доступ до зовнішньої пам'яті програм здійснюється у двох випадках:

1) при дії сигналу DEMA = 0 незалежно від адреси звернення;

2) у будь-якому випадку, якщо програмний лічильник (PC) містить число, більше ніж 0FFFH.

Внутрішня пам'ять даних ОМЕВМ складається з двох областей: 128 байт оперативної пам'яті (ОЗП) з адресами 0-7FH і області регістрів спеціальних функцій, що займає адреси 80Н-FFH. Розподіл простору внутрішньої пам'яті даних показано на рис. 3. Фізично внутрішнє ОЗУ даних і область регістрів спеціальних функцій є окремими пристроями.

Усі клітинки внутрішнього ОЗУ даних можуть адресуватися з використанням прямої і непрямої адресації (режими адресації дані в описі системи команд ОМЕВМ). Крім того, внутрішнє ОЗУ даних має такі особливості.

Молодші 32 байти внутрішнього ОЗУ даних згруповані в 4 банки по 8 регістрів в кожному (БАНК0 - БАНКЗ на рис. 3). Команди програми можуть звертатися до регістрів, використовуючи їх імена R0 - R7. Два біта PSW (покажчики банку робочих регістрів RS0 і RS1) визначають, з регістрами якого банку проводяться маніпуляції. Наявність такого механізму роботи з осередками ОЗУ дозволяє економити пам'ять програм, тому що команди, які працюють з регістрами R0-R7, коротше команд, що використовують пряму адресацію.

Наступні після банків регістрів внутрішнього ОЗУ даних 16 байт (адреси 20Н-2FH) утворюють область осередків, до яких можлива побітова адресація. Набір команд ОМЕВМ сімейства MCS -51 містить значну кількість інструкцій, що дозволяють працювати з окремими бітами, використовуючи при цьому прямий адресацію. 128 біт, складових дану область внутрішнього ОЗУ даних, мають адреси 00Н-7FH і призначені для роботи з такими інструкціями.

Малюнок 3 - Адресний простір внутрішньої пам'яті даних

Зовнішня пам'ять даних формується додатковими мікросхемами пам'яті, які підключаються до ОМЕВМ, і може мати ємність до 64 Кбайт. Простору внутрішньої і зовнішньої пам'яті даних не перетинаються, тому що доступ до них здійснюється за допомогою різних команд. Для роботи із зовнішньою пам'яттю даних існують спеціальні команди MOVX, які не впливають на внутрішню пам'ять даних ОМЕВМ. Таким чином, в системі можуть одночасно бути присутньою внутрішня пам'ять даних з адресами 00Н - FFH і зовнішня пам'ять даних з адресами 0000Н - FFFFH.

Звернення до осередків зовнішньої пам'яті даних здійснюється тільки з використанням непрямої адресації по регістрах R0 і R1 активного банку регістрів внутрішнього ОЗУ (команди типу MOV @ Ri) або по регістру спеціальних функцій DPTR (команди типу MOV @ DPTR). Відповідно в першому випадку буде формуватися 8-розрядний, а в другому випадку 16-розрядний адреси зовнішньої пам'яті даних.

При зверненнях до зовнішньої пам'яті даних адреса виводиться через порт Р0 (молодший байт) і порт Р2 (старший байт) ОМЕВМ. Обмін байтом даних (запис і читання) здійснюється через порт Р0 ОМЕВМ, тобто порт Р0 використовується як шина адреси / даних в режимі мультиплексування.

Зчитування даних з зовнішньої пам'яті даних в ОМЕВМ проводиться за допомогою вихідного сигналу ОМЕВМ RD, а запис даних з ОМЕВМ в зовнішню пам'ять даних за допомогою вихідного сигналу ОМЕВМ WR.

Кожен тип зовнішньої пам'яті (пам'ять програм, пам'ять даних) може бути доданий незалежно від іншого і кожен використовує ті ж адреси і шини даних, але різні сигнали управління.

3. Система команд

Система команд ОМЕВМ сімейства MCS-51 має 111 команд і дозволяє реалізувати обробку даних, забезпечити виконання логічних, арифметичних операцій, а також управління в режимі реального часу. Реалізовано побітова, потетрадная (4 біти), побайтова (8 біт) і 16-розрядна обробка даних.

Повний опис команд і приклади їх виконання наведені в додатку Б.

У машинному коді команда займає один, два або три байти і виконується за один, два або чотири (множення і ділення) машинних циклу. При частоті тактового генератора, що дорівнює 12 МГц, одноцікловие команди виконуються за 1 мкс, двоциклового - за 2 мкс і т.д. З 111 типів команд 64 виконуються за 1 мкс (12 тактів), 45 команд - за 2 мкс (24 такту) та дві команди - множення і ділення (MUL, DIV) виконуються за 4 мкс (48 тактів).

Усі команди умовних переходів здійснюються стосовно вмісту лічильника команд з адресою переходу, обчислюваним ЦПУ під час виконання команди.

Трехбайтовие команди переходу і виклику LCALL, LJMP (з 16-розрядним адресою) дозволяють здійснювати перехід і звернення з будь-якою адресою адресного простору пам'яті програм ємністю 64 Кбайт. Якщо необхідний перехід в межах області пам'яті програм 2 К, то можна використовувати команди переходу і виклику з 11-розрядним адресою (ACALL, AJMP). Перехід всередині ділянки пам'яті, який визначається 8-розрядної величиною зміщення, здійснюється за командою SJMP. У табл. 2 наведено позначення і символи, використовувані в системі команд.

Систему команд ОМЕВМ умовно можна розбити на п'ять груп: арифметичні команди; логічні команди з вантовими змінними; команди передачі даних; команди бітового процесора; команди розгалуження програм і передачі управління.

Арифметичні команди. У наборі команд ОМЕВМ є такі арифметичні операції: додавання, додавання з урахуванням прапора перенесення, віднімання з заемом, инкрементирования, декрементірованіе, порівняння, десяткова корекція, множення і ділення.

Таблиця 2 - Позначення символів у наборі команд

Позначення, символ

Призначення

1

2

А

Акумулятор

Rr

Регістри поточного обраного банку регістрів

r

Номер завантаження регістра, зазначеного в команді

direct

Прямо адресується 8-бітовий внутрішній адресу комірки даних, який може бути осередком внутрішнього ОЗУ даних (0-127) або SFR (128-255)

@ Rr

Побічно адресується 8-бітова осередок внутрішнього ОЗУ даних

data 8

8-бітове безпосереднє дане, що входить в код операції (КОП)

Data 16

16-бітове безпосереднє дане, що входить КОП

Data Н

Старші біти (15-8) безпосередніх 16-бітових даних

Data L

Молодші біти (7-0) безпосередніх 16-бітових даних

Addr 11

11-бітову адресу призначення

Addr 16

16-бітову адресу призначення

Addr L

Молодші біти адреси призначення

disp 8

8-бітовий байт зміщення зі знаком

bit

Біт з прямою адресацією, адреса якого містить КОП, що знаходиться у внутрішньому ОЗП даних або SFR

al5, al4 ... a0

Біти адреси призначення

(X)

Вміст елемента Х

((X))

(X) [M]

Вміст за адресою, що зберігається в елементі Х

Розряд М елемента Х

(X) [MI-M2]

Група розрядів М1-М2 елемента Х


+

-

*

/

AND

OR

XOR

/ X

Операції:

складання

віднімання

множення

ділення

логічного множення (операція І)

логічного складання (операція АБО)

додавання за модулем 2 (операція "Що виключає АБО")

інверсія елемента Х

В АЛП виробляються дії над цілими числами без знаку. У двухоперандних операціях: додавання (ADD), складання з перенесенням (ADDC) і віднімання з заемом (SUBB) акумулятор є першим операндом і приймає результат операції. Другим операндом може бути робочий регістр обраного банку робочих регістрів, регістр внутрішньої пам'яті даних з побічно-реєстрової і прямою адресацією або байт безпосередніх даних. Зазначені операції впливають на прапори: переповнення, перенесення, проміжного перенесення і прапор парності в слові стану процесора (PSW).

Використання розряду переносу дозволяє багаторазово підвищити точність при операціях додавання (ADDC) і віднімання (SUBB).

Виконання операцій додавання і віднімання з урахуванням знака може бути здійснено за допомогою програмного керування прапором переповнення (O V) регістра PSW. Прапор проміжного переносу (АС) забезпечує виконання арифметичних операцій в двійково-десятковому коді.

Операції инкрементирования і декрементірованія на прапори не впливають.

Операції порівняння не впливають ні на операнд призначення, ні на операнд джерела, але вони впливають на прапор переносу.

Існують три арифметичні операції, які виконуються тільки на акумуляторі: дві команди перевірки вмісту акумулятора A (JZ, JNZ), і команда десяткової корекції при додаванні двійково-десяткових кодів.

При операції множення вміст акумулятора А множиться на вміст регістра В і результат розміщується наступним чином: молодший байт в регістрі A, старший - в регістрі B.

У разі виконання операції ділення ціле від ділення поміщається в акумулятор А, залишок від ділення - у регістр В.

Логічні команди з вантовими змінними. Система команд ОМЕВМ дозволяє реалізувати логічні операції: "І", "АБО", "ВИКЛЮЧАЄ АБО" на регістрі-акумуляторі (А) і байті-джерелі. Другим операндом (байтом-джерелом) при цьому може бути робочий регістр у вибраному банку робочих регістрів; регістр внутрішнього ОЗУ, що адресується за допомогою побічно-реєстрової адресації; прямо адресуються осередку внутрішнього ОЗУ і регістри спеціальних функцій; безпосередня величина.

Зазначені логічні операції можуть бути реалізовані на будь-якому прямо адресуються регістрі внутрішнього ОЗУ або регістрі спеціальних функцій з використанням в якості другого операнда вмісту акумулятора А чи безпосередніх даних.

Існують логічні операції, які виконуються тільки на акумуляторі: скидання і інвертування всіх восьми розрядів А; циклічний зсув вліво і вправо; циклічний зсув вліво і вправо з урахуванням прапора перенесення; обмін місцями старшої та молодшої тетрад всередині акумулятора.

Команди передачі даних. Таблиці символів (кодів), зашиті в ПЗУ програми, можуть бути вибрані за допомогою команд передачі даних з використанням непрямої адресації. Байт константи може бути переданий в акумулятор з комірки пам'яті програм, що адресується сумою базового регістра (PC або DPTR) та індексного регістра (вмісту А). Це забезпечує, наприклад, зручний засіб реалізації алгоритму перетворення коду ASCII в семисегментний код.

Будь-яка осередок 256-байтового блоку зовнішнього ОЗУ даних може бути вибрана з використанням побічно-реєстрової адресації через регістри покажчики R0 або R1 (вибраного банку робочих регістрів).

Осередок всередині адресного простору 64 Кбайт зовнішнього ОЗУ також може бути вибрана з використанням побічно-реєстрової адресації через регістр-покажчик даних DPTR.

Команди передачі між прямо адресованими регістрами дозволяють заносити величину з порту в клітинку внутрішнього ОЗУ без використання робочих регістрів чи акумулятора.

У логічному процесорі будь прямо адресований біт може бути поміщений в біт перенесення і навпаки.

Вміст акумулятора може бути обміняна з вмістом робочих регістрів (вибраного банку) і з вмістом адресованих за допомогою побічно-реєстрової адресації комірок внутрішнього ОЗУ, а також з вмістом безпосередньо адресованих осередків внутрішнього ОЗУ і з вмістом регістрів спеціального призначення.

Молодша тетрада (розряди 3-0) вмісту акумулятора може бути обміняна з молодшою ​​тетрадою вмісту осередків внутрішнього ОЗУ, обираних за допомогою побічно-реєстрової адресації.

Команди розгалуження і передачі управління. Адресний простір пам'яті програм ОМЕВМ не має сторінкової організації, що дозволяє вільно переміщати фрагменти програми всередині адресного простору, при цьому не потрібно перезасилка (зміна) номера сторінки.

Переміщення окремих фрагментів програми забезпечує можливість використання переміщуваних програмних модулів різними програмами.

Команди 16-розрядних переходів і викликів підпрограм дозволяють здійснювати перехід в будь-яку точку адресного простору пам'яті програм обсягом 64 Кбайт.

Команди 11-розрядних переходів і викликів підпрограм забезпечують переходи усередині програмного модуля ємністю 2 Кбайт. У системі команд є команди умовних і безумовних переходів щодо початкової адреси наступної команди в межах від (РС) -128 до (РС) +127. Команди перевірки окремих розрядів дозволяють здійснювати умовні переходи по стану "0" або "1" прямо адресованих бітів. Команди перевірки вмісту акумулятора (на нуль / не нуль) дозволяють здійснювати умовні переходи по вмісту А.

Побічно-реєстрові переходи в системі команд ОМЕВМ забезпечують галуження щодо базового регістра (вмісту DPTR або PC) зі зміщенням, що знаходяться в акумуляторі А.

Команди бітового процесора. Бітовий процесор є частиною архітектури ОМЕВМ сімейства MCS -51 і його можна розглядати як незалежний процесор побітової обробки. Бітовий процесор виконує свій набір команд, має своє побітове адресується ОЗУ і свій введення-виведення.

Команди, які оперують з бітами, забезпечують пряму адресацію 128 бітів (0-127) у шістнадцяти осередках внутрішнього ОЗУ (комірки з адресами 20Н-2FH) і пряму побітове адресацію регістрів спеціального призначення, адреси яких кратні восьми:

Р0 (80Н), TCON (88H), Р1 (90н), SCON (98H), Р2 (А0Н), Iе (А8Н), РЗ (В0Н), IР (В8Н), PSW (D0H), А (Е0Н), B (F0H).

Кожен з окремо адресованих бітів може бути встановлено у "1", скинутий в "0", інвертований, перевірений. Можуть бути реалізовані переходи: якщо біт встановлений; якщо біт не встановлений; перехід, якщо біт встановлено, зі скиданням цього біта; біт може бути перезаписаний в (з) розряду переносу. Між будь-яким прямо адресуються бітом і прапором переносу можуть бути зроблені логічні операції "І", "АБО", де результат заноситься в розряд прапора перенесення. Команди побітової обробки забезпечують реалізацію складних функцій комбінаторної логіки та оптимізацію програм користувача.

4. Способи адресації операндів

Існують наступні способи адресації операндів-джерел:

  • реєстрова адресація;

  • пряма адресація;

  • побічно-реєстрова адресація;

  • безпосередня адресація;

  • непряма адресація по сумі базового та індексного регістра.

Перші три способи використовуються також для адресації операнда призначення. Вказані п'ять способів адресації, що використовуються в різних поєднаннях, забезпечують 21 режим адресації. Багато команд містять поля: "приймач", "джерело", які визначають тип даних, метод адресації і беруть участь операнди.

Для команд, які не виконують операції перезапису, операнд призначення є і операндом-джерелом.

Велика кількість команд включає операнди, розташовані у внутрішньому ОЗП даних ОМЕВМ. Вибір адресного простору пам'яті програм або зовнішньої пам'яті даних в якості другого операнда визначається командного Мнемонік (якщо тільки другий операнд не є безпосередньою величиною).

Адресуемая область внутрішнього ОЗУ даних визначається способом адресації і величиною адреси. Наприклад, звернення до регістрів спеціальних функцій може бути виконано тільки за допомогою прямої адресації.

Реєстрова адресація. Реєстрова адресація використовується для звернення до восьми регістрів обраного банку (ці ж регістри можуть бути вибрані за допомогою прямої адресації і побічно-реєстрової адресації як звичайні осередку внутрішнього ОЗУ даних).

Реєстрова адресація використовується також для звернення до регістрів А, В, АВ (здвоєному регістра), DPTR і до прапора перенесення С. Використання реєстрової адресації дозволяє отримувати багатобайтових еквівалент трехбайтових команд прямої адресації.

ПРИКЛАД: MOV A, Rn; CLR A; DEC Rn; ADD A, Rn; MOV DPTR, # data16 і ін.

Пряма адресація. Пряма байтове адресація використовується для звертання до комірок внутрішньої пам'яті (ОЗУ) даних (0 - 127) та до регістрів спеціальних функцій.

ПРИКЛАД: MOV A, direct (MOV A, 4FH); MOV direct, direct; IN direct; ADD A, direct і ін.

Пряма побітова адресація використовується для звернення до окремо адресуються 128 бітам, розташованим в комірках з адресами 20Н-2FH і до окремо адресуються бітам регістрів спеціальних функцій.

ПРИКЛАД: SETB BIT (SETB 1 FH); CLR TF 0; CLR C.

Побічно-реєстрова адресація. Побічно-реєстрова адресація використовується для звертання до комірок внутрішнього ОЗУ даних. В якості регістрів-покажчиків використовується регістри R0, R1 обраного банку. У командах PUSH і POP використовується вміст покажчика стека (SP). Побічно-реєстрова адресація використовується також для звернення до зовнішньої пам'яті даних. У цьому випадку за допомогою регістрів-покажчиків R0 і R1 (вибраного банку робочих регістрів) вибирається осередок з блоку в 256 байт зовнішньої пам'яті даних. 16-розрядний покажчик даних (DPTR) може бути використаний для звернення до будь-якій комірці адресного простору зовнішньої пам'яті даних об'ємом до 64 Кбайт.

ПРИКЛАД: MOV A, @ Ri (MOV A, @ R 0); INC @ Ri; ADD A, @ Ri; XRL A, @ Ri; MOVX @ Ri, A; MOVX A, @ DPTR.

Безпосередня адресація. Безпосередня адресація дозволяє вибрати з адресного простору пам'яті програм константи, явно вказані в команді.

ПРИКЛАД: MOV A, # data (MOV A, # 1FH); MOV DPTR, # data16 (MOV DPTR, # 5B4EH); ADD A, # data; XRL A, # data.

Побічно-реєстрова адресація по сумі базового та індексного регістрів. Побічно-реєстрова адресація по сумі: базовий регістр плюс індексний регістр (вміст акумулятора А) спрощує перегляд таблиць, зашитих у пам'яті програм. Будь-який байт з таблиці може бути обраний за адресою, що визначається сумою вмісту DPTR або PC і вмісту А.

ПРИКЛАД: MOVC A, @ A + DPTR; MOVC A, @ A + PC; JMP @ A + DPTR.

5 Програмна модель бітового процесора

Придатність архітектури кожного комп'ютера для конкретного класу задач визначається тим, наскільки його система команд відповідає завданням, які повинні бути виконані. Тому для дискретного управління в реальному масштабі часу у системі команд операцій безпосередньо над бітами призводить до створення більш продуктивних систем та програм обробки вхідний і вихідний двійкової інформації. З цією метою в ОМЕВМ сімейства MCS-51 введені спеціальні засоби, звані двійкового процесором, які підтримують прямі логічні операції з окремими бітами і операції їх тестування і дозволяють використовувати однобітовий змінні в логічних операціях.

У зв'язку з цим у систему команд ОМЕВМ сімейства MCS -51 введені спеціальні інструкції для виконання операцій з бітовими змінними. Є 17 таких команд, які перераховані в табл. 3.

Таблиця 3 - Команди бітового процесора

Мнемонічне позначення

Опис команди

Число байтів

Число циклів

SETB C

Установка прапора перенесення

1

1

SETB bit

Установка біта

2

1

CLRC

Скидання прапора перенесення

1

1

CLR bit

Скидання біта

2

1

CPL C

Інверсія прапора перенесення

1

1

CPL bit

Інверсія біта

2

1

MOV C, bit

Пересилання біта в прапор переносу

2

1

MOV bit, C

Пересилання прапора перенесення в біт

2

2

ANL C, bit

"Логічне І" біта і прапора перенесення

2

2

ANL. C, / bit

"Логічне І" інверсії біта і прапора перенесення

2

2

ORL C, bit

"Логічне АБО" біта і прапора перенесення

2

2

ORL C, / bit

"Логічне АБО" інверсії біта і прапора перенесення

2

2

JC rel8

Перехід, якщо прапор переносу встановлений

2

2

JNC rel8

Перехід, якщо прапор переносу скинутий

2

2

JB bit, rel8

Перехід, якщо біт встановлено

3

2

JNB bit, rel8

Перехід, якщо біт скинутий

3

2

JBC bit, rel8

Перехід, якщо біт встановлений, і скидання цього біта

3

2

ПОЗНАЧЕННЯ:

С - прапор переносу;

bit - 128 програмно-доступних бітів, будь I / O висновок, біт управління або стану;

/ Bit - 128 програмно-доступних бітів, будь I / O висновок, біт управління або стану, взяті з інверсією;

rel8-байт відносного зсуву (умовний перехід здійснюється в діапазоні від -128 до +127 байтів щодо адреси першого байта наступної команди).

Ці команди в залежності від виконуваної функції можуть бути одно-, двох-або трехбайтние. Ті з них, які оперують з прапором переносу, мають однобайтовим код або код, за яким слід байт зсуву, що використовується для обчислення адреси умовного переходу (рис. 4.а). У більш узагальнених командах бітових операцій після коду додається байт адреси прямоадресуемого біта, утворюючи двох-або трехбайтние команди (рис. 4.б). На рис. 4 для довідки наведено коди цих команд.

За допомогою зазначених команд можна звертатися безпосередньо до 128 бітам внутрішнього ОЗУ і до 83 бітам одинадцяти восьмирозрядних регістрів ОМЕВМ.

Код команди:



Код команди:

SETB З



11010011В (D3H)

CLR З



11000011В (С3Н)

CPL З



10110011В (В3Н)

Код команди

Зсув



JC

<Ге18>


01000000В (40Н)

JNC

<Ге18>


01010000В (50Н)

а) Команди перевірки та управління прапором переносу

Код команди

Адреса біта


Код команди:

SETB

<bit>


11010010B (D2H)

CLR

<bit>


11000010В (С2Н)

CPL

<bit>


10110010В (В2Н)

MOV С,

<bit>


10100010В (А2Н)

MOV

<bit>, З


10010010В (92Н)

ANL С,

<bit>


10000010В (82Н)

ANL С,

</ Bit>


10110000В (В0Н)

ORL С,

<bit>


01110010В (72Н)

ORL С,

</ Bit>


10100000В (А0Н)

Код команди

Адреса біта 1

Зсув


JB

<bit>,

<Ге18>

00100000В (20Н)

JNB

<bit>,

00010000В (10H)

00110000В (30Н)

JBC

<bit>,

<Ге18>

00010000В (10H)

б) Команди перевірки та операцій з битами

Рисунок 4 - Формати команд операцій над бітами

У залежності від значення байта адреси прямо адресований біт вибирається з двох груп бітів. Значення адреси від 0 (00Н) до 127 (7FH) визначають біти в 16-байтним блоці внутрішнього ОЗУ між адресами 20Н і 2FH (див. рис.5). Вони пронумеровані послідовно від молодшого біта молодшого байта до старшого біту старшого байта. Адреси бітів від 128 (80Н) до 255 (0FFH) відповідають бітам регістрів спеціальних функцій. Адреси цих бітів обчислюються інакше, ніж адреси осередків ОЗУ: п'ять старших бітів адреси збігаються з власними адресами регістрів, а три молодших біта адреси ідентифікують позицію біта в межах регістра (див. ріс.5б).

Хоча MCS-51 має 20 регістрів спеціальних функцій, побітовий доступ забезпечений тільки для 11 (PSW, АСС, В, P0, P1, P2, P3, TCON, SCON, IE, IP). У 6 з них (PSW, Р3, TCON, SCON, IE, IP) розряди мають власні символічні імена (рис.6).

Команди загального призначення, адресуються безпосередньо до бітам, можуть звертатися до них (у тому числі і до біту переносу), використовуючи відповідну мнемоніку: CY, AC, F0 і т.д.

До бітам всіх 11 регістрів також можна звернутися, використовуючи відповідне позиційне позначення: PSW.1, АСС.2, В.З, Р0.4 і т.д.

Регістр АСС (акумулятор) і регістр У ставляться до байтовой арифметиці, а їх окремі біти можуть використовуватися в програмі як довільних 16 прапорів. У сумі з 128 осередками ОЗУ це дає 144 бітові осередку загального призначення для зберігання змінних або програмних прапорів.

Малюнок 5 - Адреси прямо адресованих бітів

Усі 32 виведення портів Р0-РЗ можуть індивідуально адресуватися як вхід, вихід або вхід / вихід в будь-якій комбінації. Будь-який висновок може служити програмно реалізованим стробом, тестовим входом або послідовним каналом введення / виводу.

Для обробки бітів регістрів ОЗУ, що не мають побітового доступу, можуть бути використані логічні операції з байтами.

Регістр слова стану програми PSW містить біти прапорів та стану процесора, включаючи прапор переносу. Операції обробки байтів, впливаючи на регістр PSW, можуть таким чином впливати і на біт перенесення.

Малюнок 6 - Формат регістрів спеціальних функцій, що мають символічні імена прямо адресованих бітів

У мові асемблера MCS -51, як показано у таблиці 3, адреса біта вказується одним з трьох способів: числом або виразом, відповідним прямим адресою біта; назвою або адресою регістра, що містить даний біт, і позицією біта в регістрі (0-7) , розділеними крапкою; для певних бітів (рис.6) - вказівкою символічного імені. Біти також можуть позначатися довільними іменами директивою асемблера "BIT". Наприклад, 5-й біт регістра PSW може бути очищений будь-який з чотирьох команд:

USR_FLG

BIT PSW.5

; Опис символу користувача


CLR 0D5H

; Абсолютна адресація


CLR PSW.5

; Використання точкового оператора


CLR F0

; Використання власного імені біта


CLR USR_FLG

; Символ користувача.

6. Застосування бітового процесора

Програмна реалізація послідовного порту. ОМЕВМ сімейства MCS -51 можуть програмно приймати і передавати послідовні дані з використанням системи команд бітового процесора. Оскільки будь-який висновок порту може служити послідовним входом або виходом, одночасно можна організувати кілька послідовних ліній зв'язку.

На рис. 7 показані алгоритми прийому і передачі байтів даних. Програма буде звертатися до цього алгоритму 8 разів, синхронізуючись старт-бітом, тактовим сигналом, програмної затримкою або перериванням від таймера. Дані приймаються шляхом опитування вхідного виводу, присвоєння біту перенесення стану цього висновку, зсуву біта перенесення в буфер даних і збереження отриманого значення в ОЗУ. Передача відбувається шляхом зсуву вмісту буфера переданого байта через перенесення і видачі стану прапора перенесення на вихідний висновок.

Малюнок 7 - Алгоритми послідовного порту вводу / виводу

На рис. 8 наведено програми, що реалізують показані на рис. 7 алгоритми прийому і передачі для трьох різних мікропроцесорів: 8085, 8048 і 8051. Програмна реалізація послідовного порту на MCS -51 найбільш ефективна. Представлені оціночні характеристики підтверджують ефективність реалізації послідовного порту на базі MCS -51.

Рішення рівнянь комбінаторної логіки. На рис. 9 показана реалізація на ТТЛ-елементах функції шести змінних від U до Z, яка є рішенням рівняння

Q = (U × (V + W)) + (X × Y) + Z.

Рівняння такого роду вирішуються за допомогою карт Карно або апарату алгебри булевої логіки. Для порівняння виконаємо цю функцію трьома способами, обмежуючись трьома підмножинами системи команд MCS -51.

Припустимо, що U та V є вхідними висновками деякого порту, W і Х - біти стану двох периферійних контролерів, a Y і Z - програмні прапори, раніше встановлені в програмі. Остаточний результат повинен видаватися на вихідний висновок порту.

Перші два способи рішення грунтуються на алгоритмі, показаному на рис. 10, який може бути виконаний практично будь-яким мікропроцесором. Виконання програми йде з перевірками і розгалуженням, до тих пір поки не буде отриманий результат, який видається на порт.

8085

8048

8051

IN SERPORT


MOV C, SERPIN

ANI MASK

CLRC


JZ L0

JNT0 L0


CMC

CPLC


L0: LXI HL, SERBUF

L0: MOV R0, # SERBUF


MOV A, M

MOV A, @ R0

MOV A, SERBUF

RR

RRC A

RRCA

MOV M, A

MOV @ R 0, A

MOV SERBUF, A

8 команд

7 команд

4 команди

14 байт

9 байт

7 байт

56 станів

9 циклів

4 цикли

19 мкс

22,5 мкс

4 мкс


а) підпрограма введення


8085

8048

8051

LXI HL, SERBUF

MOV R0, # SERBUF


MOV A, M

MOVA, @ RO

MOV A, SERBUF

RR

RRCA

RRCA

MOV M, A

MOV @ R0, A

MOV SERBUF, A

IN SERPORT



JC H1

JCHI


L0: ANI NOT MASK

ANL SERPRT, # NOT MASK

MOV SERPIN, C

JMP CNT

JMPCNT


H1: ORI MASK

H1: ORL SERPRT, # MASK


CNT: OUT SERPORT

CNT:


10 команд

8 команд

4 команди

20 байт

13 байт

7 байт

72 стану

11 циклів

5 циклів

24 мкс

27,5 мкс

5 мкс


б) підпрограма виведення


Рисунок 8 -

Підпрограми послідовного вводу / виводу

У першому варіанті рішення (приклад 1) не використовуються команди бітового процесора, хоча використовується мнемоніка MCS -51. Інші процесори можуть виконати аналогічні дії, використовуючи власну мнемоніку типу INPUT, OUTPUT, LOAD, STORE і т.д.

Завдяки можливостям перевірки бітів одна команда MCS 51 може замінити послідовність "переслати / маскувати / умовно перейти". Це дозволяє скоротити програму (приклад 2). Для зручності кожній вхідної змінної присвоєно символічне ім'я.

Рисунок 9 - Апаратне рішення логічної функції

Рисунок 10 - Програмне рішення логічної функції

Більш гарне рішення (приклад 3) виходить із застосуванням команд бітового процесора, завдяки чому вдається написати програму без команд умовного переходу. При завершенні програми отриманий результат присвоюється прапору переносу, що копіюється на вихідний висновок.

Таким чином ОМЕВМ сімейства MCS -51 можуть моделювати будь-яку комбінаційну схему з N-числом входів за допомогою щонайбільше N +1 рядків вихідної програми: по одному рядку на кожен вхід і ще одна на збереження результату. Можливе обмеження при моделюванні великого числа входів і виходів визначається довжиною програми і фіксованим числом висновків портів.

Приклад 1. Використання команд з вантовими операндами

BFUNC1

обчислює логічну функцію 6 змінних шляхом завантаження байта маскування відповідних бітів в акумуляторі і виконання умовних переходів. Байти і маски відповідають адресами і двійкового позиціях. (Використовується для процесорів, орієнтованих на роботу з байтами)

OUTBUF

DATA

22H; карта стану виходів

TESTV:

MOV

A, P2


ANL

A, # 00000100B


JNZ

TESTU


MOV

A, TCON


ANL

A, # 00100000B


JZ

TESTX

TESTU:

MOV

A, P1


ANL

A, # 00000010B


JNZ

SETQ

TESTX:

MOV

A, TCON


ANL

A, # 00001000B


JNZ

TESTZ


MOV

A, 20H


ANL

A, # 00000001B


JZ

SETQ

TESTZ:

MOV

A, 21H


ANL

A, # 00000010B


JZ

SETQ

CLRQZ:

MOV

A, OUTBUF


ANL

A, # 11110111B


JMP

OUTQ

SETQ:

MOV

A, OUTBUF


ORL

A, # 00001000B

OUTQ:

MOV

OUTBUF, A


MOV

P3, A

Приклад 2. Використання команд перевірки бітів

BFUNC2

обчислює логічну функцію 6 змінних шляхом прямого опитування кожного біта. Біти позначені відповідно до символів, використаними в алгоритмі (Використовується можливість перевірки бітів)

U

BIT

Pl.l

V

BIT

P2.2

W

BIT

TF0

X

BIT

IE1

Y

BIT

20H.0

Z

BIT

21H.1

Q

BIT

P3.3

TEST_V:

JB

V, TEST_U


JNB

W, TEST_X

TEST_U:

JB

U, SET_Q

TEST_X:

JNB

X, TEST_Z


JNB

Y, SET_Q

TEST_Z:

JNB

Z, SET_Q

CLR_Q:

CLR

Q


JMP

NXTTST

SET_Q:

SETB

Q

NXTTST:

...

; Продовження програми

Приклад 3. Використання бітового процесора

FUNC3

Обчислює логічну функцію 6 змінних з використанням можливостей бітового процесора MCS -51.


MOV

C, V



ORL

C, W

; Вихід вентиля АБО


ANL

C, U

; Вихід верхнього вентиля І


MOV

0F, C

; Збереження проміжного стану


MOV

C, X



ANL

C, / Y

; Вихід нижнього вентиля І


ORL

C, 0F

; Використання раніше обчисленого значення


ORL

C, / Z

; Використання останньої вхідної змінної


MOV

C, / Z

; Висновок результату

У розділі 7 посібники розглянуті практичні приклади та їх реалізація на основі системи команд і програмної моделі ОМЕВМ сімейства MCS -51. Всі наведені рішення завдань мають програмну сумісність з наступними модифікаціями 8-розрядних мікроконтролерів фірми INTEL, включаючи MCS -251.

СПИСОК ЛІТЕРАТУРИ

1. Ісаченко В.П., Осипова В.А., Сукомел А.С. Комп'ютерна електроніка. Підручник для вузів. 3-тє вид. перераб. і доп. М.: Енергія. 2005.-488 с.

2. Міхєєв М.А., Міхєєва І.М. Основи радіоелектроніки. М.: Енергія. 2003.-368 с.

3. Краснощеков Е.А., Сукомел А.С. Задачник з електроніки. М.: Енергія. 1999-280 с.

4. Козлова О.В., Новіков Ю.Л., Бочарова Т.М. Стандарт підприємства. Оформлення розрахунково-пояснювальної записки та графічної частини. СТП ВДТУ 004-2003.-42 с.

5. Теплотехнічний довідник. Під заг. ред. В.Н. Юренева і П.Д. Лебедєва. По-2х т. Вид. 2-е, перероб. М., "Енергія", 2006.-897 с.


Додати в блог або на сайт

Цей текст може містити помилки.

Комунікації, зв'язок, цифрові прилади і радіоелектроніка | Курсова
124.7кб. | скачати


Схожі роботи:
Мікро ЕОМ на основі МПК - 1804
Організація інтерфейсу в мікро ЕОМ
Основні параметри мікро-ЕОМ серії КР
Мікропроцесорні системи
Мікропроцесорні системи автоблокування
Мікропроцесорні засоби та системи
Вбудовані WEB сервери Автоматизовані системи в обліку підприємства
Вбудовані WEB-сервери Автоматизовані системи в обліку підприємства
Мікропроцесорні системи управління інформацією
© Усі права захищені
написати до нас