Описание функций драйвера l154drv.asm для языка 'Си'.

Используемые термины.
Rate     -> интервал ввода в микросекундах
Nch      -> число каналов для многоканального ввода
Data     -> указатель на целочисленный массив для данных
NPoint   -> число отсчетов для одноканального ввода и число кадров для
            многоканального ввода (под кадром понимается
            последовательность вводимых отсчетов по Nch каналам)
Channel  -> номер канала при одноканальном вводе (в номер канала,
            входит диапазон входного сигнала
                  - младшие четыре бита являются номером канала для режима
                    16 дифференциальных каналов (при этом шестой бит должен
                    быть равен нулем)
                  - для режима 32 каналов с общей землей младшие пять бит
                    определяют номер канала, а шестой бит должен быть равен
                    единице   
                  - следующие два бита являются диапазоном
                    входного сигнала
                         11 - 5.12 В
                         01 - 2.56  В
                         10 - 1.024  В
                         00 - отключение  канала)
Channels -> указатель на целочисленный массив с номерами каналов
            для многоканального ввода (см. примечание к 'Channel')

Формат данных.

   Данные, считанные с АЦП, представлены в формате беззнакового целового
   двубайтного  числа (-2048 <= N < 2048). 
   Данные, выдаваемые на ЦАП, связаны с выдаваемым напряжением
   следующей таблицей       0    ->      -5.12 В
                        +2048    ->       0.00 В
                        +4095    ->      +5.12 В.


Все функции предполагают использование указателей типа FAR,
поэтому компиляцию программы желательно проводить в модели памяти
LARGE, в которой по умолчанию используются дальние вызовы процедур и
дальние указатели на данные.
Для использования драйвера в языке Паскаль, необходимо  заменить
команду .MODEL LARGE на .MODEL TPASCAL и слова ' C ' на ' PASCAL '
в файле 'L154DRV.ASM'.

ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ :

    1   void SETBASEADDRESS(int address);

        Устанавливает новый базовый адрес в пространстве PC для функций
        данного драйвера, переменная address должна быть равна 0x300,
        0x310, 0x330, 0x340 в соответствии с установленными перемычками
        на плате L154 (см. описание платы).

    2   int PLATA_TEST();

        Возвращает нулевое значение в случае успешного тестирования
        присутствия платы в компьютере.


ФУНКЦИИ ПО РАБОТЕ С АНАЛОГО-ЦИФРОВЫМИ КАНАЛАМИ:

    1  void SETCHANNEL(int Channel);

        Устанавливает канал Channel для последующего ввода функцией
        SAMPLE().

    2  int SAMPLE();

       Возвращает результат преобразования по ранее заданному каналу.

    3  int ADCHAN(int Channel);

      Возвращает результат преобразования по ранее заданному каналу.
      Данной функцией удобно пользоваться для асинхронного одноканального
      ввода, когда не требуется переустанавливать номер канала.

    4  void KADR (int *Data, unsigned int *Channels, int Nch);

       Вводит Nch отсчетов с каналов АЦП, указанных в массиве Channels
       в массив Data.

    5  void STREAM (int *Data, int Npoint, int Channel, int Rate);

       Считывание 'Npoint' отсчетов по каналу 'Channel' в массив
       'Data' с интервалом 'Rate' мкс между отсчетами.
       Минимальное значение Rate составляет 10 мкс.

    6  void SOFT(int *Data, int NPoint, unsigned int *Channels, int Nch, int Rate);

       Считывание  'NPoint'  кадров  в  массив  'Data'  с интервалом
       'Rate' мкс между кадрами.  Под  кадром   подразумевается  ряд
       отсчетов, состоящий из  результатов последовательного опроса
       первых  'Nch'  каналов,  указанных в массиве 'Channels'.
       Размерность  массива  'Data'  не  должна  превышать 32500.


ФУНКЦИИ ПО РАБОТЕ С ЦИФРО-АНАЛОГОВЫМ КАНАЛОМ:

    1  void OUTDA(int Code);

       Устанавливает выходное напряжение на ЦАПе в соответствии с кодом Code.

    2  int OUTDAARRAY( int *Data, int Rate, int NPoint);

       Выводит NPoint отсчетов из массива Data на ЦАП с интервалом Rate мкс.
       Минимальное значение интервала ввода Rate => 11 мкс.


ФУНКЦИИ ПО РАБОТЕ С ЦИФРОВЫМИ (ДИСКРЕТНЫМИ) ТТЛШ ЛИНИЯМИ:

    1  int INPBYTE();

       Возвращает состояние 8-и внешних цифровых TTL линий.

    2  void OUTBYTE(int Code);

       Функция установки внешних цифровых линий в соответствии с битами
       младшего байта параметра 'Code'.


ФУНКЦИИ ПО РАБОТЕ С ПРЕРЫВАНИЯМИ:

    1    void INITINTR(int Rate1, int Rate2, interrupt *Vector);

       Программирует контроллер прерываний и плату L154 для
       работы в режиме генерации прерывания IRQ.
       После вызова процедуры INITINTR() плата генерирует прерывания
       с интервалом Rate1*Rate2 мкс.. которое обрабатывается
       функцией-обработчиком, адрес которой передается в параметре
       Vector. Допустимые значения для параметров Rate1 и Rate2
       лежат в диапазоне 3..65535.


    2  void STOP_INTR(void);

       Выключаем режим генерации прерываний на плате L-154 и
       восстанавливает контроллер прерываний PC.

    3   void INTR_SETUP(int irq_number);

       Сообщает драйверу о выбранном номере прерывания (IRQ3..IRQ6) на плате
       L-164. По умолчанию на плате установлен номер прерывания IRQ3 и
       драйвер также по умолчанию предполагает прерывание IRQ3.
       Описание параметра irq_number:
         irq_number = 0   -> IRQ3
         irq_number = 1   -> IRQ4
         irq_number = 2   -> IRQ5
         irq_number = 3   -> IRQ6.


ФУНКЦИИ ДЛЯ РАБОТЫ С ТАЙМЕРОМ:

    1  void TIMER(int Timer, int Mode, int Rate);

          Функция программирования таймера:

          'Timer' - номер таймера (0, 1, 2),
          'Mode'  - режим таймера (0-5),
          'Rate'  - временной интервал в мкс.

          Подробное описание параметров см. в описании платы.

    2  void WAIT_TIMER(int Timer);

          Функция ожидания перехода 1-0 на таймере 'Timer'. Данная функция
          требуется при работе таймера в режиме генератора меандра для
          синхронизации.

  3   int GET_TIMER();

      Функция чтения порта статуса с выходами таймеров и битом готовности.
      Младшие три бита возвращаемого значения соответствуют выходам
      трех таймеров, а четвертый бит биту готовности.
