Вопрос про LPT порт?

Тема в разделе "WASM.ELECTRONICS", создана пользователем 123, 3 фев 2005.

  1. 123

    123 New Member

    Публикаций:
    0
    Регистрация:
    26 янв 2005
    Сообщения:
    3
    Как программно(на ассемблере) в DOS можно управлять всеми выводами LPT порта в отдельности?

    И кто может подсказать сколько тактов проца проходит от подачи сигнала на вывод 10 LPT порта

    до срабатывания обработчика прерывания?И еще можно ли запретить все прерывания ,кроме прерывания

    от LPT порта , чтобы моя прога ничем не прерывалась? Задача такая,с помощью компа в ДОС через LPT порт нужно измерить

    период сигнала с max точностью(может быть даже при помощи каких либо внешних

    устройств(счетчиков,делителей,таймеров и т.д))?Подскажите как это можно выполнить?
     
  2. Black_mirror

    Black_mirror Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2002
    Сообщения:
    1.035
    Код (Text):
    1.                      Parallel Printer Port
    2.  
    3. Port 3BC printer data output  (readable)
    4.  
    5.  │7│6│5│4│3│2│1│0│  ports 278, 378, 3BC
    6.   │ │ │ │ │ │ │ └──── data bit 0, hardware pin 2
    7.   │ │ │ │ │ │ └───── data bit 1, hardware pin 3
    8.   │ │ │ │ │ └────── data bit 2, hardware pin 4
    9.   │ │ │ │ └─────── data bit 3, hardware pin 5
    10.   │ │ │ └──────── data bit 4, hardware pin 6
    11.   │ │ └───────── data bit 5, hardware pin 7
    12.   │ └────────── data bit 6, hardware pin 8
    13.   └─────────── data bit 7, hardware pin 9
    14.  
    15. Port 3BD printer status register   (Parallel Printer Port)
    16.  
    17.  │7│6│5│4│3│2│1│0│  ports 279, 379, 3BD
    18.   │ │ │ │ │ │ │ └──── 1 = time-out
    19.   │ │ │ │ │ └─┴───── unused
    20.   │ │ │ │ └──────── 1 = error,  pin 15
    21.   │ │ │ └───────── 1 = on-line,  pin 13
    22.   │ │ └────────── 1 = out of paper,  pin 12
    23.   │ └─────────── 0 = Acknowledge,  pin 10
    24.   └──────────── 0 = busy,  pin 11
    25.  
    26. Port 3BE printer control register   (Parallel Printer Port)
    27.  
    28.  │7│6│5│4│3│2│1│0│  ports 27A, 37A, 3BE
    29.   │ │ │ │ │ │ │ └──── 1 = output data to printer,  (pin 1)
    30.   │ │ │ │ │ │ └───── 1 = auto line feed,  (pin 14)
    31.   │ │ │ │ │ └────── 0 = initialize printer,  (pin 16)
    32.   │ │ │ │ └─────── 1 = printer reads output,  (pin 17)
    33.   │ │ │ └──────── 0 = IRQ disable,1=IRQ enable for ACK
    34.   └─┴─┴───────── unused




    Через младшие 4 бита регистра управления можно осуществлять вывод данных на соответствующие линии, а через старшие 5 бит регистра состояния производить ввод. Сигналы на выводах pin1, pin11, pin14 и pin17 инвертированы, то есть высокому уровню на линии соответствует 0 в регистре и наоборот. Линия ack через резистор 10К подключена к питанию +5В. Максимальная скорость чтения/записи регистров управления и состояния составляет где-то 600К комманд in/out в секунду. То есть теоретически можно получить точность 1,5 мкс. Запрет прерываний можно выполнить при помощи команды CLI.