Разработка микропроцессорной системы. Разработка интерфейсных устройств ввода - вывода. Расчёт электрического сопряжения адресных цепей., страница 11

Необходимо  теперь  задать  режим  работы  программируемого  контроллера  прерываний  КР1810ВН59А.  Сначала  нужно  загрузить  на  него  слова  команд  инициализации  СКИ1,  СКИ2  и  СКИ4.  В  СКИ1  укажем  наличие  СКИ4,  отсутствие  ведомых  контроллеров,  что  IRQ  воспринимается  фронтом;  тогда  код  СКИ1:  0001  0011 (адрес  60Н).   В  СКИ2  указываются  лишь  разряды  старшего  байта  адреса  подпрограмм  обслуживания;  код  СКИ2:  0000  0000  (адрес  61Н).  В  СКИ4  указывается  наличие  микропроцессора  серии  К1810  и  разрешение  автоматического  конца  прерывания,  код  СКИ4:  0000  0011  (адрес  61Н).

При  инициализации  заносятся  также  вектора  прерываний  в  соответствующие  места  в  таблице  векторов  прерываний,  а  также  нулевой  код  уставки.

2.2.  Модуль  логической  обработки  сигналов  X1- X4  и  формирования  управляющего  сигнала  Y1.

Для  ввода  сигналов  Х1 - Х4  необходимо  лишь  один  раз  прочитать  содержимое  порта  по  адресу  00Н.  Четыре  младших  разряда  прочитанного  кода  и  будут  сигналами  Х1 - Х4.  Для  получения  Y1  реализуем  функцию  Х1*Х2 + Х3*Х4.  Длительность  сигнала  Y1  составит  Т1 = 60 мс  и  эту  задержку  реализуем  с  помощью  первого  канала  таймера - счётчика. Перед  задержкой  надо  выставить  сигнал  Y1 (бит  0  порта  с  адресом  01Н)  и  дать  команду  WAIT,  запустив  перед  этим  счётчик (запуск  1-ым  разрядом  порта  С  параллельного  интерфейса  по  адресу  02Н).  Таймер  даст  сигнал  прерывания  по  истечении  интервала  задержки  и  тем  самым  система  будет  выведена  из  состояния  ожидания.  После  цикла  сигнал  Y1 сбрасывается  в  “0”.

2.3  Алгоритм  ввода  напряжений  Х5  и  Х6  и  формирования  сигналов  Y2  и  Y3.

Ввод  кодов  N5  и  N6 (преобразованные  Х5  и  Х6) осуществляется  простым  обращением  к  внутренней  памяти  многоканального  АЦП (адреса  10  и  11Н  соответственно).  Затем  вычисляется  значение  Q2 = max(N5,N6 +K),  где  К - код  уставки,  хранящийся  по  адресу  0000:0400Н  в  ОЗУ (1 байт).  Вывод  сигналов  Y2  и  Y3  осуществляется  по  алгоритму,  представленному  в  виде  блок - схемы  на  рис. 4.

Задержки  Т2 = 40 мс  и  Т3 = 20 мс  формируются  с  помощью  канала  1  таймера - счётчика.  Необходимый  модуль  пересчёта  был  рассчитан  ранее.

2.4.  Алгоритм  ввода  напряжения  Х7  и  формирования  сигнала  Y4.

Ввод  цифрового  эквивалента  напряжения  Х7 (N7) осуществляется  обращением  к  многоканальному  АЦП  с  адресом  12Н.  На  основе  N7  вычисляется  функция  Q4 = A0 + A1 * N7,  где  А0  и  А1 - постоянные  коэффициенты,  хранящиеся  в  ПЗУ (в  самой  программе).  А1 = 0,25 (0100 0000),  а  А0 = 0,17 (0010 1011).  Вычисленное  значение  Q4  выдаётся  на  регистр  (КР1554ИР22),  к  которому  подключён  ЦАП (адрес  регистра  20Н).  На  выходе  этого  ЦАП  получим  сигнал  Y4.


 


                                           Начало

 Приём  информации  с  АЦП
       и  пульта  управления
                Вычисление
           Q2 = F(N5,N6,K)
 


                                           Q2 > Q0

    Y2 :=1,   Задержка  Т2     Y3 :=1,   Задержка  Т3
    Y2 :=0,    Y3 :=0
 


                                              Конец

              Рис. 4.  Алгоритм  формирования  сигналов  Y2  и  Y3.

2.5.  Алгоритмы  обработки  сигналов  прерывания.

При  прерывании  от  аварийного  датчика (IRQ0) необходимо  включить  на  пульте  управления  аварийный  сигнал.  Для  этого  нужно  лишь  разрешить  счёт  нулевому  каналу  таймера - счётчика (модуль  пересчёта  уже  загружен  при  инициализации  системы),  это  осуществляется  подачей  “1”  в  разряд  0  канала  С.  В  программе  обработки  прерывания  необходимо  также  выдать  на  индикацию  сигналы  Х1 - Х4  и  число  Q4 - это  действие  производится  обращением  к  модулю  вывода,  разработка  которого  не  предусмотрена  в  данном  варианте  технического  задания.  Затем  МПС  переводится  в  состояние  ожидания (командой  HLT).  Перед  командой  HLT  запрещаем  все  прерывания  в  микропроцессоре (команда  CLI) и   тогда  выход  из  создавшейся  ситуации  возможен  лишь  по  нажатию  кнопки  “СБРОС”.