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

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

1. Перевести програму рис. 9.4 і 9.5 в коди МП КР580ИК80.

2. Скласти алгоритми цих програм.

3. Скласти індивідуальну програму, що забезпечує безперервне послідовне виведення двох тональних сигналів.

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

1. Завантажити в пам’ять програму рис. 9.4 і виконати її.

2. Завантажити в пам’ять програму рис. 9.5 і виконати її.

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

4. Скласти висновки з роботи.

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

1. Як запрограмувати порти А і С на введення, а порт В – на виведення ?

2. Що визначає біт D7 в керуючому слові ?

3. Призначення порту С в режимах 1 і 2.

4. Чи можна запрограмувати розряди 0 ... З порту С на виведення, а розряди 4 ... 7 – на введення ? Який формат керуючого слова при цьому ?

5. Чи можна прочитати вміст РКС ?

6. Пояснити послідовність сканування клавіатури.

Лабораторна робота № 10 Тема: керування клавіатурою і індикаторами мікро лабораторії

Мета: вивчити програмування клавіатури і режим прямого доступу до пам'яті для обслуговування семисегментних індикаторів

Коротка інформація

Клавіатура уявляє собою набір кнопок (ключів), організованих у вигляді матриці 3  8. Кожний ряд з восьми кнопок опитується окремо (див. лаб. роб. № 9). Зчитані дані перетворюються в код, відповідний натиснутій кнопці, за допомогою програми монітору KEYIN (адреса 0216). Звертання до цієї програми здійснюється за допомогою команди CALL KEYIN. Після повернення в акумуляторі процесора буде міститись код натиснутої кнопки (рис. 10.1). Цю програму монітору користувач може використовувати для читання клавіатури. Вона забезпечує ряд додаткових функцій, однак в конкретних програмах користувача може виявитись надмірною.

Кнопка

Код

Кнопка

Код

Кнопка

Код

0

00

8

08

ПУСК

10

1

01

9

09

ВОЗВР

11

2

02

A

0A

УСТ.АД

12

3

03

B

0B

АД+

13

4

04

C

0C

АД–

14

5

05

D

0D

ЗАПИСЬ

15

6

06

E

0E

ВЫВОД

16

7

07

F

0F

ВВОД

17

Рис. 10.1. Коди кнопок мікролабораторії.

Розглянемо програму (рис. 10.2), яка викликає звуковий сигнал, якщо натиснута кнопка 7. Клавіатура читається за допомогою описаної раніше програми KEYIN, яка заносить код натиснутої клавіші в акумулятор. Команда CPI 07 встановлює прапорець Z, якщо вміст акумулятора дорівнює 07. Якщо прапорець Z встановлений, буде звертання до підпрограми BEEP (адреса 0350). Потім процес повторюється. Отже, звуковий сигнал буде генеруватись при натисканні кнопки 7.

Адреса

Код команди

Мітка

Мнемоніка

Коментар

8000

READ:

CALL

KEYIN

Читання клавіатури

8003

CPI

07

Порівняння з кодом «7»

8005

JNZ

READ

Повернення

8008

CALL

BEEP

Звуковий сигнал

800B

JMP

READ

Повернення

Рис. 10.2. Програма виклику звукового сигналу.

На рис. 10.3 показана спрощена схема клавіатури. За один цикл зчитуються дані одного рядка з восьми кнопок. Для прикладу розглянемо тільки один ряд, тобто кнопки 0 ... 7. Читання рядка ключів уявляє собою двокрокову операцію: запис даних в скануючий порт для вибору кнопок і читання байта даних читаючим портом.

Рис. 10.3. Спрощена схема клавіатури.

Для вибору певного рядка кнопок відповідний біт скануючого порту (C4, C5 або C6) встановлюється в стан логічної одиниці, а інші біти залишаються рівними логічному нулю. Отже, щоб вибрати ряд кнопок 0 ... 7, потрібно послати в порт з адресою FA код 10011111 (9F), щоб вибрати ряд кнопок 8 ... F — код 10101111 (AF) і щоб вибрати одну з керуючих кнопок — код 11001111 (CF). Біти 0 ... 3 і 7 порту C не використовуються при скануванні клавіатури і встановлюються рівними логічній одиниці.

Щоб зчитати дані з рядку 0 ... 7, в порт з адресою FA надсилається байт 9F, а вхідний порт з адресою F8 сприймає інформацію з відповідних кнопок. При натисканні певної кнопки відповідний біт читаючого порту буде встановлений в нуль, а інші біти залишаться в одиничному стані (рис. 10.4).

Для здійснення цієї послідовності дій необхідно виконати програму

MVI

A, 9F

; вибір рядка кнопок

OUT

FA

; 0…7

IN

F8

; читання кнопок 0…7

Кнопка

Коди, що читаються (двійкові)

Коди, що читаються

(16-кові)

Нема натиснутих кнопок

1111

1111

FF

0,

8,

Пуск

1111

1110

FE

1,

9,

Возвр

1111

1101

FD

2,

A,

Уст.ад

1111

1011

FB

3,

B,

АД–

1111

0111

F7

4,

C,

АД+

1110

1111

EF

5,

D,

Запись

1101

1111

DF

6,

E,

Вывод

1011

1111

BF

7,

F,

Ввод

0111

1111

7F

Рис. 10.4. Коди, що читаються з клавіатури.

