#0
by ado
Народ, помогите! Как заставить LPT генерить прерывания. Вот есть такой код: uses crt,dos; var tik1,tik2:longint; p,p1:byte; key:char; OldVector:Pointer; Procedure LPTirq;interrupt; {Процедура обработки прерывания} Begin tik1:=tik1+1; {Увеличиваем счетчик.} port[$20]:=$20; {Разрешаем дальнейшие прерывания.} End; BEGIN key:=#1; tik1:=0;tik2:=0; clrscr; p:=port[$37a]; {Читаем регистр управления LPT1.} p:=p or 16; {Устанавливаем бит 4 (разрешение IRQ).} port[$37a]:=p; {Отправляем в порт.} p:=port[$21]; {Читаем регистр маски контроллера прерываний.} p:=p and 127; {Сбрасываем бит 7 (LPT1).} port[$21]:=p; {Отправляем в порт.} GetIntVec($f,OldVector); {Соханяем старый,} SetIntVec($f,@LPTirq); {и устанавливаем новый вектор прерываний.} repeat if tik1>tik2 then {Проверяем, не увеличился ли счетчик, и если увеличился,} begin tik2:=tik2+1; writeln(port[$379]); {выводим регистр состояния порта.} end; if keypressed then key:=readkey; until key=#13; SetIntVec($f,OldVector); END. Этот код не работает. То есть, при посылке импульса на любой вход LPT, никакой реакции. При этом, непосредственный опрос порта работает: uses crt,dos; var tik1,tik2:longint; p,p1:byte; key:char; OldVector:Pointer; Procedure LPTirq;interrupt; Begin tik1:=tik1+1; port[$20]:=$20; End; BEGIN key:=#1; tik1:=0;tik2:=0; clrscr; p1:=port[$379]; {Читаем регистр состояний порта.} repeat p:=port[$379]; {Еще раз читаем,} if p<>p1 then {и если значение изменилось,} begin writeln(p); {выводим на экран} p1:=p; {и запоминаем новое значение.} end; if keypressed then key:=readkey; until key=#13; SetIntVec($f,OldVector); END. Этот код работает прекрасно. Но мне надо через прерывания.
#2
by romix
Это Турбо Паскаль для DOS что ли? Че-то я не понял, а где установка вектора прерывания, и где обработчик? Или это одна и та же процедура? :-) Типа рекурсивная обработка прерывания получается..:-)
#3
by romix
+2 Все, допер, он после BEGIN. Короче имхо ты проверяешь счетчик сразу после установки вектора, а пазуы не видать. Короче надо подождать, а потом зырить счетчик.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Как избавится от проводок непроведённого документа? ...
- Переоценка товара в рознице. УТ 10.1 - 1Сv8. Как все остатки?
- Расшифровка точки диаграммы
- Заполнение спр. Контактные лица програмно
- Сбилась нумерация эл-тов Спр-кНомен-ра В Предпр-ле.Как исправить?
- Количество знаков после запятой в цене
- Как различить ключи от 1сБухгалтерии и 1сТорговли?
- Как создать ссылку на объект типа Справочник?
- Спецы помогите! В 1С под Citrix не переключается раскладка клавиатуры!
- как рассчитать сумму по строке в запросе ?
- Выгрузка в банк.
- форма 0504210 Бюджет, 5
- Конвертор ИБ 1С Предприятия 7.7
- ПУБ. Зачёт аванса покупателю
- При попытке печати 1С закрывается
- Печатает Торг12 на пол страницы. В чем проблема?
- Комплектация в ТИС 9.2
- Как правильно оформить возврать основного средства поставщику?
- Что такое "Межотчетный период" в Бюджете?
- Объясните, пожалуйста, что за формы отчетности за 2005 год: *.005, *.grp, *.upd