- •Лабораторна робота № 1 Тема: структура учбової мікропроцесорної лабораторії, клавіатура керування, індикація
- •Коротка інформація
- •Порядок виконання лабораторної роботи
- •Лабораторна робота № 2 Тема: пам’ять учбової мікропроцесорної лабораторії, дослідження виконання програм в покроковому I автоматичному режимах
- •Коротка інформація
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 3 Тема: дослідження програмно-доступних регістрів мікропроцесора кр580ик80
- •Коротка інформація
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 4 Тема: вивчення команд пересилання даних.
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 5 Тема: вивчення арифметичних команд
- •Коротка інформація
- •Індивідуальні завдання
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 6 Тема: вивчення логічних команд
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 7 Тема: вивчення команд переходів
- •Коротка інформація
- •Індивідуальні завдання
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 8 Тема: вивчення команд введення / виведення, керування і рестарту
- •Коротка інформація
- •Індивідуальне завдання
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 9 Тема: вивчення зв’язків мікролабораторії із зовнішнім середовищем
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 10 Тема: керування клавіатурою і індикаторами мікро лабораторії
- •Коротка інформація
- •Індивідуальні завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 11 Тема: програмування тимчасових затримок
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 12 Тема: програмне керування пристроями введення / виведення
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 13 Тема: динамічне керування об’єктами введення / виведення
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 14 Тема: імітаційне моделювання передньої панелі вимірювального приладу з вбудованим мп
- •Коротка інформація
- •Індивідуальне завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 15 Тема: тестування пам’яті мікропроцесорної системи
- •Коротка інформація
- •Індивідуальні завдання на лабораторну роботу
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 16 5 Тема: макет мікропроцесорної системи охоронної сигналізації на автомобілі
- •Коротка інформація Постановка задачі
- •Інженерна інтерпретація
- •Оцінка системи
- •Порядок виконання лабораторної роботи
- •Контрольні питання
- •Додаток. Система команд 8–розрядного однокристального мікропроцесора к580ик80а.
- •Література
Індивідуальне завдання на лабораторну роботу
Підготувати новий варіант констант, що визначають частоту звукового сигналу.
Модифікувати програму, організувавши лічильник затримки в регістрі C.
Порядок виконання лабораторної роботи
Завантажити в пам’ять мікролабораторії підготовлену програму і відлагодити її в покроковому режимі.
Виконати програму в автоматичному режимі. Змінюючи коди на перемикачах порту введення, переконатись в правильності роботи програми.
Завантажити у вічка 8050...8057 нові константи і повторити п. 2.
Зробити висновки з роботи.
Контрольні питання
Що треба змінити в програмі, щоб вона виконувала ті ж функції при умові, якщо забрати команду RRC?
Як проконтролювати вміст пари регістрів H і L після виконання команди за адресою 8004?
Як передається значення константи тимчасової затримки в підпрограму WAIT?
Що стане, якщо розташувати константи тимчасової затримки в зворотній послідовності?
Що треба змінити в програмі, щоб розряди C4 ... C7 порту C програмованого інтерфейсу переключити на виведення?
Чи принципово для програми напрямок передачі даних через порт A?
Лабораторна робота № 13 Тема: динамічне керування об’єктами введення / виведення
Мета: навчитися змінювати стан пристроїв введення / виведення за допомогою органів керування мікропроцесорної системи
Коротка інформація
Мікролабораторія має ряд органів керування, призначення яких розглянуто в попередніх лабораторних роботах. Програма монітору аналізує стан кнопок і, виконуючи відповідну програму, полегшує процедуру введення, контролю і виконання програми користувача. Призначення кнопок керування може бути визначено користувачем в залежності від вимог до програми, яка керує пристроями введення / виведення. В цій лабораторній роботі додатково до перемикачів (розряди C1, C2, C3 порту C) і гучномовця (розряд B0 порту B), що аналізуються через паралельний периферійний адаптер КР580ВВ55А, вивчається процес програмування кнопок керування.
На практиці часто зустрічається задача динамічної зміни параметрів, що виводяться (наприклад, установлення початкового положення інструмента верстата, встановлення потрібного кута повороту об’єкта, підбір початкового значення вимірюваного параметру і т. ін.). Оператор системи повинен мати можливість простим натисканням на клавіші робити потрібні дії, не перериваючи виконання керуючої програми.
В зв’язку з відсутністю виконавчих пристроїв, підключених до мікролабораторії, змоделюємо рішення задачі на присутніх пристроях введення / виведення. Перемикачі C1, C2, C3 будуть встановлювати початкове значення, на основі якого формується вихідний керуючий сигнал. Через розряд B0 вихідного порту забезпечується виведення тонального звукового сигналу, частоту якого визначає стан перемикачів, а за допомогою двох кнопок (скористаємось для цього кнопками «Ввод» і «Вывод») здійснюється динамічна зміна частоти тонального звукового сигналу без зупинки програми з фіксацією обраної частоти. Кнопка «Ввод» буде зменшувати частоту сигналу, а кнопка «Вывод» – збільшувати.
Для реалізації цього алгоритму організуємо послідовний виклик ряду підпрограм. Алгоритм містить такі модулі, що оформлені у вигляді підпрограми:
Підпрограма тимчасової затримки для виведення звукового сигналу (WAIT).
Підпрограма тимчасової затримки для аналізу стану кнопок «Ввод» і «Вывод» (COUNT).
Підпрограма аналізу стану кнопок «Ввод» і «Вывод» (TOUCH).
Основна програма забезпечує передачу керування підпрограмам для реалізації алгоритму. Принцип формування звукового сигналу розглянутий в попередніх лабораторних роботах, тому докладний аналіз програми не проводимо. Регістр A, як завжди, є основним операційним регістром, що використовується для арифметичних операцій і процедур введення / виведення. Регістр B призначений для організації рахунку при формуванні затримки, що визначає частоту сигналу в підпрограмі WAIT. Оскільки частота вихідного сигналу складає від десятків герц до одиниць кілогерц (звуковий діапазон), то з урахуванням особливостей людського організму виконати процес настроювання з такою швидкістю виведення неможливо. Для уповільнення реакції керування опит кнопок «Ввод» і «Вывод» буде здійснюватись не за час одного періоду, а з певною тимчасовою затримкою, яку забезпечує константа, поміщена в регістр C, і підпрограма COUNT. Після повного витримування затримки, що задається в регістрі C, керування передається підпрограмі TOUCH, яка аналізує стан кнопок «Ввод» і «Вывод». Якщо одна з них натиснута, то константа частоти модифікується і виведення звукового сигналу повторюється.
Значення початкової частоти тонального сигналу визначається за допомогою відносної адресації по положенням перемикачів C1, C2, C3. Зміщення формується в регістровій парі D і E, а базова адреса – в регістровій парі H і L.
Підпрограма часової затримки WAIT по своїй структурі не відрізняється від розглянутих раніше. Рекомендована адреса завантаження підпрограми 8100 (рис. 13.1). Повернення з підпрограми здійснюється при зменшенні вмісту регістру B до нуля, тобто ознака повернення формується за значенням прапорця Z.
Адреса |
Код команди |
Мітка |
Мнемоніка команди |
Коментар |
|
8100 |
|
WAIT: |
MOV |
B, M |
|
8101 |
|
REP: |
DCR |
B |
|
8102 |
|
|
JNZ |
REP |
|
8105 |
|
|
RET |
|
|
Рис. 13.1. Програма часової затримки WAIT.
Підпрограма COUNT не виконує такого «прямого» рахунку. При кожному звертанні до неї, вміст регістра C декрементується і, якщо значення C 0, забезпечує повернення в точку виклику. Якщо прапорець нуля виявляється зведеним, вміст регістру C відновлює попереднє значення і здійснює перехід до підпрограми аналізу кнопок «Ввод» і «Вывод» з наступним поверненням в основну програму (рис. 13.2). Рекомендована адреса завантаження підпрограми 8110.
Адреса |
Код команди |
Мітка |
Мнемоніка команди |
Коментар |
|
8110 |
|
COUNT: |
DCR |
C |
|
8111 |
|
|
RNZ |
|
|
8112 |
|
|
MVI |
C, 55 |
|
8114 |
|
|
CALL |
TOUCH |
|
8117 |
|
|
RET |
|
|
Рис. 13.2. Підпрограма COUNT визначення моменту звертання для аналізу стану кнопок «Ввод», «Вывод».
Для аналізу стану кнопок підпрограмою TOUCH необхідно завантажити в розряди C4 ... C6 порту C слово, в якому буде значення одиниці в одному з цих виділених розрядів. Значення цього слова визначається рядом кнопок, які обрані для керування. В даному випадку байт, що передається в порт C (за адресою FA), має значення 110011112 = CF16. В принципі значення всіх розрядів, окрім C4 ... C6, несуттєві, однак для визначеності будемо передавати в них рівень логічної одиниці. Введення через порт A (за адресою F8) байту, що визначає натискання кнопки, супроводжується накладанням маски виділення одного з двох розрядів. Якщо аналізуємо кнопку «Ввод», маскою 80 виділяємо розряд D7 акумулятора, а якщо аналізуємо кнопку «Вывод», використовуємо маску 40 для виділення розряду D6 акумулятора. Треба пам’ятати, що при натиснутій кнопці в одному з цих розрядів виділяється логічний нуль. Відповідно здійснюється повернення в точку виклику, або модифікація вмісту вічка пам’яті за адресою пари регістрів H і L (рис. 13.3). Рекомендована адреса завантаження підпрограми TOUCH – 8120.
Адреса |
Код команди |
Мітка |
Мнемоніка команди |
Коментар |
|
8120 |
|
TOUCH: |
MVI |
A, CF |
|
8122 |
|
|
OUT |
FA |
|
8124 |
|
|
IN |
F8 |
|
8126 |
|
|
MOV |
B, A |
|
8127 |
|
|
ANI |
80 |
|
8129 |
|
|
JZ |
INCR |
|
812C |
|
|
MOV |
A, B |
|
812D |
|
|
ANI |
40 |
|
812F |
|
|
RNZ |
|
|
8130 |
|
|
MOV |
A, M |
|
8131 |
|
|
DCR |
A |
|
8132 |
|
|
MOV |
M, A |
|
8133 |
|
|
RET |
|
|
8134 |
|
INCR: |
MOV |
A, M |
|
8135 |
|
|
INR |
A |
|
8136 |
|
|
MOV |
M, A |
|
8137 |
|
|
RET |
|
|
Рис. 13.3. Програма TOUCH аналізу стану кнопок.
В тексті основної програми є певні відміни від програми, розглянутої в лабораторній роботі № 12. Зокрема, на початку програми після ініціалізації КР580ВВ55А здійснюється завантаження регістру C константою 55, яка визначає темп опиту кнопок «Ввод» і «Вывод».
Оскільки в підпрограмі тимчасової затримки WAIT відсутня команда інвертування акумулятора, то в текст програми введена команда MVI A, 00, яка забезпечує виведення в розряд B0 порту B нульового рівня для формування сигналу при виконанні програми у вигляді імпульсів прямокутної форми. Виклик підпрограми аналізу кнопок здійснюється оператором CALL COUNT. Текст основної програми показаний на рис. 13.4. Як завжди, рекомендується завантажувати її з адреси 8000.
Адреса |
Код команди |
Мітка |
Мнемоніка команди |
Коментар |
|
8000 |
|
|
MVI |
A, 91 |
|
8002 |
|
|
OUT |
FB |
|
8004 |
|
|
MVI |
C, 55 |
|
8006 |
|
INIT: |
LXI |
H, 8050 |
|
8009 |
|
|
MVI |
D, 00 |
|
800B |
|
|
IN |
FA |
|
800D |
|
|
ANI |
0E |
|
800F |
|
|
RRC |
|
|
8010 |
|
|
MOV |
E, A |
|
8011 |
|
|
DAD |
D |
|
8012 |
|
|
MVI |
A, 01 |
|
8014 |
|
|
OUT |
F9 |
|
8016 |
|
|
CALL |
WAIT |
|
8019 |
|
|
CALL |
COUNT |
|
801C |
|
|
MVI |
A, 00 |
|
801E |
|
|
OUT |
F9 |
|
8020 |
|
|
CALL |
WAIT |
|
8023 |
|
|
JMP |
INIT |
|
Рис. 13.4. Текст програми виведення звукового сигналу.
Розміщення набору констант, що визначають звукову частоту, таке ж саме, що і в попередній роботі, тобто з адреси 8050 необхідно послідовно розмістити байти В0, A0, 90, 80, 70, 60, 50, 40.
Після пуску програми в автоматичному режимі (стартова адреса 8000), встановлюючи різні коди перемикачами C1, C2, C3 і натискуючи кнопки «Ввод» і «Вывод», впевнимось, що можна плавно керувати значенням частоти звукового сигналу. Без особливих труднощів можна настроювати музикальні тони і за допомогою перемикачів «зіграти» звукову гаму в будь-якій тональності.
Відлагодження таких достатньо «довгих» програм може викликати певні труднощі. Для полегшення процесу відлагодження доцільно в «сумнівних» точках програми замінити команди (наприклад, виклику підпрограм) на «нейтральні» команди NOP (код команди 00). Далі здійснюється зворотна заміна.
