История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Марксистская теория происхождения государства: По мнению Маркса и Энгельса, в основе развития общества, происходящих в нем изменений лежит...
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Интересное:
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Команды передаются через входной буфер 60H. Если необходим параметр, то он передается после подтверждения получения команды, Подтверждением того, что клавиатура приняла команду, является чтение процессором из порта 60h байта ответа клавиатуры. Ответ посылается на все команды, кроме ЕЕН и FEH.
Команда EDH. Установка и сброс индикатора состояния. Следующий за командой параметр представляет собой байт, первые 3 бита которого определяют состояние индикаторов, а остальные равны 0:0 - Scrol Lock, I - Num Lock, 2 - Caps Lock.
Команда ЕЕН. На данную команду клавиатура откликается такой же командой (эхо). Используется для диагностики.
Команды EFH, F1H. Недействительные команды.
Команда FOH. Установка или запрос таблицы скан-ющов. Входной параметр: 0 -получить номер таблицы, I - установить таблицу 1,2- установить таблицу 2,3- установить таблицу 3.
Команда F2H. Прочитать идентификатор. Вначале посылается подтверждение, • затем идентификатор • 83АВН.
Команда F3H. Задание частоты повтора кода клавиш и начальной задержки. Используются биты 0-6:
частота = (l+2*b6+b5)*250;
повтор = 4.17*(8+4*b2+2b1+b0)*2*(2*b4+bЗ).
Команда F4H. Включение клавиатуры. После этой команды клавиатура посылает подтверждение, чистит свой внутренний буфер и переходит в состояние ожидания.
Команда F5. По этой команде все характеристики устанавливаются в исходные, зятем клавиатура блокируется и ждет дальнейших команд.
Команда F6h. Аналогична предыдущей, но клавиатура не блокируется.
Команды F7h-FAh. Характер реакции клавиш;
F7h - все клавиши повторяемые,
F8h - все клавиши посылают код нажатия и код прерывания,
F9h - все клавиши посылают только код нажатия,
FAh - все клавиши повторяемые и посылают коды нажатия и Орерыпния.
Команды FBh-FDh. Определение действия отдельных клавиш.
FBh - клавиша повторяемая,
FCh - клавиша посылает код нажатия и прерывания,
FDh - клавиша посылает только код нажатия.
При посылке такой команды следует послать scan-квд клавиши (таблица 3).
Команда FEh. Повторить передачу - клавиатура повторяет передачу.
Команда FFh. Сброс клавиатуры. Выполняется внутренний тест и посылает если все удачно, FCh - ошибка.
В качестве примера работы с клавиатурой ниже мы приводим программу, которая несколько раз периодически зажигает и nушит индикаторы ры клавиатуры.
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STAK BEGIN:
MOV AX, DATA
MOV DS,AX
MOV CL,0
MOV COUNT,0
MOV AL,0
/отключить прерывания клавиатур»! на уровне контроллера /прерываний, другие прерывания работают исправно
MOV AL,00000010В
OUT 21H,AL
LOO:
/ждать, когда освободится входной буфер
CALL WAIT_IN_BUF
/послать команду
MOV AL,OEDH
OUT 60H,AL;ждать подтверждение
CALL WAIT_OUT
IN AL,60H
/правильное ли подтверждение?
CMP AL,OFAH
JN2 ERR1
/теперь ждем, когда можно посылать параметр
CALL WAIT_IN_BUF
MOV AL.00000001B
MOV CL,CL
/переход к следующему индикатору
SHL AL.CL
OR AL,AL
MOV AL,AL
OUT 60H,AL /небольшая задержка
CALL DELAY
INC СL
/все ли индикаторы зажгли?
CMP CL,3
JNZ LOO
MOV CL,0
MOV _AL,0
CALL WAIT_IN_BUF /теперь погасим все индикаторы
MOV AL,OEDH
OUT 60H,AL
CALL WAIT_OUT
IN AL,60H
CMP AL.OFAH
JNZ ERR1
CALL WAIT_IN_BUF
MOV AL, 0
OUT 60H,AL
IMC COUNT;не пора ли заканчивать?
СМР COUNT,20
JZ END
CALL DELAY
JMP LOO
ERR:
POP AX
ERR1:
MOV AL, 0
OUT 21H,AL
LEA DX,MES
INT 21H
MOV AX,4C01H
INT 21H
END:
MOV AL, 0
OUT 21H,AL
MOV AX,4COOH
INT 21H
;ждать, когда освободится входной буфер
WAIT_IN_BUF PROC
XOR CX,CX Tl:
IN AL,64H
TEST AL,2
LOOPNZ Tl
JNZ ERR
RETN WAIT_IN_BUF ENDP;ждать, когда заполнится выходной буфер WAIT_OUT PROC
T3:
IN AL,64H
TEST AL,1
JZ ТЗ
RETN WAIT_OUT
ENDP DELAY PROC
XOR CX,CX L
PUSH CX MOV CX,50
LOOP LL2
POP CX
LL2:
LOOP LLl
RETN DELAY
ENDP CODE
ENDS
DATA SEGMENT CL DB?
AL DB?
COUNT DW?
MES db 'Произошла овибка клавиатуры,13,10,'$'
DATA ENDS
STAK SEGMENT STACK
DB 50 DUP(?)
STAK ENDS
END BEGIN
Кусок нашей лабы по работе с клавиатурой:
new_09h proc;для работы с клавиатурой
push ax
push bx
push cx
push dx
in al,60h
cmp al,3eh;скан-код F4
je hotkey_F4
cmp al,42h;код F8
je hotkey_F8
pop dx
pop cx
pop bx
pop ax
jmp cs:old_09h
…………………………..
hotkey_F8:
in al,61h;по нажатию F8 звук прекращался
and al,0fch
out 61h,al
and al,7fh;разрешаем работу клавиатуры
out 61h,al
mov al,20h; в контролер прерываний команду EOI
out 20h,al
pop dx
pop cx
pop bx
pop ax
iret
|
|
|
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!