Ввод кодов N5 и N6 (преобразованные Х5 и Х6) осуществляется простым обращением к внутренней памяти многоканального АЦП (адреса 0900 и 0901 соответственно). Затем вычисляется значение Q2 = N5 + N6 +K, где К - код уставки, хранящийся по адресу 0000Н во внешней памяти данных ОМЭВМ (1 байт). Вывод сигналов Y2 и Y3 осуществляется по алгоритму, представленному в виде блок - схемы на рис. 11.
Задержки Т2 = 20 мс и Т3 = 40 мс формируются программно методом, описанным в предыдущем пункте. Для этого необходимо выполнение соответственно 4000 и 8000 итераций.
Ввод цифрового эквивалента напряжения Х7 (N7) осуществляется обращением к многоканальному АЦП с адресом 0902Н. На основе N7 вычисляется функция Q4 = A0 + A1 * N7, где А0 и А1 - постоянные коэффициенты, хранящиеся в ПЗУ (в самой программе). А1 = 0,25 (0100 0000), а А0 = 0,17 (0010 1011). Вычисленное значение Q4 подаётся на порт, к которому подключён ЦАП (адрес 0802Н). На выходе этого ЦАП получим сигнал Y4.
Начало
Q2 > Q0
Конец
Рис. 11. Алгоритм формирования сигналов Y2 и Y3.
На все три используемые запроса прерывания используется в общем-то только одна подпрограмма, которая инициируется при поступлении запроса на вход INT0 ОМЭВМ. При поступлении запроса прерывания на INT0 управление всегда передаётся по ардесу 0003Н, поэтому по этому адресу в ПЗУ команд надо поставить команду безусловного перехода на программу обработки прерывания. Уже сама программа прерывания должна уточнить, от какого именно источника пришёл запрос. Для этого считывается информация о запросах прерывания с порта 0В00Н и просматривается 3 младших бита этой информации. Позиция, в которой установлена “1”, будет указывать на источник прерывания.
При прерывании от аварийного датчика (IRQ0) необходимо выдать на индикацию сигналы Х1 - Х4 и число Q4 - это производится обращением к модулю вывода, разработка которого не предусмотрена в данном варианте задания. Затем организуем бесконечный цикл, предварительно запретив прерывания, в котором организовано периодическое включение и выключение сигнала аварии (бит 4 параллельного порта с адресом 0В02Н) с периодом 0,5 с, то есть надо организовать задержку в 0,25 с, таким образом число итераций в цикле задержки будет равно 50000 (организация цикла задержки описана ранее). Из этого участка программы уже нельзя выйти иначе, как нажав кнопку “Сброс”.
При отказе источника питания приходит запрос IRQ1, программа обработки которого должна лишь записать в энергонезависимое ОЗУ (с адреса 0010Н) текущие значения всех основных регистров микропроцессора (ACC, B, PSW, SP, DPTR (DPH, DPL), R0 - R7).
Программа обработки прерывания от запроса IRQ2 является также программой ввода с клавиатуры. Этот модуль вызывается при любом нажатии на клавишу клавиатуры пульта управления. Сканирование клавиатуры производится автоматически, но при нажатии сканирование временно блокируется, поэтому сразу же после вызова модуля обработки запроса от клавиатуры нужно сбросить запрос прерывания (для этого подадим на вывод ОМЭВМ Р1.0 сначала “0”, а затем сразу же “1”). Скэн-код нажатой клавиши можно прочитать с порта по адресу 0В01Н (5 младших разрядов). Клавиши 0 - F имеют коды от 00Н до 0FН соответственно, клавиша “Уставка” - код 10Н, “Вывод” - 11Н, “Останов” - 12Н. Клавиши с шестнадцатиричными цифрами работают лишь после нажатия на клавишу “Уставка” - при её нажатии по адресу 0008Н во внешнем ОЗУ устанавливается код 01Н (то есть ожидается ввод первой из двух клавиш уставки). Для уставки вводится две шестнадцатиричные цифры, которые накапливаются в промежуточной ячейке по адресу 0009Н. После ввода второй цифры уставки ячейка 0008Н обнуляется, а промежуточный код уставки из ячейки 0009Н переписывается в 0000Н. Воспользоваться клавишами “Вывод” или “Останов” можно лишь при нулевом коде по адресу 0008Н.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.