
Рис. 17. Временные диаграммы работы шифратора клавиатуры.
Интерфейсные
схемы шифратора клавиатуры подключают к системной шине данных 4-разрядный код
нажатой клавиши помощью буфера данных, показанного на рисунке 18. Перепадом
сигнала  с 0 на 1 D-триггер
устанавливается в состояние 1 (рисунок 19). Подается на буфер данных 74244b 4-разрядный код клавиатуры
 с 0 на 1 D-триггер
устанавливается в состояние 1 (рисунок 19). Подается на буфер данных 74244b 4-разрядный код клавиатуры  . При выполнении команды
. При выполнении команды  с дешифратора адреса поступает
значение сигнала
 с дешифратора адреса поступает
значение сигнала  , а с шины управления – значение
, а с шины управления – значение  , что приводит к появлению значения
сигнала
, что приводит к появлению значения
сигнала  , разрешающего передачу по шине
данных 5- разрядного кода в аккумулятор CPU.
, разрешающего передачу по шине
данных 5- разрядного кода в аккумулятор CPU.

Рис.18. Формирователь шины данных для ввода.
Анализ
назначения нажатой клавиши. Функциональное назначение клавиш показано на рисунке 20: клавиши  задают скорость движения цели
 задают скорость движения цели  ,
,  – направление движения цели (клавиши
 – направление движения цели (клавиши
 не используются),
не используются),  – период
 – период  сигнала
 сигнала  Коды этих трех групп клавиш
различаются значением двух старших разрядов
 Коды этих трех групп клавиш
различаются значением двух старших разрядов  : 10 – направление движения, 00 и 01
– значение скорости
: 10 – направление движения, 00 и 01
– значение скорости  11 – значение периода
 11 – значение периода  . Для принятия решения маской
. Для принятия решения маской  выделяются разряды
 выделяются разряды  , и содержимое аккумулятора
сравнивается с числом 8: содержимое равно 8, если нажатая клавиша имеет коды
, и содержимое аккумулятора
сравнивается с числом 8: содержимое равно 8, если нажатая клавиша имеет коды  (клавиши направления движения); содержимое больше 8,
если нажатая клавиша имеет коды
 (клавиши направления движения); содержимое больше 8,
если нажатая клавиша имеет коды  (клавиши значений периода
 (клавиши значений периода  ); содержимое меньше 8, если нажатая
клавиша имеет коды
); содержимое меньше 8, если нажатая
клавиша имеет коды  (клавиши значений скорости
 (клавиши значений скорости  ).
). 

Рис.19. Расположение клавиш.

Рис.20. Формирователь X2.
Если ввод данных с клавиатуры производится по прерыванию (сигнал IR подается на вход RST7,5), тогда программа обработки прерываний должна начаться с запоминания содержимого регистровых пар, аккумулятора и регистра признаков. Затем следует ввод данных и их анализ.
| PUSH | H | |||
| PUSH | B | |||
| PUSH | PSW | |||
| IN | 58h | ;  | ||
| MOV | C,A | ; запоминание кода в регистре C | ||
| MVI | A, | ;  | ||
| ANA | C | ;  | ||
| MOV | C,A | ; запоминание в регистре C кода нажатой клавиши | ||
| ANI | 
 | ;  | ||
| CPI | 8 | ; сравнение старших разрядов кода с числом 8 | ||
| JZ | L2 | ; переход к заданию направления движения | ||
| JC | L3 | ; переход к заданию скорости движения | ||
| CALL | TAB | ; подпрограмма чтения таблицы данных | ||
| OUT | 30h | ; запись  | ||
| INX | H | ; адрес старшего байта  | ||
| MOV | A,M | ; пересылка  | ||
| OUT | 18h | ; запись  | ||
| JMP | L1 | |||
| L2: | MOV | A,C | ;  | |
| OUT | 10h | ; запись  | ||
| JMP | L1 | |||
| L3: | CALL | TAB | ; подпрограмма чтения таблицы данных | |
| OUT | 50h | ; запись  | ||
| INX | H | |||
| MOV | A,M | ;  | ||
| OUT | 38h | ; запись  | ||
| JMP | L1 | |||
| TAB: | LXI | H,700h | ; rp H = 0700h | |
| MOV | A,C | ;  | ||
| ADD | A | ;  | ||
| MOV | C,A | ; формирование в  | ||
| MVI | B,0 | ; удвоенному коду клавиши | ||
| DAD | B | ;  | ||
| MOV | A,M | ;  | ||
| RET | ||||
| L1: | POP | PSW | ||
| POP | B | |||
| POP | H | |||
| EI | ;разрешение всех прерываний (после следующей команды) | |||
| RET | ;возврат из ПП обработки прерываний RST 7.5 | |||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.