Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

МК

.pdf
Скачиваний:
31
Добавлен:
16.02.2016
Размер:
3.47 Mб
Скачать

Рис. 17. Зовнішній вигляд (а) та схема семисегментної світлодіодної

 

 

 

 

 

 

матриці (б).

 

 

 

 

 

5

 

4

3

 

2

 

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 18. Нумерація комірок дисплея.

 

 

Програма 21 дозволяє за рахунок зміни коду на вхідному пристрої (адреса

2016) вмикати різні сегменти п'ятого індикатора дисплея.

 

 

Організація

мультиплексного

режиму

роботи

дисплея.

За

мультиплексного режиму роботи інформація на кожен індикатор дисплея виводиться мікро-ЕОМ послідовно. Цифра чи символ на індикаторі висвітлюється деякий проміжок часу, що задається підпрограмою затримки. За великої частоти сканування індикаторів на цифровому дисплеї з’являється стійке зображення.

Схема алгоритму програми, що забезпечує мультиплексний режим роботи дисплея, показана на рис. 20 (програма 22, табл. 29). Код цифр для виводу на кожне вічко дисплея зберігається в послідовних комірках пам'яті з адресами 0900-0905. При цьому мається на увазі, що код цифри для виводу на 0

індикатора дисплея записаний за адресою 0900. Початкова адреса підпрограми тимчасової затримки 0430.

111

Рис. 19. Схема під’єднання дисплея до мікро-ЕОМ.

112

DSO

Встановити тривалість тимчасової затримки

Вказати на адресу вічка з кодом для п’ятої цифри. Завантажити в покажчик цифри число

00100000

Зчитати код чергової цифри із ОЗП

Записати код чергової цифри в регістр

Увімкнути цифру

Викликати підпрограму тимчасової затримки

Вимкнути цифру

Вказати на наступну цифру

Ні

Так

 

Усе повідомлення виведено ?

Рис. 20. Схема алгоритму програми мультиплексного режиму індикації в мікро-ЕОМ

Під’єднання клавіатури до мікро-ЕОМ. Клавіатура є одним із широко розповсюджених пристроїв введення даних і керуючих впливів у мікро-ЕОМ.

За допомогою клавіатури можна вводити програму в ОЗП, ініціювати різні режими роботи мікро-ЕОМ (пуск програми із заданої адреси, зупинка програми, виконання програми за машинними циклами, виведення змісту регістрів МП на дисплей тощо).

113

Таблиця 29

Програма 22

Адреса

Машиний код

Мітка

Мнемокод

 

Коментар

 

 

0800

010004

DSO

LXI В 0400

завантажити в регістри В,

С тривалість затримки

 

 

 

 

 

0803

 

AF

 

XRА А

очистити акумулятор

 

0804

210500

CNTI

LXI Н 0905

вказати

на

адресу

коду

цифри 5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0807

16 20

 

MVI D 20

завантажити

 

покажчик

 

цифри в регістр D

 

 

 

 

 

 

 

 

 

0809

 

CNT2

MOV А М

одержати

з

ОЗП

код

 

чергової цифри

 

 

 

 

 

 

 

 

 

 

 

080A

D3 38

 

OUT DSP

записати

його

в

регістр

 

сегментів дисплея

 

 

 

 

 

 

 

 

 

080С

 

 

MOV A D

завантажити в акумулятор

 

 

покажчик цифри

 

 

 

 

 

 

 

 

 

080D

D3 28

 

OUT SCAN

увімкнути потрібну цифру

080F

 

1 F

 

RAR

вказати

 

на

наступну

 

 

цифру

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0810

 

51

 

MOV D A

зберегти покажчик цифри

 

 

в регістрі D

 

 

 

 

 

 

 

 

 

 

 

 

 

0811

CD

3004

 

CALL DELB

викликати

 

підпрограму

 

тимчасової затримки

 

0814

 

AF

 

XRA А

очистити акумулятор

 

0815

D3 28

 

OUT SCAN

вимкнути цифру

 

 

0817

 

2D

 

DCR L

зменшити

 

на

1

 

вміст

 

 

регістра L

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0818

 

В2

 

ORA D

чи все

 

повідомлення

 

 

виведене ?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0819

С2

0908

 

JNZ CNT2

