- •Лабораторна робота № 1 Тема: структура учбової мікропроцесорної лабораторії, клавіатура керування, індикація
- •Коротка інформація
- •Порядок виконання лабораторної роботи
- •Лабораторна робота № 2 Тема: пам’ять учбової мікропроцесорної лабораторії, дослідження виконання програм в покроковому I автоматичному режимах
- •Коротка інформація
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 3 Тема: дослідження програмно-доступних регістрів мікропроцесора кр580ик80
- •Коротка інформація
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 4 Тема: вивчення команд пересилання даних.
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 5 Тема: вивчення арифметичних команд
- •Коротка інформація
- •Індивідуальні завдання
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 6 Тема: вивчення логічних команд
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 7 Тема: вивчення команд переходів
- •Коротка інформація
- •Індивідуальні завдання
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 8 Тема: вивчення команд введення / виведення, керування і рестарту
- •Коротка інформація
- •Індивідуальне завдання
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 9 Тема: вивчення зв’язків мікролабораторії із зовнішнім середовищем
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 10 Тема: керування клавіатурою і індикаторами мікро лабораторії
- •Коротка інформація
- •Індивідуальні завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 11 Тема: програмування тимчасових затримок
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 12 Тема: програмне керування пристроями введення / виведення
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 13 Тема: динамічне керування об’єктами введення / виведення
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 14 Тема: імітаційне моделювання передньої панелі вимірювального приладу з вбудованим мп
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 15 Тема: тестування пам’яті мікропроцесорної системи
- •Коротка інформація
- •Індивідуальні завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 16 5 Тема: макет мікропроцесорної системи охоронної сигналізації на автомобілі
- •Коротка інформація Постановка задачі
- •Інженерна інтерпретація
- •Оцінка системи
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Додаток. Система команд 8–розрядного однокристального мікропроцесора к580ик80а.
- •Література
Індивідуальні завдання
1. Скласти таблицю контролю вмісту регістрів для практичної реалізації прикладу на рис. 7.4.
2. Скласти алгоритм розгалуженого процесу з використанням команд переходів.
3. Реалізувати алгоритм в командах КР580ВМ80 і закодувати отриману програму.
Порядок виконання лабораторної роботи
1. Виконати учбову програму (рис. 7.4) і зафіксувати в таблиці стан регістрів A, SP, PC на кожному кроці виконання програми.
2. Записати послідовність адрес виконуваних команд програми.
3. Занести в пам’ять мікро лабораторії індивідуальну програму і. виконавши її в покроковому режимі, зафіксувати в таблиці (див. табл. 3.1) регістри, вміст яких використовується в програмі.
4. Зробити висновки з роботи.
Контрольні питання
1. Пояснити суть команди переходів, звертання та повернення за парністю.
2. Як виконується команда переходу PCHL?
3. Як здійснюється повернення до наступної після PCHL команди ?
4. Як організуються підпрограми з кількома точками входу до них ?
5. Охарактеризувати різницю у виконанні дій команд переходу і звертання до підпрограми.
Лабораторна робота № 8 Тема: вивчення команд введення / виведення, керування і рестарту
Мета: набути навичок роботи з мікро лабораторією при виконанні команд, що вивчаються; ознайомитись з послідовністю дій при обробці переривань.
Коротка інформація
В складі системи команд МП КР580ИК80 є спеціальні команди запису в пам’ять і читання з неї за адресою, що зберігається у вказівнику стеку, введення/виведення, керування і рестарту (рис. 8.1).
4. Переривання |
||
Мнемоніка |
Код |
|
RST |
0 |
С7 |
RST |
1 |
CF |
RST |
2 |
D7 |
RST |
3 |
DF |
RST |
4 |
Е7 |
RST |
5 |
EF |
RST |
6 |
F7 |
RST |
7 |
FF |
|
1. Операції із стеком |
||||||||
|---|---|---|---|---|---|---|---|---|---|
|
Мнемоніки |
Код |
|
Мнемоніки |
Код |
||||
|
PUSH |
В |
C5 |
рор |
в |
C1 |
|||
|
PUSH |
D |
D5 |
|
POP |
D |
D1 |
||
|
PUSH |
H |
E5 |
|
pop |
н |
E1 |
||
|
PUSH |
PSW |
F5 |
|
pop |
PSW |
F1 |
||
|
XTHL |
|
E3 |
|
|
|
|||
|
SPHL |
|
F9 |
|
|
|
|||
|
|
||||||||
|
|
||||||||
|
|
||||||||
|
|
||||||||
|
|
||||||||
|
|
||||||||
|
|
||||||||
|
|
||||||||
|
|
||||||||
2. Введення / виведення |
||
Мнемоніка |
Код |
|
OUT # IN # |
D3 DB |
|
|
||
3. Керування |
||
DI |
F3 |
|
ЕІ |
FB |
|
NOP |
00 |
|
HLT |
76 |
|
Рис. 8.1. Команди введення / виведення, керування і рестарту (переривання)
При виконанні попередніх лабораторних робіт використовувалась одна з команд керування NOP, яка не виконує ніяких дій і може використовуватись для заміни діючих команд при відлагодженні програми або для створення потрібної тимчасової затримки. На виконання команди витрачається чотири такти, що для мікро лабораторії складає 2 мкс.
Команда HLT (зупинка) заносить в РЛ адресу наступної команди. Потім процесор не працює до приходу запиту на переривання. Регістри і прапорці не змінюють свого стану.
Виконання команди IN # і OUT # будуть розглянуті в лабораторній роботі № 9.
Виконання команди PUSH гр (засилання в стек вмісту регістрової пари) забезпечує роботу з парами регістрів ВС, DE, HL, PSW. Під парою регістрів PSW (слово стану програми) мається на увазі акумулятор і регістр прапорців. Організація регістрових пар показана на рис. 8.2.
PSW [16] |
||
A[8] |
|
Регістр ознак [8] |
15 8 |
7 0 |
|
В [B,C] [16] |
||
D [D,E] [16] |
||
H [H,L] [16] |
||
PC [16] |
||
SP [16] |
||
Рис. 8.2. Організація регістрових пар.
Вміст старшого регістру пари регістрів гр пересилається у вічко пам’яті, адреса якого на одиницю менша вмісту вказівника стеку SP. Вміст молодшого регістру пари регістрів пересилається у вічко пам’яті, адреса якого на два менша вмісту SP. Вміст SP в результаті виконання команди зменшується на два. Для виконання команди треба три звертання до пам’яті — читання команди, запис вмісту першого і другого регістра пари. Крім того, в кожному циклі виконується декрементування SP, для чого необхідний додатковий такт. В результаті виконання команди потребує 12 тактів. Вміст регістру прапорців при виконанні команди не змінюється.
Команда POP rр (зчитати з стеку вміст пари регістрів) забезпечує пересилання в молодший регістр пари вмісту вічка пам’яті, адреса якого на одиницю більша вмісту SP. Потім в старший регістр пари пересилається вміст ОЗП за адресою SP, збільшеній на два, в результаті чого формується новий вміст SP, який відрізняється від початкового (до виконання команди) на +2. Час виконання той же, що і для команди PUSH rр. Вміст прапорців для команди POP rр не змінюється.
Для команд операцій із стеком неприпустимо вказувати як операнд пару регістрів SP.
Для розширення можливостей при роботі із стеком є дві додаткові команди. Команда XTHL здійснює обмін вмісту верхівки стеку і вмісту пари регістрів H,L. Під верхівкою стеку мають на увазі вічко пам’яті, адреса якого визначається SP. Вміст за адресою SP пересилається в регістр Н, а вміст за адресою (SP +1) — в регістр L. В результаті виконується п’ять операцій звертання до пам’яті і додатково інкрементується SP. Команда виконується за п’ять циклів, що складає 16 тактів. Команда SPHL здійснює пересилання вмісту регістрів Н і L в SP. Отже, SP отримує нові значення, а в Н і L переноситься попереднє значення SP.
Що розуміється під поняттям «стек» і для чого розроблена велика група команд для роботи з ним? Цей стек реалізований апаратно і призначений, в першу чергу, для роботи з підпрограмами і з перериваннями. Його робота описується фразою «останній ввійшов – перший вийшов» (рис. 8.3).
|
стек |
|
A |
|
А |
|||||||||||
|
0 |
|
0 |
|
0 |
|||||||||||
|
1 |
SP |
1 |
|
1 |
|||||||||||
SP |
2 |
|
0 |
1 |
1 |
|
2 |
SP |
2 |
|||||||
1 |
0 |
0 |
|
3 |
|
3 A5 |
|
1 |
0 |
0 |
|
3 |
||||
|
4 A4 |
|
4 A4 |
|
4 A4 |
|||||||||||
Вихідний |
5 A3 |
Операція |
5 A3 |
Операція |
5 A3 |
|||||||||||
стан |
6 A2 |
завантаження |
6 A2 |
видобування |
6 A2 |
|||||||||||
|
7 Al |
|
7 Al |
|
7 Al |
|||||||||||
Рис. 8.3. Робота стекової області пам’яті (SP – вказівник стеку; Аі – вміст вічка стеку).
Робота із стековою пам’яттю в КР580ИК80 організована через вказівник стеку SP. При кожному звертанні до стека при записі (завантаженні) вміст SP зменшується на одиницю і, отже, SP завжди вказує на верхнє зайняте вічко стека в пам’яті — на верхівку стеку. Після кожного читання SP збільшується на одиницю, тобто переходить до наступного вічка стеку. Організований в такий спосіб стек має необмежені розміри і дозволяє забезпечувати будь-яке вкладання підпрограм. Послідовність дій по входу і поверненню з підпрограм розглянута в лабораторній роботі № 7.
При розробці програм часто виникає потреба в запам’ятовуванні поточного вмісту регістрів, так як далі ці регістри необхідні для розміщення інших операндів Для запису в стек для тимчасового зберігання використовуються команди PUSH rр. Згодом вміст регістрів повинен бути відновлений, що досягається виконанням команди POP rp. Цей механізм особливо важливий при обробці переривань.
Розглянемо режим обробки переривань, що використовується в МП КР580ИК80А Переривання необхідні для забезпечення роботи з зовнішніми пристроями системи. Обмін за перериванням передбачає ініціювання обміну з боку зовнішнього пристрою. При виконанні будь-якої команди програми перевіряється наявність запиту на переривання. Аналіз запиту на переривання може бути програмно заборонений (командою DI) або дозволений (командою ЕI). Якщо запити на переривання дозволені, то команда виконується до кінця, після чого здійснюється перехід на обслуговування запиту переривання.
Переривання може бути викликане апаратно за запитом зовнішнього пристрою або програмно командою RST n. В обох випадках дії по обробці аналогічні: здійснюється перехід за адресою (n × 8) (рис. 8.4).
При наявності апаратного запиту на переривання МП виставляє сигнал INTE (дозвіл переривання) для читання з шини даних коду команди переривання RST n, яка надходить з пристрою, що ініціює переривання (а не з пам’яті як звичайно). Старші 8 бітів адреси наступної команди (вмісту PC) пересилаються в стекову пам’ять за адресою (SP-1), молодші 8 бітів — за адресою (SP-2). У вказівнику стеку фіксується (SP-2), і в програмний лічильник PC заноситься адреса початку програми обробки переривання, відповідна коду RST n за вектором переривань. Потім виконується перехід за адресою PC і виконується команда, що записана за цією адресою (див. рис. 8.4).
Мнемоніка команди переривання |
Код команди |
Адреса, з якої починається програма обробки переривання |
RST 0 |
С7 |
0000 |
RST 1 |
CF |
0008 |
RST 2 |
D7 |
0010 |
RST 3 |
DF |
0018 |
RST 4 |
Е7 |
0020 |
RST 5 |
EF |
0028 |
RST 6 |
F7 |
0030 |
RST 7 |
FF |
0038 |
Рис. 8.4. Таблиця переривань (вектори переривань).
Отже обробка переривання аналогічна звертанню до підпрограми за винятком того, що звертання незапрограмоване, а виникає при певних обставинах.
При виконанні команди RST n вміст регістра прапорців не змінюється. Для кожного з векторів переривань виділяється вісім адрес пам’яті для команд програми обробки переривання. Якщо програма обробки потребує більшого адресного простору, то у виділеній області пам’яті записується команда переходу за адресою, де фактично розміщена програма обробки переривання.
В мікролабораторії ряд векторів переривань призначений для обробки переривань під керуванням монітору. Команда RST 1 виводить програму користувача на монітор. По команді RST 7, якщо перемикач «ШАГ–АВТ» встановлений в положення «ШАГ» здійснюється перехід в покроковий режим. Команда RST 2 також зафіксована при конструюванні мікролабораторії і не може бути змінена. При її виконанні здійснюється перехід за адресою 83D1. За адресою 83D1 необхідно записати перехід на власну підпрограму обробки переривання.
Точки переривання доцільно використовувати при відлагодженні програм. їх можна вводити після опису заміни деякої команди точкою переривання, яка зупиняє програму в потрібному місці, тому не треба виконувати попередні команди покроково. Якщо програма виконується правильно, точка переривання може бути замінена командою NOP або командою, яку замінила точка переривання.
Розглянемо приклад програми з використанням переривань мікро лабораторії:
8000 |
00 |
NOP |
8001 |
D7 |
RST 2 |
8002 |
76 |
HLT |
За адресою 83D1 запишемо команду безумовного переходу
83D1 СЗ 02 80 JMP 8002
Виконаємо програму в покроковому режимі. Тоді після виконання команди RST 2 на ІАР з’явиться адреса 83D1. Наступний крок дозволяє перейти до чергової команди програми за адресою 8002. При такому рестарті ми не скористувались тим, що вміст PC завантажується в стек. При ініціалізації мікро лабораторії (після натискання кнопки «Сброс») здійснюється завантаження SP програмою монітору адресою початкового вічка стекової області 83С7, Занесемо за адресою 83D1 команду
83D1 С9 RET
і в покроковому режимі повторимо записану програму, контролюючи вміст SP. Після виконання команди RST 2 вміст SP (за адресами 83Е2, 83ЕЗ) стає рівним 83С5, тобто виконано два звертання до ОЗП для запису вмісту РЛ. Проконтролювавши адреси 83С7, 83С6, впевнимось, що за ними записані байти 02, 80, тобто 8002, що є адресою повернення в програму. Після виконання команди RET впевнимось, що в SP відновлений початковий стан 83С7.
Цю програму можна виконати в автоматичному режимі, щоб спостерігати дію команди HLT. Встановивши пускову адресу 8000 і натиснувши кнопку «Пуск», впевнимось, що ніяких змін на індикаторах не відбувається. Однак, якщо повернути перемикач в положення «ШАГ», то на ІАР висвітлюється адреса 8003. Очевидно, що після виконання команди HLT процесор не виконує ніяких дій. Переведення перемикача викликав появу переривання, відпрацювавши яке програма монітору висвітлила адресу наступної після HLT команди.
Проведемо експеримент по використанню точки переривання. Введемо в пам’ять програму, що на рис. 8.5. Головна програма, що записана в вічках 8000 ... 800F, уявляє собою програму лічильника з точкою переривання. Лічба ведеться у вічку 83F7. Вміст цього вічка виводиться на крайньому правому індикаторі. Перед кожним збільшенням лічильника відбувається переривання програми по команді RST 2 і починається виконуватись програма з адреси 8015.
Адреса |
Код команди XX XX XX |
Мітка |
Мнемоніка команди |
Коментар |
8000 |
|
|
LXI Н, 83Е7 |
Завантаження H, L адресою індикатора |
8003 |
|
|
MVI М, 00 |
Очищення вічка індикатора |
8005 |
|
LAB: |
CALL SEG |
Звертання до п/п висвітлювання |
8008 |
|
|
LXI H, 83F7 |
Відновлення Н, L |
800В |
|
|
RST 2 |
Точка переривання |
800С |
|
BA: |
INR M |
Збільшення вічка індикатора |
800D |
|
|
JMP LAB |
Перехід до висвітлювання |
8015 |
|
КЕ: |
CALL KEYIN |
Опит клавіатури |
8018 |
|
|
CPI 10 |
«Пуск» натиснутий ? |
801А |
|
|
JZ BA |
Перехід до збільшення |
801D |
|
|
JMP LAB |
Перехід до висвітлювання |
83D1 |
|
|
JMP KE |
Перехід до обробки переривання |
Рис. 8.5. Програма з використанням переривання.
В цій програмі передбачений опит клавіатури підпрограмою KEYIN (за командою CALL KEYIN здійснюється перехід за адресою 0216), перевірка натискання кнопки «Пуск» і повернення в головну програму, де відбудеться чергове збільшення вмісту вічка 83F7. Висвітлювання символу здійснюється підпрограмою SEG (по команді CALL SEG відбувається перехід за адресою 01С0).
Отже, після кожного натискання кнопки «Пуск» вміст вічка 83F7 буде збільшуватись на одиницю. Виконаємо цю програму в автоматичному режимі і, натискаючи кнопку «Пуск», будемо спостерігати на правому індикаторі лічбу даних.

5
5