Разработка микропроцессорной системы для управления объектом. Составление карты распределения адресного пространства, страница 16

Основной цикл программы состоит из трех процедур, предназначенных для формирования управляющих сигналов и формирования необходимого цикла управления – 0.5 с. Для формирования цикла управления 0.5 с. используется внутренний таймер Т2, переполнение которого происходит с частотой 100 Гц, так как этот таймер также используется для вывода значения сигнала Q4 на индикацию. Для формирования длительности управляющего цикла используется регистр R5, содержимое которого инкрементируется с частотой 100 Гц (период – 10 мс). Таким образом, при значении 50 = 32h в регистре цикл управления повторяется снова (10 мс * 50 = 500 мс).

Выработка управляющего сигнала Y1 происходит после обработки входных сигналов Х1,…Х4 в соответствии с заданной функцией X1+ X2 + X3 + X4.

Если значение функции равно 1, то устанавливаем значение Y1 в 1 и формируем необходимую длительность сигнала. Для этого используется внутренний таймер Т0. Значения, загружаемые в таймер (TH0 = 6Dh, TL0 = 8Ah), рассчитаны, исходя  из того, что  6D8Ah = FFFFh - 927Ch + 7h, где 927Сh = 37500 – число инкрементировании таймера до переполнения для формирования задержки 90 мс (90 мс = 2.4 мкс * 37500). Величина 7h учитывает временные затраты на выполнение команд (7 машинных циклов) при обработке прерываний.

Далее происходит обработка аналоговых сигналов Х5, Х6 и формирование управляющих сигналов Y2, либо Y3. Для ввода аналоговых сигналов при считывании данных из АЦП задается адрес входного канала АЦП. После получения цифровых эквивалентов сигналов начинается вычисление функции max(N5-N6,K). Первоначально значение установки задается равным 0, но в ходе работы оператор может изменять это значение с помощью клавиатуры. Полученное значение Q2 необходимо сравнить с заданной константой Q0 = 1Fh. Т.к. результирующее значение Q2 может быть больше FFh, то в зависимости от этого значения сравнение производится в программе по-разному: при Q2>FFh, считаем, что Q0 < Q2, в остальных случаях производим непосредственное сравнение. Различия в обработке данных вариантов связаны с тем, что разрядность величин, над которыми производятся операции, составляет 8 бит.

После получения  результата сравнения формируется управляющий сигнал Y2 или Y3. Длительность сигнала формируется с помощью таймера Т0.

Далее в цикле управление происходит ввод аналогового сигнала Х7, его оцифровка и вычисление функции Q4 = A0 + A1*N7 = 0.17 + 0.25*N7.

Умножение на константу 0.25 заменяем сдвигом на 3 разряда вправо.

A0 = 0.17 = 0.17 * (2.55 / 100) = 0.4352 ≈ 0.44, поэтому задаем A0 = 0.44 = 2Ch = 00101100b.

 


Рис.9. Схема алгоритма управления объектом

В соответствии с ТЗ значение Q4 необходимо вывести на индикацию вместе с управляющими сигналами Х1 – Х4 . Вывод производится при нажатии управляющей клавиши «Вывод», посредством обработки прерывания, возникающего от клавиатуры. Причем, при очередном нажатии клавиши «Вывод» значения сигналов отображаются, если до этого индикация была выключена, и перестают выводиться, если индикация была включена.

Вывод на семисегментные индикаторы значения Q4 производится с частотой 100 Гц. Для формирование временных интервалов используется внутренний таймер Т2. 1/100 = 10 мс = 2.4 мкс * 4167,    4167 = 1047h, FFFFh – 1047h + 7h = BE9Fh. Поэтому загружаем в TH2 значение 0BEh, в  TL2 – 9Fh.  

Значение Q4 выводится в формате сотых долей, т.е. в диапазоне от 00 до 99. Для этого производится перевод из диапазона 00 – FF с помощью деления на 2.55, после чего десятки выводятся на первый индикатор, а единицы на второй.

При обработке прерывания от аварийного датчика необходимо включить световой сигнал аварийной сигнализации с частотой 2 Гц. Период звукового сигнала равен 0,5 с. Для формирования данной частоты используем таймер Т0.

При обработке прерывания по отказу источника питания копируем в энергонезависимое ОЗУ содержимое четырех банков регистров  R0,…, R7, а также всех регистров специальных функций.