якщо ні, продовжувати

08ІС

СЗ

0408

 

JMP CNTI

якщо

так,

то

почати

 

спочатку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

У всіх випадках в організації введення інформації з клавіатури в мікро-

ЕОМ перед розроблювачем ставиться низка задач, до основних з належать:

1)визначення факту натискання клавіші на клавіатурі;

2)знаходження номера натиснутої клавіші;

3)здійснення передачі керування на відповідну підпрограму.

114

Перші дві задачі є специфічними в організації введення інформації з клавіатури і саме на них звернемо увагу в даному розділі. Остання, як правило,

розв’язується програмними методами.

Найзручніше організовувати клавіатуру у вигляді матриці розміром n x m,

де n і m – відповідно кількість рядків і стовпців. За такого способу організації до мікро-ЕОМ можна під’єднати m x n клавіш. Сполучення клавіатури з мікро-

ЕОМ роблять за допомогою пристроїв уведення-виведення даних. Для ілюстрації методу сполучення клавіатури з мікро-ЕОМ розглянемо клавіатуру

3x3, показану на рис. 21, де Сх ДША – схема дешифрації адреси; Увв – пристрій введення; Увив – пристрій виведення, ряди якого під’єднані до трьох молодших розрядів пристрою виведення Увив (символьне позначення адреси KB DOT), а

стовпці – до трьох молодших розрядів пристрою введення Увв (символьне позначення адреси KB DIN).

Рис. 21. Схема підключення клавіатури до мікро ЕОМ

115

У разі програмного способу дешифрації натиснутої клавіші визначення факту натискання на клавішу може здійснюватись за допомогою такої послідовності операцій: 1. Записати нулі в розряди вихідного пристрою;

2.Зчитати зміст розрядів вхідного пристрою.

3.Повторити знову, якщо у всіх розрядах вхідного пристрою записані

одиниці.

Програма 23 (табл. 30), написана відповідно до наведеного алгоритму,

дозволяє визначити факт натискання на одну з клавіш, але не вказує номер натиснутої клавіші.

 

 

 

 

 

 

 

Таблиця 30

 

 

 

Програма 23

 

 

 

 

 

 

 

 

 

 

 

 

 

Адреса

Машинний код

Мітка

 

Мнемокод

Коментар

 

 

0800

ЗЕ F8

WAITK

 

MVI А

записати 0 у молодші три

 

 

11111ООО

розряди акумулятора

 

 

 

 

 

 

 

 

 

 

 

 

 

записати

0 у

вихідний

 

0802

D3 KB DOT

 

 

OUT KB DОТ

пристрій

(адреса

KB

 

 

 

 

 

 

DOT)

 

 

 

 

 

 

 

 

 

одержати

число

з

 

0804

DB KB DIN

 

 

IN KBD IN

вхідного

 

пристрою

 

 

 

 

 

 

(адреса KBD IN)

 

 

0806

Е6 07

 

 

ANI 00000111

очистити

старші п'ять

 

 

 

розрядів акумулятора

 

 

 

 

 

 

 

 

 

0808

FE07

 

 

СРІ

є чи в молодших трьох

 

 

 

ООООО111

розрядах акумулятора 0

 

 

 

 

 

 

080А

СА0008

 

 

JZ WAITK

якщо ні,

то

йти

на

 

 

 

WAITK

 

 

 

 

 

 

 

 

 

 

 

 

 

080D

C3OD08

DONE

 

JMP DONE

кінець

 

 

 

 

Визначити номер натиснутої клавіші можна за допомогою алгоритму,

показаного на рис. 22. Алгоритм ґрунтується на послідовному записі нуля в кожний з рядів матриці клавіатури. За наявності нуля в кожному ряді мікро-

ЕОМ визначає факт натискання на клавіші, що знаходяться в стовпцях клавіатури, що належать аналізованому ряду. Якщо яка-небудь клавіша натиснута, то визначається її номер за номером розряду, в якому записаний нуль.

116

 

ПОЧАТОК

 

 

Встановити лічильник клавіш

 

 

Встановити лічильник рядів. Записати

 

 

маску сканування в акумулятор

 

 

Записати маску сканування в регістр

 

 

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

 

 

Чи замкнута будь-

Ні

 

