Рис. 17. Временные диаграммы работы шифратора клавиатуры.
Интерфейсные
схемы шифратора клавиатуры подключают к системной шине данных 4-разрядный код
нажатой клавиши помощью буфера данных, показанного на рисунке 18. Перепадом
сигнала с 0 на 1 D-триггер
устанавливается в состояние 1 (рисунок 19). Подается на буфер данных 74244b 4-разрядный код клавиатуры
. При выполнении команды
с дешифратора адреса поступает
значение сигнала
, а с шины управления – значение
, что приводит к появлению значения
сигнала
, разрешающего передачу по шине
данных 5- разрядного кода в аккумулятор CPU.
Рис.18. Формирователь шины данных для ввода.
Анализ
назначения нажатой клавиши. Функциональное назначение клавиш показано на рисунке 20: клавиши задают скорость движения цели
,
– направление движения цели (клавиши
не используются),
– период
сигнала
Коды этих трех групп клавиш
различаются значением двух старших разрядов
: 10 – направление движения, 00 и 01
– значение скорости
11 – значение периода
. Для принятия решения маской
выделяются разряды
, и содержимое аккумулятора
сравнивается с числом 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).
Ссылка на скачивание - внизу страницы.