Лабораторный практикум по курсу "Микропроцессорные устройства". Часть 1, страница 25

                       

            Pис. П10.1. Подключение ИМС К580ВН59 в УОУ

            Как показывает схема рис. П10.1 контроллер используется в режиме ведущего (на вход MS/SV# подан сигнал высокого уровня), но без  каскадирования (выходы CAS0...CAS2) не ис­пользуются.  Кроме этого, задействованы два входа запросов преры­ва­ния IRQ0 (на него пода­ет­ся сигнал с выхода первого канала таймера OUT1) и IRQ1 (на него подается сигнал с выхода го­тов­ности приема RxRDY последовательного поль­зо­ва­тельского интерфейса RS-232C - IOS2). Ос­тав­шиеся входы запросов прерываний  сое­ди­не­ны  с  контактами  входного разъема Х10,  через ко­торые можно подавать запросы на пре­ры­вания от внешних источников.  Элементы D1, D2, D4 ис­пользуются в соответствии  с рекомендациями [8] по подключению ИМС К580ВН59 к ма­гис­т­рали МП К580ВМ80А  при  отсутствии  системного контроллера К580ВК82/83.  Временные ди­аг­рам­мы, пояс­ня­ю­щие работу узла контроллера прерываний приведены на рис. П10.2.

    Pис. П10.2.  Временные диаграммы работы узла контроллера прерыванний

            Работа узла контроллера прерываний начинается в момент  времени t0,  когда на i-ый вход запроса прерываний поступает сигнал высокого уровня. С некоторой задержкой в момент времени t1 контроллер  формирует  сигнал  запроса  прерывания у микро­про­цес­сора INT. Этот сиг­нал подается на вход D триггера D4, поэтому системный  сигнал зап­роса прерывания у микро­процессора INTвн# появится несколько позже - в момент времени t2,  когда формируется  фронт сигнала DBIN#, который тактирует триггер D4. C некоторой задержкой микропроцессор подтверждает  прерывание, выдавая в момент вре­мени t3 сигнал INTA высокого уровня.  Этот сиг­нал потенциальный - он не изменится до тех пор пока сигнал INTвн# активен. Для пра­виль­ной  работы  контроллера на его вход INTA# необходимо подать три сигнала низкого уровня для считывания  трехбайтной  ко­ман­ды CALL ADDR. Преобразование потенциального INTA в импульсный INTA# вы­пол­няют элементы D1, D2, позволяя микропроцессору считывать  в мо­мен­ты времени t5,  t6,  t8 соответственно код операции команды CALL (0CDH),  два байта адреса под­прог­рам­мы-обработчика (ADRL, ADRH), которые записываются в контроллер при ини­ци­а­ли­зации.  Первым импульсом INTA# можно сбросить запрос прерывания (см.  момент вре­мени  t4).  Особенностью конт­роллера является то,  что он держит активным сигнал INT только два машинных  цикла  (см.  промежуток времени  t1...t7),  что  явно не­дос­та­точ­но для ввода трехбайтной команды. Для продления сигнала запроса прерывания у микропроцессора  используется  триггер  D4,  который держит активным сигнал INTвн# еще один машинный цикл (см. промежуток времени t7...t9).

            П10.2. Программное обеспечение измерителя частоты

            Программное обеспечение измерителя частоты,  в  котором  используются пре­ры­ва­ния, сос­тоит из двух частей: основная программа и программа обслуживания преры­ва­ния.  Они обо­соб­лены друг от друга и связаны  только  общностью решаемой задачи,  по­этому в дальнешем рассматриваются отдельно (см. блочные схемы алгоритмов на рис. рис. П10.3, П10.4).

           НАЧАЛО ОБРАБОТЧИКА

                                    |

      1. Ввод содержимого счетчика канала 2 и сохранение его  в

         РОН или памяти

      2. Задержка

      3. Загрузка счетной величины в счетчик канала 2

      4. Загрузка счетной величины в счетчик канала 1

      5. Сообщение о конце обслуживания прерывания в контроллер

      6. ei

      7. ret

                                    |

           КОНЕЦ ОБРАБОТЧИКА

    Рис. П10.3.  Алгоритм функционирования программы обслуживания прерывания из­ме­ри­теля частоты

            Алгоритм функционирования основной программы содержит инициализирующую часть (блоки 1...5) и бесконечный  цикл,  в  который входят  блоки  6,  7.  Инициализирующая часть ос­нов­ной программы производит настройку канала 1 таймера на работу в нулевом режиме для фор­мирования измерительных стробов,  канала 2 таймера на работу в нулевом режиме для счета им­пульсов (блоки 1, 2). Последующие блоки инициализирующей части подготавливают канал 2 тай­мера к счету импульсов (блок 3) и запускают измерительный строб (блок 4).