Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНА РОБОТА общее.doc
Скачиваний:
34
Добавлен:
18.03.2015
Размер:
5.16 Mб
Скачать

Іншим фактором, що повинен бути розглянутий при читанні із клавіатури, є виключення "дзвону".

Рис.2. Дзвін кнопки

Як відомо, кнопки при натисканні не видають "чистий" імпульс - вони

"дзенькають", як показано на мал.2. Коли металеві контакти стосуються один іншого, виникає дзенькіт. Тривалість дзенькоту 1-50 мс залежно від конструкції кнопки.

Рис.3. Алгоритм усунення дзенькоту клавіатури

Дзенькіт контактів потрібно враховувати, тому що він може привести до того, що замість одного натискання буде зафіксовано багато натискань кнопки.

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

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

Клавіатура сканується, використовуючи програму KEYIN, описану раніше. Якщо немає натиснутих кнопок, процес повторюється. Коли ж визначене натискання кнопки, клавіатура відключається на 50 мс, щоб не читати під час дзенькоту. Потім клавіатура сканується до моменту, поки ключ не відпущений. Знову вводиться 50 мс затримки, щоб виключити дзенькіт при відпусканні кнопки.

Індикація

У мікролабораторії для індикації використовуються вісім семисегментних цифрових індикаторів.

Кожному індикатору відповідає комірка пам'яті, де зберігається семисегментний код, керуючий світінням сегментів індикатора /див.урок 9/. Інформація з цих комірок посилає на індикатори за допомогою спеціальної схеми, що забезпечує динамічний режим індикації.

Завдання матзабезпечення зводиться до підготовки семисегментних кодів і засиланню їх у комірки пам'яті 83F8...83FF. Осередок 83F8 відповідає лівому індикатору, 83FF - правому. /Динамічна індикація здійснюється в мікропроцесорних системах не обов'язково за допомогою схеми. Сканування індикаторів можна здійснювати й за допомогою програми/.

Монітор мікролабораторії містить програму SEGCG /адреса=01З/, що перетворить шістнядцяткові коди ПРО, 1, 2...4, Е, F у семисегментні й заносить їх у комірки пам'яті 83F8...83FF. Вихідні дані для цієї програми повинні перебувати в осередках 83F4...83F7. Кожний байт із цих осередків відповідає парі індикаторів: уміст осередку 83F4 після перетворення висвітиться на двох лівих індикаторах, уміст осередку 83F7 - на двох праві.

У табл.б наведена програма показу інформації, що використовує підпрограму SEGCG. Уведіть програму й перевірте її роботу. На індикаторах повинні послідовно висвітлюються символи 1, 2, 3, 4, А, В, C,D.

Таблиця 6. Програма показу інформації

Адреса

Уміст

Мітки

Команда

Коментарі

8000

ЗЕ

MVI А, 12

12- [A]

8001

12

A-[83F4]

8002

32

STA 83F4

8003

F4

8004

83

8005

ЗЕ

MVI А, 34

34-А

8006

34

8007

32

STA 83F

A-[83F5]

8008

F5

8009

83

800А

ЗЕ

MVI А,АВ

АВ - А

800У

АВ

800С

32

STA 83F6

A-[83F6]

800D

F6

800Е

83

800F

ЗЕ

MVI A, CD

CD- A

8010

CD

8011

32

STA 83F7

A-[83F7]

8012

F7

8013

83

8014

CD

CALL SEGC G

Виклик SEGCG

8015

З

8016

01

8017

76

HLT

Останов

Напишіть програму, що виводить на два правих індикатори значення натиснутої кнопки, а на інші індикатори - нулі. Використовуйте при цьому моніторні підпрограми KEYIN і SEGCG.

У попередній програмі ми використовували підпрограму SEGCG для одержання семисегментного коду. Але ця підпрограма оперує тільки із шістнядцятковими символами 0...F, тобто не повністю використовує можливості семисегментних індикаторів .

Можна формувати семисегментний код і одержувати на індикаторах будь-які символи, які дозволяють одержати використовувані в мікролабораторії індикатори. Як уже говорилися, семисегментні коди повинні засилатися в певні комірки пам'яті. Кожний біт у цих осередках відповідає певному сегменту /мал.4/. Якщо біт дорівнює 1, то відповідний сегмент буде "горіти", і - навпаки.

БІТ

7

6

5

4

3

2

1

0

СЕГМЕНТ

H

G

F

E

D

C

B

A

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

У табл.7 наведений лістинг програми, що виводить на індикатори напис "СРСР 60". Змінюючи семи-сегментні коди, ви можете вивести на індикацію будь-який можливий напис .

Таблиця 7 Програма виводу символів на індикатори без підпрограми SEGCG

Адреса

Уміст

Мітка

Команда

Коментарі

8000

ЗЕ

MVI А, 39

Семисегментный код букви

8001

39

С — А

8002

32

STA 83F8

А — [83F8]

8003

F8

8004

83

8005

32

STA 83F9

А — [83 F9]

8006

F9

8007

83

8008

32

STA 83FA

А — [83FA]

8009

FA

800А

83

800У

ЗЕ

MVI А, 73

Семисегментний код букви

800С

73

Р — А

800D

32

: STA 83FB

А — [83FB]

800Е

FB

800F

83

8010

зе

MVI A, 7D

Семисегментный код цифри

8011

7D

6 — А

8012

32

: STA 83FC

А -[83 FC]

8013

FC

8014

83

8015

ЗЕ

MVI A,3F

Семисегмеытный код 0 — А

8016

3F

8017

32

STA 83FD

А — [83FD]

8018

FD

8019

83

801А

AF

XRA A

0 — А

801У

32

STA 83FE

А — > [83FE] гасіння індикатора

801С

FE

8010

83

801Е

32

STA 83FF

А — [83FF ] , гасіння -індикатору

801F

FF

8020

83

8021

76

HLT

Останов