IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> нажатие кнопок..., считывание нажатия в цикле без его ост.
сообщение
Сообщение #1


Гость






я хотел бы знать как в цикле фиксировать нажатие кнопки не останавливая при этом цикл ...
т.е. например в теле цикла х имзеняется по форуле x:=x+1; ... нажал что нада
а цикл всё идёт и ёдет ... но уже x:=x+2; ... вот так вот ...


за ответы заранее благодарен !
 К началу страницы 
+ Ответить 
 
Closed Topic Открыть новую тему 
Ответов
сообщение
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Цитата

procedure KbdHandler; interrupt;
begin
{Если пришли сюда, то была нажата клавиша. Здесь определяется нажатие на клавишу
и ее скэн-код записывается в какую-либо глобальную переменную, после чего вызывается
"настоящее" прерывание 9Н}
end;


Дополню:
1) скэн-код и флаг нажатия-отпускания можно получить из порта $60 (как значение элемента псевдомассива Port, e. g. x := Port[$60]). Младшие 7 бит полученного значения будут разны скэн-коду, а старший 7-й бит равен 0, если клавиша нажата и 1 - если отпущена;
2) вызывать "настоящий" обработчик Int 9 не всегда имеет смысл - например, в том случае, когда мы сами хотим организовать буферизацию событий клавиатуры (в этом случае необходимо перед выходом из обработчика сбрасывать контроллер прерываний: Port[$20] := $20).

Цитата
P.S. А для чего это нужно, более конкретно можно описать? Возможно есть другой, более безопасный способ...

Да, это важно. Во многих случаях можно обойтись без подобных "махинаций" c IRQ1, используя, например, службы BIOS.


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
MuXa   нажатие кнопок...   12.01.2005 20:16
volvo   Для какого компилятора? Если ТР (не под Windows) -…   12.01.2005 20:23
Guest   << то написанием своего обработчика прерыван…   12.01.2005 20:26
volvo   Вот каркас (так как написание процедур обработки п…   12.01.2005 20:51
xds   Дополню: 1) скэн-код и флаг нажатия-отпускания мо…   12.01.2005 21:17
Altair   а зачем такие трудности? Может быть тело цикла вып…   12.01.2005 21:58
Бродяжник   Зачастую этот вопрос возникает, когда важно знать …   12.01.2005 22:12
FreeMan   Отсюда вывод: работать с прерываниями в паскале - …   12.01.2005 22:14
Altair   Глупость. все разговоры о том, что в Паскале что-т…   12.01.2005 22:20
FreeMan   ... или недостаточный уровень умений программинга …   12.01.2005 22:26
MuXa   :huh: народ я то хотел змейку намутить ... типа…   12.01.2005 22:33
volvo   MuXa А можешь привести пример того цикла, в течени…   13.01.2005 1:30
SHnur   MuXa , вот ! Делай так : if keypressed then …   13.01.2005 1:35
MuXa   ВОТ ! ... это то что мне и было нужно ! …   13.01.2005 2:57
suriv   А почему опасная ? :p2:   13.01.2005 3:35
volvo   suriv Малейшая ошибка - и вектор прерывания …   13.01.2005 3:46
Guest   program MuXaZ_zmeika; uses crt,graph; label 1,2,3…   13.01.2005 5:36
xds   Oleg_Z, интересно, каким боком TSR относятся к …   13.01.2005 7:31
xds   Расширенные коды BIOS всё же стоит обрабатывать о…   13.01.2005 7:38
Guest   вот в догонку кому еще интересно ... всё выглядит…   14.01.2005 4:30
SHnur   MuXa , если хочеш , то можеш посмотреть мой вариан…   14.01.2005 4:57
FreeMan   какое прерывание и в каком состоянии надо цеплять…   14.01.2005 20:45
Altair   Со статусом модератора форума "Ассемблер…   14.01.2005 21:59
Romtek   Флейм пошёл жестокий... repeat  key :=…   24.01.2005 6:42


Closed Topic Открыть новую тему 
4 чел. читают эту тему (гостей: 4, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 27.09.2024 17:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name