Вопрос про LPT порт please
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено 888 13 марта 2005 г. 14:27

Задача такая : на вход LPT1 порта(режим EPP),а именно на ножку 10(прерывание) подаются
импульсы амплитудой +5В.По идее на переднем положительном фронте импульса должно
вызываться прерывание IRQ7(INT 0Fh).Так вот задача состоит в том, чтобы
перехватить это прерывание и обработать эго по своему.Я написал прогу на
asm под ДОС , но она почему-то не работает.Подскажите pleaz в чем причина????

;Драйвер для LPT1 порта
.model small
.stack 100h
.data
msg db "Driverя LPT port",'$'
old_int dd ?
.code
start proc near
mov ax,@data
mov ds,ax
mov ah,09h
mov dx,offset msg
int 21h
;сохранить адрес предыдущего обработчика прерывания
mov ax,350Fh ;AH=35 AL=номер прерывания
int 21h ;Функция DOS : определить адрес
;обработчика прерывания(возвращает в ES:BX)
mov word ptr old_int,bx ;запомнить смещение
mov word ptr old_int+2,es ;запомнить сегмент
;установить наш обработчик
push ds ;сохранить ds

push cs ;Настроить DS на сегмент кода DS:=CS
pop ds
mov dx,offset int0Fh
mov ax,250Fh
int 21h

mov dx,27Ah ;Вкл двунаправленный обмен данными
mov al,32
out dx,al

in al,21h ;Разрешить прерывание
and al,7Fh ;от LPT порта
out 21h,al

pop ds ;восстановить ds

;ОСНОВНАЯ ПРОГА

mov ah,1 ;Ожидание нажатия
int 21h ;на любую клавишу

;конец основной проги

in al,21h ;Запретить прерывание
or al,80h ;от LPT порта
out 21h,al

push ds ;восстановить предыдущий
pop es ;обработчик прерывания
mov ds,word ptr es:old_int+2
mov dx,word ptr es:old_int
mov ax,250Fh
int 21h

mov ax,4C00h
int 21h
start endp

int0Fh proc far ;Обработчик IRQ7

push ax ;Сохранение
push bx ;регистров
push es
push ds

mov ax,0b800h ;Вывести на экран
mov es,ax ;символ 'H' для
mov bx,0 ;контроля,т.е если
mov al,'H' ;вывелось 'Н' значит
mov es:[bx],al ;перехват удался
inc bx
mov al,1
mov es:[bx],al

mov al,20h ;Послать команду контроллеру прерываний
out 20h,al ;о завершении обработки прерывания

pop ds
pop es
pop bx
pop ax

sti

iret

int0Fh endp
end start

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru