При инициализации прежде всего необходимо
установить пассивные значения выходных сигналов обмена блока с портом ЕСР, чтобы порт не
воспринял ложного обращения. Также необходимо установить нулевое значение сигнала Stop и
установить признак запрещения начала работы блока (разряд F0), установить признак отсутствия
переполнения кода количества повторений (ячейка 11h).
Программа устанавливает начальное состояние параметра К (1) и
выводит его на индикатор, разрешает обработку прерываний по перепаду сигналов INT0, INT1 и
устанавливает одинаковые высокие приоритеты обоих прерываний, что запрещает прерывание одного
прерывания другим. После установки режима работы таймера/счетчика программа ожидает установки
признака начала работы. Далее программа с периодом Т опрашивает значение аналогового сигнала.
Чтобы не использовать прерывание от таймера в программе, начало опроса аналогового сигнала
определяется программным анализом разряда переполнения таймера с последующей перезагрузкой
константы пересчета. В программе регистр R2 используется для суммирования значений кода с АЦП
для последующего вычисления среднего значения. Величина N хранится в ячейке 23h. Значение кода
00 в ячейке 23h свидетельствует о первом вычислении среднего значения, в ячейке 20h хранится
предыдущее (старое) среднее значение, в ячейке 21h - новое среднее значение. Состояние 00
ячейки 11h свидетельствует о том, что получено значение, отличающееся от предыдущего и
следовательно старое среднее значение должно быть заменено новым; состояние 01 - о том,
что состояние регистра R1 - кода количества повторений превысило значение 127, и
следовательно старое значение должно остаться неизменным. Анализ готовности АЦП также
осуществляется программно. Максимальное значение кода с выхода АЦП равно 31, максимальное
количество опросов N равно 8, следовательно переполнения регистра R2 при вычислении среднего
значения произойти не может (31*8= 248<255). Перед выводом полученного среднего значения
и кода повторений в порт ЕСР, код в регистре R1 уменьшается на единицу.
Поставленная задача решается при отсутствии согласования режимов
работы источника данных и порта ЕСР. Поэтому считается, что порт обязательно устанавливает
высокий уровень сигнала SELECTIN# (ECP MODE-1284Active) и анализировать значение этого сигнала
в микроЭВМ нет необходимости. При обмене данными выполняются только передачи от внешнего
устройства (микроЭВМ) к порту ЕСР. Поэтому микроЭВМ должна реализовывать временную диаграмму
обмена - цикл данных (среднее значение аналогового сигнала) и командный цикл (количество
последовательных повторений этого среднего значения). Для инициализации обмена микроЭВМ должна
посылать в порт запрос, устанавливая низкое значение сигнала FAULT# (Р2.6). После получения
низкого значения сигнала INIT# от порта (Р2.1) микроЭВМ подтверждает запрос на передачу в
обратном направлении низким значением сигнала PERROR (Р2.5). МикроЭВМ передает данные из ячейки
памяти на входные контакты порта через порт Р1 и формирует высокий уровень сигнала BUSY (Р2.4)
для идентификации передачи данных. При установившемся значении кода на входах PD7-PD0 внешнее
устройство формирует низкий уровень сигнала ACK (P2.3), порт высоким уровнем сигнала AUTOFD
(Р2.0) подтверждает прием. МикроЭВМ устанавливает высокий сигнал ASK (P2.3). Порт устанавливает
низкий уровень сигнала AUTOFD (Р2.0, показывая готовность к приему следующего байта. Следующий
байт порт уже передает как RLE - количество повторений, устанавливая низкий уровень сигнала
BUSY (Р2.4). На время вывода байта и числа его повторений прерывания в микроЭВМ запрещаются. На
это же время устанавливается высокое значение сигнала Stop. |
Блок-схема
алгоритма
программы
инициализации
и контроля
параметра
Текст
программы
инициализации
Текст
программы
контроля параметра |