Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1155884743
her
2006-08-18 11:05
2006.09.10
TBytes и TIdSocketHandle


2-1155809951
Alral
2006-08-17 14:19
2006.09.10
Razmer Memo.


15-1155654600
Parus
2006-08-15 19:10
2006.09.10
HTML


15-1155485958
elDog
2006-08-13 20:19
2006.09.10
ZLIB


2-1155983892
SerJaNT
2006-08-19 14:38
2006.09.10
HTML и Буфер обмена





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский