Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
ВнизПрерывание... Найти похожие ветки
← →
ArtemESC © (2006-08-17 22:55) [0]Возникает ли прирывание при отжатии клавиши клавиатуры, или
только при нажатии?
← →
Чапаев © (2006-08-17 22:58) [1]Возникает. А какой тебе с этого толк под Виндой?
← →
ArtemESC © (2006-08-17 22:59) [2]Чапаев © (17.08.06 22:58) [1]
Под виндой никакого...
А как нажатие отличить от отжатия?
← →
Sam Stone © (2006-08-17 23:02) [3]
> А как нажатие отличить от отжатия?
раз не нажимается/нажато, значит отжимается/отжато :)
← →
Мазут Береговой © (2006-08-17 23:04) [4]INT 16H: сервис клавиатуры.
Это - интерфейс прикладного уровня с клавиатурой. Нажатия клавиш на самом деле обрабатываются асинхронно на заднем плане. когда клавиша получена от клавиатуры, она обрабатывается прерыванием INT 09H и помещается в циклическую очередь.
AH сервис
--- ----------------------------------------------------------------------------
00H читать (ожидать) следующую нажатую клавишу
выход: AL = ASCII символ (если AL=0, AH содержит расширенный код ASCII )
AH = сканкод или расширенный код ASCII
--- ----------------------------------------------------------------------------
01H проверить готовность символа (и показать его, если так)
выход: ZF = 1 если символ не готов.
ZF = 0 если символ готов.
AX = как для подфункции 00H (но символ здесь не
удаляется из очереди).
--- ----------------------------------------------------------------------------
02H читать состояние shift-клавиш. определить, какие shift-клавиши нажаты в
данный момент, находится ли клавиатура в состоянии NumLock, и т.п.
выход: AL = статус клавиатуры -- см. флаги клавиатуры
← →
ArtemESC © (2006-08-17 23:05) [5]Меня интересует: считанный скан-код отличается при нажатии
и отжатии одной и той же клавиши?
← →
ArtemESC © (2006-08-17 23:06) [6]Мазут Береговой © (17.08.06 23:04) [4]
Спасибо, но мне надо написать свой обработчик...
← →
Чапаев © (2006-08-17 23:25) [7]> А как нажатие отличить от отжатия?
В порту 60h бит 7 сброшен в случае, если клавиша была нажата, и выставлен, если клавиша была отпущена. Младшие семь битов -- собственно скан-код.
ЗЫ. Что, и ты тоже за написание собственной операционки взялся?
← →
Мазут Береговой © (2006-08-17 23:28) [8]
> ArtemESC © (17.08.06 23:06) [6]
> Мазут Береговой © (17.08.06 23:04) [4]
> Спасибо, но мне надо написать свой обработчик...
Так надо было и спрашивать на аппаратном уровне, а не на системном, а то непонятно о чем речь..
← →
Чапаев © (2006-08-17 23:30) [9]> Так надо было и спрашивать на аппаратном уровне, а не на
> системном, а то непонятно о чем речь..
Да вроде из поста [0] понятно... Чего там непонятного...
← →
ArtemESC © (2006-08-17 23:32) [10]Чапаев © (17.08.06 23:25) [7],
Thanks, сейчас попробую...
← →
Чапаев © (2006-08-17 23:33) [11]> Thanks, сейчас попробую...
Хех... Не торопись... Как клавиатуру-то разблокировать после приёма скан-кода, знаешь хоть?
← →
ArtemESC © (2006-08-17 23:35) [12]Чапаев © (17.08.06 23:33) [11]
В смысле?
← →
ArtemESC © (2006-08-17 23:37) [13]Чапаев © (17.08.06 23:33) [11]
Не знаю - скажи как...
← →
Чапаев © (2006-08-17 23:38) [14]в прямом.
← →
Чапаев © (2006-08-17 23:40) [15]В порту 61h старший бит выставить и после небольшой задержки сбросить. Остальные биты не менять.
← →
ArtemESC © (2006-08-17 23:42) [16]Чапаев © (17.08.06 23:40) [15]
Thanks еще раз...
Где то я это уже видел - правда не помню где...
← →
Германн © (2006-08-18 01:08) [17]
> ArtemESC ©
Забудь про "прирывания". Их нет и не было никогда! :-)
Были когда-то "прерывания", но они тебе пока недоступны. Читай больше книжки. Многое сейчас можно реализовать в Windows и без самописного управления "прерываниями".
← →
Ketmar © (2006-08-18 01:26) [18]> [7] Чапаев © (17.08.06 23:25)
если клаву не перепрограммировали.
> [15] Чапаев © (17.08.06 23:40)
Чапай, гонишь. она не блокируется. блокируется PIC-контроллер.
> [17] Германн © (18.08.06 01:08)
а где в [0] о виндах говорили?
← →
ArtemESC © (2006-08-18 01:55) [19]Германн © (18.08.06 01:08) [17]
Хочу немного отдохнуть от Windows"oв, а тут прерывания как нельзя кстатье... В Real-mode, лучше прерывания ничего нету...
>>но они тебе пока недоступны
Интересно, а на какой стадии посвещения я достигну их?
>> Ketmar © (18.08.06 01:26) [18]
>> > [15] Чапаев © (17.08.06 23:40)
>> Чапай, гонишь. она не блокируется. блокируется PIC-контроллер.
Можешь попавить его, пожалуйста...
← →
Ketmar © (2006-08-18 02:35) [20]> [19] ArtemESC © (18.08.06 01:55)
"давно это было..." (ц)
если мне не изменяет память, то перед iret надо сделатьmov dx,20h
out dx,20h
или что-то вроде этого. пробовать не советую, пока не убедишься, что я не ошибся. уж очень давно это было. а после многа пива что-то конкретней искать лень. %-)
зыж да посмотри на BIOS"овский обработчик. там в конце (или в начале %-) как раз все разблокировки должны идти.
← →
Ketmar © (2006-08-18 02:36) [21]тьфу.
mov al,20h
.
out 20h,al
не пейте, дети, много пива! %-)
← →
Чапаев © (2006-08-18 10:19) [22]> [20] Ketmar © (18.08.06 02:35)
Это не то. Выдача EOI на PIC необходима, конечно, после окончания обработки всякого внешнего аппаратного прерывания, но при обработке прерывания от клавиатуры важно разблокировать ещё и контроллер клавиатуры (ну, он не только за клавиатуру отвечает, а и ещё за много забавненьких вещиц).
← →
Ketmar © (2006-08-18 11:12) [23]> [22] Чапаев © (18.08.06 10:19)
хм. вот не помню, надо ли это. а фигли, почти 10 лет с тех пор прошло... %-) будем считать, что у тебя память лучше. %-)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.09.10;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.133 c