Рис. 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 |
; запись в регистр младшего байта (рисунок 10) |
||
INX |
H |
; адрес старшего байта данных |
||
MOV |
A,M |
; пересылка в аккумулятор |
||
OUT |
18h |
; запись в регистр старшего байта (рисунок 10) |
||
JMP |
L1 |
|||
L2: |
MOV |
A,C |
; – код нажатой клавиши |
|
OUT |
10h |
; запись в триггер знака (рисунок 21) |
||
JMP |
L1 |
|||
L3: |
CALL |
TAB |
; подпрограмма чтения таблицы данных |
|
OUT |
50h |
; запись в регистр младшего байта счетчика M1j, рисунок 14 |
||
INX |
H |
|||
MOV |
A,M |
; |
||
OUT |
38h |
; запись в регистр старшего байта счетчика M1j, рисунок 10 |
||
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).
Ссылка на скачивание - внизу страницы.