- •Лабораторна робота № 1
- •Короткі відомості з теорії
- •Завдання для домашньої підготовки
- •Завдання до лабораторної роботи
- •Порядок виконання завдання
- •Порядок виконання завдання
- •Порядок виконання завдання
- •Порядок виконання завдання
- •Порядок виконання завдання
- •Завдання для самоперевірки
- •Література
- •Лабораторна робота № 2
- •Короткі відомості з теорії
- •Завдання для домашньої підготовки
- •Завдання до лабораторної роботи
- •Порядок виконання завдання
- •Порядок виконання завдання
- •Порядок виконання завдання
- •Порядок виконання завдання
- •Порядок виконання завдання
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Література
- •Короткі відомості з теорії
- •Програма 8.6
- •Програма 8.7
- •Програма 8.8
- •Програма 8.9
- •Завдання до домашньої підготовки
- •Завдання до лабораторної роботи
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Література
- •Лабораторна робота 4 підпрограма і стек
- •Короткі відомості з теорії
- •Завдання для домашньої підготовки
- •Завдання до лабораторної роботи
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Завдання для домашньої підготовки
- •Завдання до лабораторної роботи
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Завдання для домашньої підготовки
- •Завдання до лабораторної роботи
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Завдання для домашньої підготовки
- •Завдання до лабораторної роботи
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Завдання для домашньої підготовки
- •Завдання до лабораторної роботи
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Завдання для домашньої підготовки
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Література
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Література
- •Завдання для домашньої підготовки
- •Робота на навчальній еом
- •Завдання для самоперевірки
- •Література
Завдання для домашньої підготовки
1. Вивчити групу арифметичних команд МП БІС КР580ИК80.
2. Ознайомитесь з правилами виконання команди DAA – десятичною корекцією акумулятора.
3. Визначити програми 8.18-8.20, наведені вище. Розгляньте результат виконання кожної програми на конкретних числових прикладах.
4. Проведіть оцінювання часу виконання підпрограм множення і програми ділення 8-розрядних чисел.
5. Складіть програму для дослідження результату перемноження двох чисел на підставі програми 8.18.
6. Оцініть час виконання підпрограми 8.20.
Завдання до лабораторної роботи
Завдання 1. Дослідити програму множення двох 8-розрядних чисел з отриманням 16-розрядного результата.
Порядок виконання завдання: 1. Ввести в мікро-ЕОМ програму для дослідження результату перемноження двох чисел. 2. Здійснити пуск програми і перевірити результат двох чисел за адресом, записаним в регістрах В, С.
Завдання 2. Дослідити програми ділення двох 8-розрядних чисел.
Порядок виконання завдання: 1. Ввести в мікро-ЕОМ програму 8.19. 2. Записати в регістри E, D відповідно діленого і дільника. 3. Здійснити пуск програми і перевірити результат ділення двох чисел за змістом регістрів Н, С.
Завдання 3. Дослідити програму обчислення квадрата числа за допомогою таблиці.
Порядок виконання завдання: 1. Ввести в мікро-ЕОМ програму 8.20. 2. Записати в регістр L число, квадрат якого необхідно обчислити. 3. Здійснити пуск програми і перевірити результат обчислення квадрата числа за змістом регістра Н. 4. Змінити програму так, щоб результат обчислення квадрата числа записувався у вихідний пристрій. 5. Ввести в програму 8.20 перевірку на значення числа, квадрат якого визначається в результаті виконання програми. Якщо число, яке задається, більше 10, то мікро-ЕОМ повинна вказувати на це, наприклад, видавати звуковий сигнал, включаючи світлодіоди вихідного пристрою тощо.
Робота на навчальній еом
В навчальній мікро-ЕОМ підпрограма записана в ПЗП за тими ж адресами, що наведені при описуванні підпрограми 8.18. До неї можна звертатися за допомогою команди CALL<A2><A1>. В мікро-ЕОМ є схема звукової сигналізації, що описана в лабораторній роботі 4. Початок підпрограми звукової сигналізації – адреса 0012. Всі наведені в лабораторній роботі програми, а також порядок їх виконання можуть бути досліджені на навчальній микро-ЕОМ.
Зміст звіту
Звіт повинен містити: 1. Повний перелік арифметичних команд МП БІС КР580ИК80 2. Програму для дослідіження результата перемноження двох 8-розрядних чисел. 4. Змінити програму 8.18, яка досліджується в завданні 1. 5. Змінити програму 8.20, дослідовану в завданні 2. 6. Результати виконання арифметичних операцій за всіма завданнями.
Завдання для самоперевірки
1. Які команди арифметичних операцій може виконувати МП БІС КР580ИК80?.
2. Сформулюйте правило виконання МП БІС команди DАА.
3. Після яких команд можна здійснювати десятичну корекцію числа акумудятора (виконувати команду DАА)?
4. Яке оцінити максимальний час виконання підпрограми множення двох чисел (програма 8.18)?.
5. Чи можна безпосередньо дослідити перемноження двох чисел за підпрограмою 8.18?
6. На чому грунтуються алгоритми роботи підпрограм множення і ділення чисел?
7. Подайте числа від 0 до 20 в двійково-десятичному коді.
8. Вкажіть можливі способи подання чисел для МП БІС КР580ИК80.
9. Оцінити максимальний час виконання програми ділення двох чисел, якщо час машинного такта для МП БІС Т = 1 мкс.
Література
1. Прангишвили И.В. Микропроцессоры и микро-ЭВМ. – М.: Энергия, 1979.
2. Соучек Б. Микропроцессоры и микро-ЭВМ: Пер. с англ. – М.: Советское радио, 1979.
Лабораторна робота 7
ПІД'ЄДНАННЯ ДИСПЛЕЯ И КЛАВІАТУРИ ДО МІКРО-ЕОМ
Мета роботи:вивчення програмно-апаратурних методів під'єднання дисплея і клавіатури до мікро-ЕОМ.
Короткі відомості з теорії
Як пристрій виводу інформації, зручного для сприяття, часто використовується дисплей. Розглянимо метод під'єднання дисплея, який складається з шести комірок (сім сегментних індикаторів), які являють собою вісім світлодіодів з загальним анодом в одному корпусі. КОжний індикатор (рис. 8.13, а) має сім світлодіодів для відображення сегментів цифр, а восьмий світлодіод відображає десятичну крапку (рис. 8.13, б). Індикатор може відображати цифри від 0 до 9, а також деякі букви.
Пронумеруємо комірки дисплея так, як показано на рис. 8.14.
Для зменшення схемотехничного забезпечення, необхідного для під'єднання дисплея до мікро-ЕОМ, часто застосовують мультіплексний режим роботи індикаторів. При цьому для виводу на дисплей інформації використовують два вихідних регістра: РгСг (адреса 3816) для запису семисегментногл кода і РгСк (адреса 2816) для запису номера індикатора (рис. 8.15).
Однакові сегменти кожної комірки індикатора пов'язані загальною шиною, яка з'єднана з одним з транзисторних ключів VT1 – VT8 на виході регістра РгСг. Загальні аноди індикатора під'єднані до одного з транзисторних ключів VT9 – VT14 на виході регістра сканування РгСк. Ввімкнення індикатора і його сегментів при записі одиниці у відповідні розряди маают вигляд:
для регістра РгСг
Номер розряду регістра сегментів дисплея |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Увімкнений сегмент |
a |
b |
c |
d |
e |
f |
g |
h |
для регістра РгСк
Номер розряду регістра цифр дисплея |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
Увімкнена цифра дисплея |
a |
b |
c |
d |
e |
f |
g |
h |
Сигнали заведені на регістри РгС і РгСк (К589ИР12) так, що при надходженні на вхід ВК1 сигналу виборки від дешифратора адреси дані з МД, під'єднаної по входам Д0-Д7, записуються в регістр і з'являються на його входах Q0-Q7. Таким чином, наприклад, при записі в регістр сегментів числа 0000 0110 відмикаються транзисторні ключі VT2 і VT3, а при записі в регістр сканування РгСк числа 0010 0000 відмикається транзисторний ключ VT14 і струм проходить по ланцюгу +5 В - VT14 - HG1 – b і c - VT2 і VT3 – земля, при цьому на лівому індикаторі висвітиться 1. Якщо тепер за допомогою програми висвічувати по черзі всі комірки, записуючи їх код в регістр V2 і включаючи необхідну цифру за допомогою регістра РгСк, то при достатньо високій частоті перемикань можна отримати стійке зображення інформації на дисплеї.
Наведемо просту програму вмикання сегментів п'ятої комірки дисплея за допомогою кода, який задається з вхідного пристрою мікро-ЕОМ (програма 8.21).
Підпрограма 8.21.
Адреса |
Машинний код |
Мітка |
Мнемокод |
Коментар |
8000 |
3Е 20 |
|
MVI A, 20 |
завантажити в аккумулятор число 0010 0000 |
8002 |
D3 28 |
|
OUT SCAN |
увімкнути цифру 5 |
8004 |
DB 20 |
CNT |
IN 20 |
рахувати дані з вхідного пристрою |
8006 |
D3 38 |
|
OUT DSP |
записати їх в регістр сегментів дисплею |
8008 |
C3 0408 |
|
JMP CNT |
продовжити |
Програма 8.21 дозволяє за рахунок зміни коду на вхідному пристрої (адреса 2016) увімкнути різні сегменти п'ятого індикатора дисплея.
Організація мультіплексного режиму роботи дисплея. При мультіплексному режимі роботи виведення інформації на кожний індикатор дисплея виводиться мікро-ЕОМ послідовно. Цифра чи символ на індикаторі висвічується деякій проміжок часу, що задається підпрограмою затримки. При більшій частоті сканування індикатора на цифровому дисплеї отримується стійке зображення. Схема алгоритму програми, що забезпечує мультіплексний режим роботи дисплею, наведена на рис. 8.16 (програма 8.22). Код цифр для виводу на кожну комірку дисплея зберігається в послідовних комірках пам'яті з адресами 0900-0905. При цьому передбачається, що код цифри для вивода на 0 індикатора дисплея записаний за адресою 0900. Початкова адреса підпрограми почасової затримки 0430.
Програма 8.22.
Адреса |
Машинний код |
Мітка |
Мнемокод |
Коментар |
8000 |
01 0004 |
DSO |
LXI B, 0400 |
завантажити в регістри В, С тривалість затримки |
8003 |
AF |
|
XRA A |
очистити акумулятор |
8004 |
21 0500 |
CNT 1 |
LXI H, 0905 |
вказати на адресу коду цифри 5 |
8007 |
16 20 |
|
MVI D, 20 |
завантажити покажчик цифри в регістр D |
8009 |
7E |
CNT 2 |
MOV A, M |
отримати з ОЗП код чергової цифри |
800A |
D3 38 |
|
OUT DSP |
записати його в регістр сегментів дисплея |
800C |
7A |
|
MOV A, D |
завантажити в акумулятор покажчик цифри |
800D |
D3 28 |
|
OUT SCAN |
увімкнути потрібну цифру |
800F |
1F |
|
RAR |
вказати на наступну цифру |
8010 |
57 |
|
MOV D, A |
зберегти покажчик цифри в регістр D |
8011 |
CD 3004 |
|
CALL DELB |
викликати підпрограму часової затримки |
8014 |
AF |
|
XRA A |
очистити акумулятор |
8015 |
D3 28 |
|
OUT CSAN |
виключити цифру |
8017 |
2D |
|
DCRL |
зменшити на 1 вміст регістра L |
8018 |
B2 |
|
ORA D |
чи всі повідомлення виведені? |
8019 |
C2 0908 |
|
JNZ CNT 2 |
якщо ні, продовжувати |
801C |
C3 0408 |
|
JMP CNT 1 |
якщо так, то почати спочатку |
Під'єднання клавіатури до мікро-ЕОМ. Клавіатура є одним з широко розповсюджених пристроїв введення даних і керованих впливів в мікро-ЕОМ. За допомогою клавіатури можна вводити програму в ОЗП, ініціювати різні режими роботи мікро-ЕОМ (пуск програми за машинними циклами, виведення вмісту регістрів МП БІС на дисплей тощо).
У всіх випадках при організації введення інформації с клавіатури в мікро-ЕОМ перед розробником ставиться низка задач, до основних з яких можна віднести: 1) визначення факту натискання клавіші на клавіатурі; 2) знаходження номера натиснутої клавіші; 3) здійснення передачі керування на відповідну підпрограму. Перші дві задачі є специфічними при організації введення інформації с клавіатури,, і саме їм буде приділена увага в даному розділі. Остання, як правило, вирішується програмними методами.
Найбільш зручно організувати клавіатуру у вигляді матриці розміром n Х m, де n і m – відповідна кількість рядків і стовпців. Притакому способі організаціфї до мікро-ЕОМ можна під'єднати m Х n клавіш. Спряження клавіатури з мікро-ЕОМ призводять за допомогою пристроїв введення-виведення даних. Для ілюстрації методу спряження клавіатури з мікро-ЕОМ розглянимо клавіатуру 3 Х 3, подану на рис. 8.17 (де СхДША – схема дешифрації адреси, Увв – пристрій введення, УВив – пристрій виведення), ряядки якої під'єднані до трьох молодших розрядів пристрою виведення УВив (символьне позначення адреси KBDOT), а стовпці під'єднані до трьох молодших розрядів пристрою введення УВв (символьне позначення адреси KBDIN).
При підпрограмному способі дешифрації натиснутої клавіші визначення факту натискання на клавішу може бути здійснено за допомогою такої послідовності операцій: 1. Записати нулю в розряди вихідного пристрою. 2. Рахувати вміст розрядів вхідного пристрою. 3. Повторити знову, якщо у всіх розрядах вхідного пристрою записани одиниці.
Програма 8.23, яка написана у відповідності з приведеним алгоритмом, дозволяє визначити факт натискання на одну з клавіш, але не вказує номер натиснутої клавіші.
Програма 8.23.
Адреса |
Машинний код |
Мітка |
Мнемокод |
Коментар |
8000 |
3E F8 |
WAITK |
MVI A, 11111000 |
записати 0 в молодші три розряди акумулятора |
8002 |
D3 KBDOT |
|
OUT KBDOT |
записати 0 у вихідний пристрій (адреса KBDOT) |
8004 |
DB KBDIN |
|
IN KBDIN |
отримати число з вхідного пристрою (адреса KBDIN) |
8006 |
E6 07 |
|
ANI 00000111 |
очистити старші п'ять розрядів акумулятора |
8008 |
FE 07 |
|
CPI 00000111 |
чи є в молодших трьох розрядах акумулятора 0 |
800A |
CA 0008 |
|
JZ WAITK |
якщо ні, то йти на WAITK |
800D |
C3 0D08 |
DONE |
JMP DONE |
кінець |
Визначити номер натиснутої клавіші можна за допомогою алгоритму, наведеному на рис. 8.18. Алгоритм базується на послідовному запису нуля в кожний з рядків матриці клавіатури. При наявності нуля в кожному рядку мікро-ЕОМ визначає факт натискання на клавіші, що знаходяться в стовпцях клавіатури, що нналежать рядку, який аналізується. Якщо будь-яка клавіша натиснута, то визначається її номер за номером розряду, в якому записаний нуль. Програма 8.24 реалізує описаний вище алгоритм. Номер натиснутої клавіші визначається за номером рядка клавіатури, в якому виявлена натиснута клавіша, і номером розряду вхідного пристрою, в якому записаний нуль.
Програма 8.24.
Адреса |
Машинний код |
Мітка |
Мнемокод |
Коментар |
8000 |
0600 |
|
MVI B, 00 |
обнулити лічильник клавіш |
8002 |
OE FE |
|
MVI C, 11111110 |
початкова установка маски сканування рядків |
8004 |
16 03 |
|
MVI D, 03 |
встановити лічильник рядків |
8006 |
79 |
FROW |
MOV A, C |
записати маску сканування в акумулятор |
8007 |
D3 KBDOT |
|
OUT KBDOT |
записати маску сканування у вихідний пристрій (адреса KBDOT) |
8009 |
07 |
|
RLC |
змінити маску скануваня |
800A |
4F |
|
MOV C, A |
зберегти маску в регістрі С |
800B |
DB KBDIN |
|
IN KBDIN |
отримати число зі входу пристрою (адреса KBDIN) |
800D |
E6 07 |
|
ANI 00000111 |
маскувати п'ять старших його розрядів |
800F |
FE 07 |
|
CPI 00000111 |
чи є в трьох молодших розрядах 0 |
8011 |
C2 1F08 |
|
JNZ FCOL |
якщо так, то йти на FCOL |
8014 |
78 |
|
|
змінити вміст лічильника номера клавіш |
8015 |
C6 03 |
|
||
8017 |
47 |
|
||
8018 |
15 |
|
DCR D |
зменшити вміст лічильника рядків |
8019 |
C2 0608 |
|
JNZ FROW |
якщо не останній рядок, то повторити для наступного рядка |
801C |
C3 2708 |
|
JMP DONE |
йти на закінчення |
801F |
1F |
FCOL |
|
визначення номера розряду, в якому записаний 0, і визначення номера натиснутої клавіші |
8020 |
D2 2708 |
|
||
8023 |
04 |
|
||
8024 |
C3 1F08 |
|
||
8027 |
C3 2708 |
DONE |
JMP DONE |
кінець |
Часто при роботі мікро-ЕОМ її операційна система будується таким чином, що інформація, яка вводиться з клавіатури, відображається на дисплеї. З більш детальними прикладами побудови таких програм можна ознайомитися по літературі, наведеній в кінці лабораторної роботи.