яка клавіша із ряду?

 

 

Так

 

 

 

Змінити маску сканування

Зсунути вміст розрядів вхідних

 

циклічним зсувом вмісту

даних із клавіатури вправо

 

розрядів вліво

на один розряд

 

Номер клавіші = номер

 

 

 

клавіші +стовпця

Ні

 

 

Лічильник = лічильник - 1

С=0 ?

 

Ні

 

Так

 

Лічильник =0 ?

Номер клавіші =

 

 

 

номер клавіші + 1

 

Так

 

 

 

Кінець

 

 

Рис. 22. Схема алгоритму визначення натиснутої клавіші за сканування

 

клавіатури мікро-ЕОМ

 

Програма 24 (табл. 31) реалізує описаний алгоритм. Номер натиснутої клавіші визначається за номером ряду клавіатури, в якому виявлена натиснута клавіша, і номером розряду вхідного пристрою, в якому записаний нуль.

Часто операційна система мікро-ЕОМ будується таким чином, що інформація, яка вводиться з клавіатури, відображається на дисплеї. З

докладнішими прикладами побудови таких програм можна ознайомитися за літературою, наведеною в бібліографічному списку.

Робота на навчальній мікро-ЕОМ

117

У навчальній мікро-ЕОМ дисплей і клавіатура під’єднані до магістралей так, як показано на рис. 19 Регістр сканування РгСк (адреса 28)

використовується як для сканування дисплея, так і для сканування клавіатури.

Таблиця 31

Програма 24

Адреса

Машинний код

Мітка

Мнемокод

Коментар

0800

0600

 

МVI В 00

обнулити лічильник клавіш

0802

0Е FE

 

МVІ 3

початкова

установка маски

 

1111111О

сканування рядів

 

 

 

 

 

0804

16 03

 

MVI 03

встановити лічильник

 

рядів

 

 

 

 

 

 

 

 

0806

79

FROW

MOV A C

записати маску

сканування

в акумулятор

 

 

 

 

 

 

 

 

 

OUT KB

записати маску

сканування

0807

D3 KB DОТ

 

у вихідний пристрій (адреса

 

DOT

 

 

 

KB DОТ)

 

 

 

 

 

 

 

 

0809

07

 

RLC

змінити маску сканування

080А

4F

 

MOV С А

зберегти маску в регістрі С

080В

DBKBDIN

 

IN KB D IN

одержати число з вхідного

 

пристрою (адреса KB D IN)

080D

Е6 07

 

AN I

маскувати

п'ять старших

 

ООООО111

його розрядів

 

 

 

 

 

080 F

FE07

 

СРІ

чи є в

трьох

молодших

 

ООООО111

розрядах 0

 

 

 

 

 

0811

C2 IF O8

 

JNZ FCDL

якщо так, то йти на FCOL

0814

78

 

MOV А В

змінити зміст

 

0815

С6 03

 

ADI 03

лічильники номера клавіш

0817

47

 

MOV В А

 

 

 

0818

15

 

DCR D

зменшити вміст лічильника

 

рядків

 

 

 

 

 

 

 

 

 

 

 

 

якщо не останній ряд, то

0819

С2 0608

 

JNZ FROW

повторити

для

наступного

 

 

 

 

ряду

 

 

081С

С3 2708

 

JMP DONE

йти на закінчення

08IF

IF

 

RAR

визначення номера

0820

D2 2708

 

JNC DON E

розряду, в якому

 

0823

04

 

INR B

записаний 0 і визначення

0824

СЗ IF 08

 

JMP FCOL

номера натиснутої клавіші

0827

СЗ 2708

DONE

JMP DONE

кінець

 

 

118

Адреса вхідного пристрою читання клавіатури РгЧК -18 (KB D IN).

Програми 21, 22 можуть бути виконані без будь-яких змін на навчальній мікро-

ЕОМ без під’єднання додаткового дисплея.

У ПЗП мікро-ЕОМ записані програми, що дозволяють визначити код натиснутої клавіші і виводити на дисплей повідомлення. Так, підпрограма KPU (адреса 0185) визначає, чи натиснута клавіша на клавіатурі, і за будь-якої натиснутої клавіші встановлює розряд ознак МП Z у 0, а якщо ні, то Z = 1.

