Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.10;
Скачать: CL | DM;

Вниз

Прерывание...   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.049 c
15-1155811350
Layner
2006-08-17 14:42
2006.09.10
Сок, который в коробках продается по 0,2/0,5/1...


15-1155587414
lookin
2006-08-15 00:30
2006.09.10
Сны


15-1155660961
Гарри Поттер
2006-08-15 20:56
2006.09.10
Перенос системы на другой HDD


15-1155803907
ArtemESC
2006-08-17 12:38
2006.09.10
Запись в MBR


2-1155630742
GEM
2006-08-15 12:32
2006.09.10
Calculated field - не удается правильно вычислить