Здравствуйте все!
В последнее время проявлен некоторый интерес к обработке
аппаратных прерываний под Win. Ниже приводится модуль, в котором
решается задача, возникшая у меня в процессе создания ПО для
обработки телеграфных сигналов - получение строго фиксированных
интервалов времени в 1, 2 или 5 мс. В ДОС проблем не было -
перепрограммировал таймер новым делителем, "вешал" обработчик
нa int08 и все дела. В Windows перепрограммировать таймер нельзя
(эти ужасные 55 мс!), поэтому самым простым показалось использование
прерывания от свободного СОМ-порта.
- изготавливаем "заглушку" на СОМ-порт, заведя линию передачи Tx
на линию передачи Rx, DTR на DSR, а также соединяем вместе три
сигнала:
RLSD, RTS и CTS;
- вешаем обрабочик прерываний на $0C для СОМ1 или $0B для СОМ2 таким
образом, что, передавая символ в линию, мы его же и получаем, что
возбуждает прерывание по приему символа; в обработчике снова записы-
ваем символ в порт передачи и пошло-поехало...
- программируем UART на нужную скорость и, тем самым, добиваемся
нужного интервала времени.
Если будут вопросы, готов ответить.
Виктор
|