
- •1 Модульна структура мпс 9
- •2 Системи числення, коди, двійкова і двійково-десяткова арифметика, що використовується в мпс 15
- •3 Внутреннее построение мп и омэвм 32
- •4 Програмування мпс 46
- •5 Проектування модуля пам'яті мікропроцесорної системи 80
- •6 Введення-виведення даних у мпс 96
- •7 Системи переривань мп і омеом 117
- •8 Формування часових інтервалів у мпс 120
- •9 Зв'язок мп-ра і омеом з аналоговим об'єктом управління і з пк 133
- •Мета викладання дисципліни
- •Розробка програмного забезпечення для мпсу
- •1 Модульна структура мпс
- •1.1 Поняття мікропроцесор (мп), мікро - еом, однокристальна мікро-еом (омеом)
- •1.2 Призначення основних модулів мпс
- •1.3 Системна шина: адреси, даних і управління (рисунок 1.1)
- •1.4 Загальна характеристика мп-ра і однокристальної мікро-еом (омеом)
- •2 Системи числення, коди, двійкова і двійково-десяткова арифметика, що використовується в мпс
- •2.1 Двійкові, десяткові, двійково-десяткові (в упакованому і неупакованном форматі), восьми і шістнадцятирчні числа і коди, що використовуються в мпс. Коди ascii і коі-7
- •2.1.1 Десяткова система числення
- •2.1.2 Двійкова система числення
- •2.1.2.1 Переклад чисел із десяткової системи числення в двійкову
- •2.1.2.2 Двійкове рахування
- •2.1.3 Восьмерична система числення
- •2.1.3.1 Переклад чисел із десяткової системи числення в восьмеричну
- •2.1.3.2 Переклад із двійкової системи числення в восьмеричну
- •2.1.4 Представлення чисел в шістнадцятеричній системі числення
- •2.1.5 Двійково-десяткові числа (коди)
- •2.1.5.1 Двійково-десяткові числа в упакованому форматі
- •2.1.5.2 Двійково-десяткові числа в неупакованому форматі
- •2.1.5.3 Представлення десяткових чисел в коді ascii
- •Таблиця 2.4 – Код ср-866 (Dos)
- •2.2 Формати подання чисел: цілі числа зі знаком і без знаку
- •2.2.1 Подання чисел зі знаком
- •2.2.1.1 Прямий код числа
- •2.2.1.2 Зворотний код числа
- •2.2.1.3 Додатковий код числа
- •2.3 Формати чисел з нефіксованою точкою
- •2.5.3 Двійкове множення
- •2.5.4 Двійкове ділення
- •2.6 Двійково-десяткова арифметика
- •3 Внутреннее построение мп и омэвм
- •3.1 Структурна схема типового однокристального мікропроцесору (мп). Призначення окремих виводів і керуючих сигналів
- •Таблиця 3.1 - Призначення виводів і керуючих сигналів мп кр580вм80а
- •3.2 Основні вузли мп-ру вм80а (i8080)
- •3.3 Підключення мп до системної шини (сш) мікропроцесорної системи (мпс)
- •3.4 Структурна схема типової однокристальної мікро-еом (омеом). Призначення окремих виводів
- •3.5 Основні вузли омеом. Загальні риси і відмінності від структури мп
- •3.5.1 Загальні риси і відмінності структури омеом від структури мп, наприклад, 8-ми розрядного типу кр580вм80а
- •3.6 Тимчасові співвідношення в мп і омеом: такт, машинний цикл, командний цикл
- •4 Програмування мпс
- •4.1 Місце і роль керуючої програми в роботі мпс
- •4.2 Послідовність розробки робочої керуючої програми
- •4.3 Асемблер – машинно - орієнтована мова програмування
- •4.4 Основні системні програми: транслятори, компілятори, асемблери, налагоджувачі і інш.
- •4.5 Програмна (програмістська) модель мп-ра і омеом. Слово стан програми
- •Таблиця 4.1 - Позначення розрядів регістру ссп (psw) омеом мк51
- •Таблиця 4.2 - Призначення окремих розрядів регістру ссп (psw) омэвм мк51
- •Регістр пріорітетів пререривань Регістр маски пререривань
- •4.6 Характеристика системи команд мп-рів і омеом
- •4.6.1 Формати команд і даних
- •4.6.1.1 Формати команд
- •4.6.1.2 Формати даних
- •4.6.2 Довжина команд у байтах і їх розміщення у пам'яті програм
- •4.6.3 Вплив команд на прапорці (ознаки)
- •Таблиця4.4 – Команди, що впливають на установку прапорців омэвм
- •4.6.4 Час виконання команд
- •4.7 Способи адресаціі операндів
- •4.8 Основні групи команд мп і омеом
- •Таблиця 4.13 – Команди логічні, зсуву і обробки рядків
- •Таблиця 4.14 – Команди передачі управління і керування мікропроцесором
- •5 Проектування модуля пам'яті мікропроцесорної системи
- •5.1 Місце модуля пам'яті в мікропроцесорній системі (мпс)
- •5.2 Основна і зовнішня пам'ять мпс. Резидентна пам'ять омеом
- •5.3 Динамічна і статична пам'ять
- •5.4 Основні характеристики зп
- •5.5 Адресація комірок пам'яті всередині мікросхем
- •5.6 Проектування зп необхідного обсягу і розрядності
- •5.7 Розподіл необхідного обсягу зп між озп і пзп
- •5.8 Розробка засобів сполучення озп і пзп із системною шиною
- •5.9 Особливості проектування пам'яті великого обсягу. Розподіл пам'яті на сторінки
- •5.10 Види мікросхем пзп
- •5.11 Фізична і логічна організація пам'яті
- •5.12 Розподіл пам'яті на банки
- •5.13 Організація стека
- •5.14 Введення-виведення з прямим доступом до пам'яті
- •5.15 Приклад проектування модуля пам'яті
- •6 Введення-виведення даних у мпс
- •6.1 Місце пристроїв введення-виведення (пвв) у мпс
- •6.2 Інтерфейс мікропроцесора (омеом) і пвв
- •6.3 Резидентна (власна) і зовнішня система введення-виведення мп-в і омеом
- •6.4 Паралельний і послідовний введення-виведення
- •6.5 Обмін даними в мпс під керуванням програми і по перериванню
- •6.6 Підключення пвв до системної шини і зовнішніх пристроїв
- •6.6.1 Спрощена структура ппі вв55
- •6.7 Програмування введення-виведення
- •6.7.1 Програмування ппі вв55
- •6.7.1.1 Режими роботи ппі
- •6.7.1.2 Обмін інформацією через ппі в режимі 1
- •6.7.1.2.1 Введення в режимі 1
- •6.7.1.2.2 Виведення у режимі 1
- •6.8 Адресація пвв
- •7 Системи переривань мп і омеом
- •7.1 Система переривань мп-ра вм86
- •7.2 Система переривань омеом типу мк51
- •7.1 Система переривань мп-ра вм86
- •7.2 Система переривань омеом типу мк51
- •Таблиця 7.1 – Джерела переривань і адреси підпрограм що їх обслуговують
- •8 Формування часових інтервалів у мпс
- •8.1 Способи формування часових інтервалів
- •8.2 Використання таймерів у мпс
- •8.2.1 Програмований таймер кр580ви53
- •8.2.1.1 Умовна позначка і будова таймера
- •Таблиця 8.2 – Вплив управляючих сигналів на роботу таймера
- •8.2.1.2 Режими роботи таймера
- •8.2.1.3 Програмування роботи пт
- •8.2.1.4 Зчитування інформації з таймера
- •8.2.1.5 Приклад застосування таймера
- •8 Рисунок 8.5 – Використовування таймера кр580ви53 в схемі поєднання мікропроцесорної системи з модемом .2.2 Блок таймерів-лічильників омеом
- •9 Зв'язок мп-ра і омеом з аналоговим об'єктом управління і з пк
- •9.1 Структура типової локальної мікропроцесорної системи управління (лмпсу)
- •9.1.1 Призначення і схемна реалізація окремих вузлів лмпсу
- •9.1.1.1 Аналоговий мультиплексор (ампс)
- •9.1.1.2 Пристрій вибірки-зберігання (пвз)
- •9.1.1.3 Аналого-цифровий перетворювач (ацп)
- •9.1.1.4 Ведена однокристальна мікроЕом (омеом)
- •9.1.1.5 Шинний формувач (шф)
- •9.1.1.6 Регістри (Рг1...Рг3)
- •9.1.1.7 Схеми узгодження рівнів (сур1...Сур3)
- •9.2 Застосування ацп і пвз при введенні аналогової інформації в мпс
- •9.2.1 Розрахунок ацп
- •9.2.2 Ацп к1113 пв1
- •9.2.2.1 Опис мікросхеми к1113 пв1
- •9.2.2.2 Розрахунок мікросхеми к1113 пв1
- •9.2.2.3 Введення даних від ацп в мпс через ппі в режимі 0
- •9.2.3 Пристрій вибірки і зберігання (пвз)
- •9.2.3.1 Обґрунтування застосування пвз
- •9.2.3.2 Принцип дії, схема й основні параметри пвз
- •9.2.3.3 Функціональні можливості і схема включення мікросхеми пвз к1100ск2 (кр 1100ск2)
- •9.2.4 Ацп max154
- •9.2.4.1 Опис мікросхеми max154. Часові діаграми і режими роботи
- •9.2.4.1.1 Опис роботи паралельного 4-х розрядного ацп
- •9.2.4.2 Розрахунок ацп max154
- •9.3 Застосування цап при виведенні цифрової інформації з мпс1
- •9.3.1 Розрахунок цап на матриці r-2r з підсумовуванням струмів
- •9.3.2 Цап к 572 па1
- •9.3.2.1 Опис мікросхеми к 572 па1
- •9.3.2.2 Розрахунок цап к 572 па1
- •9.3.3 Цап max506
- •9.3.3.1 Опис мікросхеми max506
- •9.3.3.2 Розрахунок цап max506
- •9.4 Особливості апаратної і програмної реалізації модуля ацп- цап мпс
- •9.4.1 Апаратний рівень
- •9.4.2 Програмний рівень
- •9.5 Обмін між мп-м (омеом) і пк по послідовному каналу зв'язку за допомогою інтерфейсу rs-232с
- •9.5.1 Універсальний асинхронний послідовний програмований приймач – передавач (уапп)
- •9.5.2 Пристрій перетворення рівнів (ппр)
- •9.5.3 Роз’єм rs-232c
- •9.5.4 Буферний регістр адреси rs – 232с
- •9.5.5 Шинний формувач
- •9.6 Вибір і розрахунок датчиків, нормуючих перетворювачів і фільтрів нижніх частот (фнч)
- •9.6.1 Вибір і розрахунок датчиків і нормуючих перетворювачів
- •9.6.1.1 Вибір датчиків
- •9.6.1.2 Вибір і розрахунок нормуючих перетворювачів
- •9.6.2 Вибір фнч
- •9.6.3 Розрахунок фнч
- •9.7 Розробка схеми алгоритму і керуючої програми
- •Список літератури
2.2.1.3 Додатковий код числа
Ще одним способом подання негативного числа є додатковий код, або двійкове доповнення. Двійкове доповнення утворюється відніманням числа фіксованої довжини (тобто доповненого нулями ліворуч) з цілого числа, на одиницю більшого, ніж максимальне число, яке може оброблятися в данній ЭВМ. Наприклад, число -3 можна подати в додатковому коді наступним чином:
(1 0 0 0 0 0 0 0 0 )2 (0 0 0 0 0 0 1 1)2 = (1 1 1 1 1 1 0 1)2
(+256D) (+3D) (+253D або –3D)
Існує, однак, і більш компактний метод одержання додаткового коду. Для цього необхідно: 1) замінити всі нулі на одиниці, а одиниці на нулі в двійковому поданні модуля числа; 2) додати одиницю до результату.
Подання чисел у вигляді додаткового коду має наступні переваги порівняно з іншими формами подання:
додавання і віднімання виконуються на практиці просто;
існує єдине подання нуля.
Як видно з таблиці 2.7 за допомогою 8 біт можно подати в двійковій формі десяткові числа зі знаком від - 128 до + 127, включаючи 0. В цій таблиці показані два типові для мікропроцесорів способи використання двійкових кодів: як двійкових чисел зі знаком, так і без знака. Лівий стовпчик містить двійкові числа (двійкові коди) від 0000 0000 до 1111 1111, правий стовпчик - їх десяткові еквіваленти від 0 до 255, отримані з припущення, що розглядаються числа без знаку. У центральному стовпчику знаходяться десяткові еквіваленти двійкових чисел лівого стовпчика, отримані з припущення, що негативні числа записувалися в додатковому коді. Тут позитивним двійковим числам (від 0000 0000 до 0111 1111) відповідають десяткові числа від 0 до + 127, а тим, що вміщують 1 в восьмому розряді негативні двійкові числа (від 1000 0000 до 1111 1111) - десяткові від - 128 до - 1.
Використовуючи вісім двійкових розрядів і подаючи негативні числа в додатковому коді, можна записати 256 різних чисел: 127 позитивних, нуль і 128 негативних. Згадану вище процедуру формування доповнення - подання негативного числа в зворотньому коді і додавання одиниці - продемонструємо на наступному прикладі:
Число 410 в двійковій формі |
0000 100 |
Зворотний код числа 410 |
1111 011 |
Доповнена до зворотнього коду 12 |
1 |
Число 410 в додатковому коді |
111 1100 |
Таблиця 2.7 - Десяткові еквіваленти двійкових чисел
|
Десятковий еквівалент | |
8-розрядне двійкове число |
Двоійкового числа зі знаком (негативне число в додатковому коді) |
Двійкового числа без знака |
0000 0000 0000 0001 0000 0010 0000 0011 . . . 0111 1100 0111 1101 0111 1110 0111 1111 1000 0000 1000 0001 1000 0010 1000 0011 . . . 1111 1100 1111 1101 1111 1110 1111 1111 |
+0 +1 +2 +3 . . . +124 +125 +126 +127 -128 -127 -126 -125 . . . -4 -3 -2 -1 |
0 1 2 3 . . . 124 125 126 127 128 129 130 131 . . . 252 253 254 255 |
Порівняйте отриманий результат з відповідним кодом в таблиці 2.7.
Для подання двійкового числа в додатковому коді можна користуватися іншим способом, відмінним від описаного вище і більш коротким по числу операцій. В пошуках першого біта, рівного одиниці, переглядають справа наліво розряди двійкового подання модуля числа, починаючи з найменшого по значенню. До тих пір поки зустрічаються нулі, їх копіюють в однойменні розряди результату. Перша що зустрілася одиниця також копіюється в відповідний розряд результату, але кожний наступний біт модуля вихідного числа замінюється на зворотній.
Відповідно таблиці 2.7 арифметичні операції над двійковими числами без знака нічим не відрізняються від подібних операцій над двійковими числами зі знаком, від’ємні з яких подані своїми доповненнями. Це істотно спрощує апаратну реалізацію подібних операцій в мікропроцесорі. Однак слід не втрачати з виду, з якими числами ви маєте справу в даний момент: без знака чи зі знаком. Наприклад, при додаванні двох чисел без знака результат – число без знака подається у вигляді деякої послідовності бітів, котру можна інтерпретувати і як від’ємне число в додатковому коді.
В загальному випадку при додаванні або відніманні чисел зі знаком результат є число зі знаком; якщо при цьому біт старшого розряду дорівнює одиниці, то результат – від’ємне число в додатковому коді. Якщо потрібно визначити абсолютне значення (величину) від’ємного результату, останній необхідно представити в зворотньому коді, а потім додати одиницю. Існує більш простий спосіб визначення абсолютного значення від’ємного двійкового числа: необхідно додати вагу двійкових розрядів, які вміщують нулі, і до суми додати одиницю.
В простоті операцій над відємними числами у вигляді доповнень, можна переконатися на прикладі обчислення, яке виконується наступним чином: визначається додатковий код від'ємника і виконується додавання цього коду з зменшуваним. Якщо різниця – число позитивне (біт старшого розряду дорівнює 0), то біт переносу необхідно відкинути: отримана послідовність бітів і є двійковий код. Якщо різниця – число від’ємне (біт старшого розряду дорівнює 1), то вона представлена в додатковому коді. Вище вказувалося, що необхідно зробити для визначення абсолютної величини від’ємного числа, поданого в такому вигляді.
Приклад 1. Обчислити різницю чисел 58 – 23:
а) Визначення додаткового коду числа 23
0 0 0 1 0 1 1 1 Число 2310
1 1 1 0 1 0 0 0 Зворотній код числа 2310
0 0 0 0 0 0 0 1 Одиниця, що додається до зворотнього коду
____________
1 1 1 0 1 0 0 1 Додатковий код числа 2310
б) Обчислення різниці
Десяткова Двійкова
арифметика арифметика
58 0 0 1 1 1 0 1 0 Число 5810
- +
23 1 1 1 0 1 0 0 1 Додатковий код числа 2310
___ ____________
35
1 0 0 1 0 0 0 1 1 Різниця 3510
Одиниця переносу, що відкидається у випадку позитивного результату.
Приклад 2. Обчислити різницю чисел 26 – 34:
а) Визначення додаткового коду числа 34
0 0 1 0 0 0 1 0 Число 3410
1 1 0 1 1 1 0 1 Зворотній код числа 3410
0 0 0 0 0 0 0 1 Одиниця, що додається до зворотнього коду
____________
1 1 0 1 1 1 1 0 Додатковий код числа 3410
б) Обчислення різниці
Десяткова Двійкова
арифметика арифметика
26 0 0 0 1 1 0 1 0 Число 2610
- +
34 1 1 0 1 1 1 1 0 Додатковий код числа 3410
___ ____________
- 08 1 1 1 1 1 0 0 0 Різниця в формі доповнення (оскільки в старшому розряді 1)
в) Визначення абсолютного значення різниці
1 1 1 1 1 0 0 0 Додатковий код різниці
0 0 0 0 0 1 1 1 Зворотній код різниці
0 0 0 0 0 0 0 1 Одиниця, що додається до зворотнього коду
____________
0 0 0 0 1 0 0 0 Абсолютне значення різниці (810).
Другий спосіб визначення абсолютного значення від’ємного числа 11111000:
20+21+22+1=1+2+4+1=8.