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

Элементная база

6. Регистр

Enter

5

0

E

L

1

6

A

F

O

2

7

B

G

P

3

8

C

H

S

4

9

D

I

ПРОБЕЛ

Номер ячейки

Коды:

Номер

Кнопка

 

столбец,

столбца в

 

 

Семисегментн

шестнадцат

 

 

ый код

иричной

 

 

 

системе

 

0400

XXX11110

счисления

Enter

1E

0401

 

 

 

0402

XXX11110

1E

1

0403

00000110

 

 

0404

XXX11110

1E

2

0405

01011011

 

 

0406

XXX11110

1E

3

0407

01001111

 

 

0408

XXX11110

1E

4

0409

01100110

 

 

040A

XXX11101

1D

5

040B

01101101

 

 

040C

XXX11101

1D

6

040D

01111101

 

 

040E

XXX11101

1D

7

040F

00000111

 

 

0410

XXX11101

1D

8

0411

01111111

 

 

0412

XXX11101

1D

9

0413

01101111

 

 

метка мнемокод

ORG 0h

MVI A, 89h

OUT 13h

SCAN MVI B, 8h

MVI C,1h

LXI D, 0800 SCAN1 MOV A,C

OUT 10h

IN 12h

ANI 1F

MOV D, A

CMP 1F

JNZ IDEN

MOV А,С

RAL

MOV С,А

MOV А,С

CPI 80h

JNZ L1

комментарий

Начало

Инициализация портов

Порт А выход, В – выход, С0-С3 вход, С4-С7 вход

Счетчик количества символов Счетчик номера индикатора (номера строки)

регистр С, присваиваем значение 1

Программа опроса клавиатуры

Посылаем номер индикатора (строки) в порт A

Считываем в аккумулятор данные из порта С

Операция «И». Из поступившего в аккумулятор

символа значение имеют младшие 5 разрядов В регистре D храним информацию что было

получено из порта С

Вычитание числа 1F из значения аккумулятора (если кнопка не нажата, в аккумуляторе значение

1F)

Если разница не равна нулю – кнопка нажата, переход к идентификации символа

Если кнопка не нажата: сдвиг влево номера индикатора

Проверка: это номер последнего индикатора?

Если нет - переход к метке L1

IDEN

CPI C, 01h

Программа идентификации символа

Кнопка нажата в первой строке?

 

 

 

JNZ L2

Если нет переход к L2

 

MOV A, D

 

 

CPI 1E

Если да, то проверка: кнопка нажата в первом столбце?

 

JZ VIVOD

Если да – это кнопка Enter и переход к выводу символов на индикатор

L2

INX B

Счетчик числа символов увеличивается на 1

 

MOV A, B

 

 

CPI 8

Введенный символ восьмой?

 

JNZ L9

Если нет, переходим к поиску символа

 

MVI А,00h

Если да - обнуление индикаторов

 

OUT 11h

 

 

LXI H, 0800h

Обнуление ОЗУ. Начинаем с первой ячейки

 

MVI E, 8h

Счетчик цикла E=8

L10

MOV M, A

Записываем в ячейку значение аккумулятора (ноль)

 

INX H

Переход к следующей ячейке

 

DCR E

Уменьшение счетчика на 1

 

MOV A, E

 

 

CPI 0h

Счетчик равен нулю?

 

JNZ L9

Если нет, переход в начало цикла в L10

L9

MOV A, D

Поиск символа

 

CPI 1E

Кнопка в первом столбце?

 

JNZ L4

Если нет – переход к L4

M0

MOV A, C

 

 

CPI 01h

Кнопка в 1 строке?

 

JNZ M1

Если нет– переход к M1

 

JMP M

 

M1

MOV A, C

 

 

CPI 02h

Кнопка во 2 строке?

 

JNZ L3

Если нет – переход к M2

 

MOV A, L

 

 

ADI 2h

Если да – регистр L увеличиваем на 2

 

JMP M

 

M2

MOV A, C

 

 

CPI 04h

Кнопка в 3 строке?

 

JNZ M3

Если нет – переход к M3

 

MOV A, L

 

 

ADI 4h

Если да – регистр L увеличиваем на 4

 

JMP M

 

M3

MOV A, C

 

 

CPI 08h

Кнопка в 4 строке?

 

JNZ M4

Если нет – переход к M4.

 

MOV A, L

Если да – регистр L увеличиваем на 6

M

INX H

 

MOV A, M

 

MOV D, A

 

INX D

 

JMP SCAN1

VIVOD

MVI C, 1h

 

LXI H, 0800

VIVOD1

MOV A, M

 

OUT 11h

 

MOV A, C

 

OUT 10h

 

MVI E,FF

 

MVI D,FF

 

NOP

 

DCR D

 

JNZ L5

 

DCR E

 

JNZ L6

 

MVI А,00Н

 

OUT 11h

Переход к следующей ячейке, где хранится семисегментный код символа

Запись кода в аккумулятор

Программа вывода символов. Счетчик номера нидикатора=1

Начинаем вывод я ячейки ОЗУ 0800 Отправляем код символа в порт B

Отправляем номер индикатора в порт A

Начало программы создания временной задержки

Гашение индикатора

Соседние файлы в папке курсач бегущая строка