Вхідних параметрів підпрограма не має. Підпрограма КІ N D (адреса ОІ4В)

виконує сканування клавіатури, визначає факт натискання клавіші, її код за таблицею і повертає його. Одночасно підпрограма KIND дешифрує повідомлення, що видається, в семисегментний код за таблицею і виводить його на дисплей. Вхідним параметром цієї підпрограми є повідомлення,

виведене на дисплей, розміщене в ОЗП за адресами OBFO-08FS, вихідним параметром – код натиснутої клавіші в акумуляторі. Для виведення повідомлення на дисплей підпрограма KIND використовує підпрограми SDS (адреса ОІС8) сканування дисплея і DCD (адреса ОІЕ9) декодування повідомлень для дисплея. Вхідний параметр SDS – семисегментні коди виведеного повідомлення, розміщені за адресами ОВЕ FA - OB FF. Вони ж є вихідним параметром підпрограми DCD, а вхідними її параметрами – коди виведеного повідомлення, розміщені за адресами OBFO-OBF5. Дешифрування в семисегментний код здійснюється за допомогою спеціальної табл. 32

додаванням відносної адреси символу до початкової адреси таблиці.

Табл. 32 побудована так, що для дешифрування шістнадцятирічних цифр жодних додаткових перетворень не потрібно, тому що значенням цифри є її відносна адреса. Для перезапису повідомлення в область OBF 0 - OBF 5

застосовується підпрограма, що викликається командою RST3. Вхідними параметрами її є адреса першого байта повідомлення, розміщена в парі регістрів D, Е, і повідомлення, записане з цієї адреси. Підпрограма BLM ДО

(адреса 0297) для очищення дисплея, вхідних і вихідних параметрів не має.

119

 

 

 

 

 

 

 

 

Таблиця 32

 

 

 

Дешифрувальна таблиця

 

 

 

 

 

 

 

 

 

 

 

 

 

Символ

Код

Відносна

Символ

Код

Відносна

Символ

Код

Відносна

 

адреса

адреса

адреса

 

 

 

 

 

 

 

 

0,0

3F

00

А

77

Р

73

14

 

1

06

01

В(мале)

П,Л (мале)

54

15

 

2

02

С

39

ОС

 

 

 

 

3,3

4F

03

D(мале)

0D

О (мале)

16

 

4

66

04

Е

79

(нижня

08

17

 

 

 

 

 

 

 

риска)

 

 

 

5.S

6D

05

F

71

0F

 

 

 

6.Б

7D

06

ПРОБІЛ

00

10

П,Л

37

18

 

7

07

07

Н

76

11

(середня

40

19

 

8

7F

08

L

38

12

риска)

 

 

 

9

6F

09

Y

6E

13

Усі сегменти

FF

ІА

 

 

 

 

 

 

 

R (мале)

50

IB

 

 

 

 

 

 

 

І (ліва)

30

 

Програма 25 (таб. 33) виконує декодування і виведення на дисплей повідомлення користувача, записаного за адресою 0900-0905, з використанням підпрограм RS ТЗ, DCD, SDS. Підпрограма SDS виводить повідомлення на дисплей тільки один раз, тобто для одержання зображення її потрібно викликати багаторазово.

 

 

 

 

 

 

Таблиця 33

 

 

 

Програма 25

 

 

 

 

 

 

 

 

 

 

Адреса

Машинний код

Мітка

 

Мнемокод

Коментар

 

0800

11 00 09

 

 

LXI D 0900

завантажити

адресу

 

 

 

початку повідомлення

 

 

 

 

 

 

 

0803

DF

 

 

RST3

переписати

повідомлення

 

 

 

по адресах ОВ 0 -0BF5

 

 

 

 

 

 

 

0804

CD E9 01

 

 

CALL DCD

викликати

підпрограму

 

 

 

декодування

 

 

 

 

 

 

 

 

 

0807

CD C8 01

CNT:

 

CALL SDS

вивести повідомлення на

 

 

дисплей

 

 

 

 

 

 

 

 

 

080А

33 0708

 

 

JMP CNT

повторювати виведення

 

Програма 26 (табл. 34) показує приклад використання підпрограми KPU.

При натисканні на будь-яку клавішу у вихідний регістр записується число з вхідного пристрою.

120