- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
- •Техническое задание
- •Цель:
- •Задачи:
- •Функциональная схема
- •Элементная база
- •Элементная база
- •Элементная база
- •Элементная база
- •Элементная база
- •Элементная база
- •Enter
- •метка мнемокод
- •IDEN
- •CHANGE
- •Выводы:
- •Спасибо за внимание!
Элементная база
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
Начало программы создания временной задержки
Гашение индикатора