Програма KEYIN, що описана раніше, не тільки сканує клавіатуру, а й перетворює коди, що читаються з колонок (в залежності від вибраного рядка), в коди, що показані на рис. 10.1.

На рис. 10.6 показана програма для перевірки стану кнопки 6, яка використовує описаний раніше спосіб читання клавіатури. Якщо вона натиснута, то генерується звуковий сигнал.

Програма RESET розміщена в ПЗП, починаючи з адреси 0269.

Фактор, який необхідно враховувати при читанні з клавіатури, – виникнення так званого ефекту «бряжчання» (рис. 10.5), який утворюється при переключенні контактів з одного фіксованого стану в інший. Явище бряжчання може бути виключене апаратно або за допомогою спеціальної підпрограми. В мікро лабораторії використовуються обидва способи: використовуються кнопки з вбудованим тригером, що не створює бряжчання, і підпрограма KEYIN, яка, визначивши натискання кнопки, відключається від клавіатури на 50 мс, щоб не читати під час бряжчання. Потім клавіатура сканується до моменту, поки ключ не відпущений, і знову зводиться 50 мс затримки, щоб виключити бряжчання при відпусканні кнопки.

Рис. 10.5. “Бряжчання” кнопки.

Адреса

Код команди

Мітка

Мнемоніка

Коментар

8000

ABC:

CALL

RESET

Вибір рядка кнопок, в

8003

MVI

A, 9F

якому знаходиться кноп-

8005

OUT

FA

ка «6»

8007

RE:

IN

FB

Читання коду з обраного рядка кнопок

8009

CPI

BF

Порівняння з кодом «6»

800B

JNZ

RE

Якщо коди не співпадають, – перехід на повтор читання

800E

CALL

BEEP

Якщо співпадають, – звуковий сигнал

8011

JMP

ABC

Повторення програми

Рис. 10.6. Програма перевірки стану кнопки "6".

Індикатори, як і кнопки, програміст може використовувати для своїх цілей. Кожному індикатору відповідає вічко пам’яті, де зберігається семисегментний код, який керує засвіченням сегментів індикатора. Інформація з цих вічок надсилається на індикатори за допомогою спеціальної схеми, що забезпечує динамічний режим індикації, який здійснюється в режимі прямого доступу до пам’яті (ПДП4) за допомогою спеціального генератора, що опитує вічка з інтервалом 2 мс. Генератор виставляє сигнал «Захоплення» (HOLD), сприйнявши який, МП завершує поточний машинний цикл, і призупиняє подальше виконання команди програми. На підтвердження прийому і обробки сигналу HOLD МП виставляє сигнал підтвердження захоплення (HOLDA), вказуючи каналу ПДП про те, що його виходи до шин переведені в третій стан і шини вільні. Із спеціального лічильника виставляється адреса вічка пам’яті, яке містить інформацію про код, що індиціюється на певному сегменті, і вміст цього вічка виводиться на індикатор. Лічильник збільшує адресу на одиницю, і вміст наступного вічка передається на сусідній індикатор. Після завершення сканування всіх восьми вічок ОЗП схема знімає сигнал HOLD, процесор прибирає сигнал підтвердження HOLDA і продовжує виконання призупиненої програми. Отже, для виводу відповідної інформації на ІАР і ІРД необхідно підготувати потрібні коди за адресами 83F8 ... 83FF. Вічко з адресою 83F8 відповідає лівому індикатору, а з адресою 83FF – правому. Аналогічне сканування можна здійснити за допомогою власної програми.

Монітор мікролабораторії містить програму SEGGG (адреса початку програми 01C0), яка перетворює 16-річні коди в семисегментні і переносить їх у вказані вічка. Вихідні дані для програми SEGCG повинні знаходитись у вічках 83F4 ... 83F7. Кожний байт з цих вічок відповідає парі індикаторів: вміст вічка 83F4 після перетворення висвітлиться на двох лівих індикаторах, вміст вічка 83F7 – на двох правих. На рис. 10.7 зображена програма, яка забезпечує за допомогою підпрограми SEGCG вивід групи цифр 1 2 3 4 A B C D.

Адреса

Код команди

Мнемоніка команди

Коментар

8000

MVI

A, 12

Завантаження за адре-

8002

STA

83F4

сою 83F4 цифр “12”

8005

MVI

A, 34

Завантаження за адре-

8007

STA

83F5

сою 83F5 цифр “34”

800A

MVI

A, AB

Завантаження за адре-

800C

STA

83F6

сою 83F6 цифр “AB”

800F

MVI

A, CD

Завантаження за адре-

8011

STA

83F7

сою 83F7 цифр “CD”

8014

CALL

SEGGG

Індикація

8017

HLT

Зупинення

Рис. 10.7. Демонстраційна програма індикатора.

Оскільки програма SEGGG оперує тільки з 16-ковими кодами, вона не повністю реалізує можливості семисегментних індикаторів. На індикаторах можна отримати будь-які символи в межах можливих комбінацій засвітлюємих сегментів. У вічках 83F8 ... 83FF кожному біту відповідає певний сегмент (рис. 10.8). Якщо біт дорівнює одиниці, відповідний сегмент буде світитись, і навпаки.

Біт

7

6

5

4

3

2

1

0

Сегмент

H

G

F

E

D

C

B

A

Рис. 10.8. Відповідність розрядів і сегментів.