Разработка микропроцессорной системы. Составление карты распределения адресного пространства МПС под ОЗУ, ПЗУ, внешние и интерфейсные устройства, страница 11

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

Задержки  Т2 = 20 мс  и  Т3 = 40 мс  формируются  программно  методом,  описанным  в  предыдущем  пункте.  Для  этого  необходимо  выполнение  соответственно  4000  и  8000  итераций.

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

Ввод  цифрового  эквивалента  напряжения  Х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.


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

На  все  три  используемые  запроса  прерывания  используется  в  общем-то  только  одна  подпрограмма,  которая  инициируется  при  поступлении  запроса  на  вход  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Н.