Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка для лаб Арх_комп(Схемтех).doc
Скачиваний:
6
Добавлен:
08.05.2019
Размер:
1.76 Mб
Скачать

Індивідуальне завдання на лабораторну роботу

  1. Підготувати новий варіант констант, що визначають частоту звукового сигналу.

  2. Модифікувати програму, організувавши лічильник затримки в регістрі C.

Порядок виконання лабораторної роботи

  1. Завантажити в пам’ять мікролабораторії підготовлену програму і відлагодити її в покроковому режимі.

  2. Виконати програму в автоматичному режимі. Змінюючи коди на перемикачах порту введення, переконатись в правильності роботи програми.

  3. Завантажити у вічка 8050...8057 нові константи і повторити п. 2.

  4. Зробити висновки з роботи.

Контрольні питання

  1. Що треба змінити в програмі, щоб вона виконувала ті ж функції при умові, якщо забрати команду RRC?

  2. Як проконтролювати вміст пари регістрів H і L після виконання команди за адресою 8004?

  3. Як передається значення константи тимчасової затримки в підпрограму WAIT?

  4. Що стане, якщо розташувати константи тимчасової затримки в зворотній послідовності?

  5. Що треба змінити в програмі, щоб розряди C4 ... C7 порту C програмованого інтерфейсу переключити на виведення?

  6. Чи принципово для програми напрямок передачі даних через порт 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). Далі здійснюється зворотна заміна.