Особенности программирования матричной клавиатуры с внешним генератором запроса прерываний. Работа данной матричной клавиатуры строится следующим образом. На линиях B1, B2 при разомкнутых кнопках будут присутствовать высокие уровни, т. к. эти линии подключены через резисторы к источнику напряжения. Пусть в некоторый момент на линии A1 присутствует сигнал низкого уровня, а на линиях A2...A4 — высокого. Данные уровни могут быть сформированы, например, портом вывода. Допустимый втекающий ток низкого уровня для этого устройства (порта вывода) должен быть больше тока, определяемого из выражения R= U\ I, где R = R1 = R2. При нажатии на кнопку SB1 на линии B1 установится сигнал низкого уровня, состояние сигнала на линии B2 не изменится. Если нажать кнопку SB2, то сигнал низкого уровня появится на линии B2 . Очевидно, что нажатие кнопок SB3...SB8 не изменит уровни на линиях Bi . Таким образом, анализируя состояние линий Bi и, зная, что низкий уровень установлен на линии A1, можно определить, какая из кнопок SB1 или SB2 нажата. Чтобы проанализировать состояние кнопок SB3 и SB4, необходимо установить сигнал низкого уровня на линии A2, а на линии A1 — высокого уровня. В этом случае появление сигнала низкого уровня, например, на линии B 2 будет свидетельствовать о нажатии на кнопку SB3. Проверка состояния кнопок SB5...SB8 производится аналогично. Линии Ai , состояние которых задается портом вывода, можно назвать вход- ными (сканирующими ) линиями матричной клавиатуры. Соответственно, линии Bi можно назвать выходными (возвратными) линиями клавиатуры. Подключают эти линии к порту ввода. Применительно к матричной клавиатуре может быть использовано аналогичное схемотехническое решение, например использованием схемы И-НЕ, подключенной к возвратным линиям клавиатуры. Тогда при появлении хотя бы на одной из возвратных линий лог.0 , что свидетельствует о нажатии клавиши, на выходе логической схемы появится лог.1 и этот сигнал можно использовать для прерывания процессора. При большом числе возвратных линий это вызовет существенное усложнение схемы. На практике обычно поступают следующим образом: программа анализа состояния клавиатуры также реализуется в виде подпрограммы обработки прерывания, но само прерывание периодически запрашивается внешним устройством, например, таймером или генератором импульсов. Подпрограмма обработки прерывания должна не только анализировать состояние выходных линий клавиатуры, но и изменять сигналы на входных(сканирующих) линиях клавиатуры. Пример алгоритма подпрограммы определения координат нажатой кнопки приведен на Рис.3. Считывание кода возвратных линий Определение полного кода клавиши Ф1 Ф2 Ф3 Выполнение Ф4 Ф5 функции Сравнить текущий код сканирования с кодом последней сканирующей линии Активировать следующую линию да Nтек < Nпосл Активировать первую линию Разрешить INT Выход из ПП Рис. 3 Возможный вариант структуры подпрограммы обработки Режим работы ВВ55. Режим 1. Ввод 3 5 3 6 7 26 RESET IOP КА7 WR КА6 RD КА5 CS КА4 37 38 39 40 25 A1 КА3 A0 АК2 24 23 КА1 27 КА0 28 29 11 GND Ucc 30 22 10 КВ7 12 КВ6 КВ5 13 Обмен информацией между магистралью данных МП системы и микросхемой КР580ВВ55А осуществляется через 8разрядный двунаправленный трехстабильный канал данных (DB). Для связи с периферийными устройствами используются 24 линии ввода/вывода, сгруппированные в три 8-разрядных канала А, В, С. Направление передачи информации и режимы работы каналов определяются программным способом. Микросхема может функционировать в трех основных режимах. В режиме 0 обеспечивается возможность синхронной программно управляемой передачи данных через два независимых 8разрядных канала А и В и два 4разрядных канала С. Рис.4. Условное графическое обозначение микросхемы КР580ВВ55А Режим 0 используется в тех случаях, когда темп выдачи новой информации из источника (например, БЦП) невысок и ВУ как приемник информации успевает принять и обработать данные (т.е. вопрос о готовности ВУ не возникает) или когда надо прочитать состояние датчиков, подключенных к порту ввода. В этом режиме сама программа ЦП определяет моменты ввода или вывода информации. Режим 0 может использоваться и для организации асинхронного обмена с внешним устройством, т.е. обмена по готовности ВУ. Тогда чтение сигнала «готов» и формирование строба сопровождения данных осуществляется по свободным линиям каналов БИС под управлением программы. В режимах 1 и 2 обмен БИС КР580ВВ55 с ВУ осуществляется асинхронным способом с использованием аппаратно формируемых сигналов квитирования. Информация о состоянии ВУ как приемника или сведения о поступлении данных от ВУ как источника сообщается процессору формированием сигналов прерывания. В режиме 1 обеспечивается возможность ввода и вывода информации в или из периферийного устройства через два независимых 8-разрядных канала А и В по сигналам управления (квитирования-от слова квитанция). При этом линии канала С используются для приема и выдачи сигналов управления обменом. В режиме 1 передача осуществляется только через каналы А и В, а некоторые линии канала КС используются для приема и выдачи сигналов управления обменом (сигналов квитирования). Свободные от управления обменом линии канала С можно использовать как дополнительные порты для ввода\вывода (направление передачи данных свободных линий определяется при программировании режима). Форматы управляющих слов и функциональные схемы каналов А и В при вводе данных в режиме 1 показаны на рис.10, временная диаграмма обмена на рис.11. При подаче сигнала “СТБ ПР” ( сигнал строб приема) от ВУ низкого уровня данные записываются во входной регистр соответствующего канала (рис. 10). Выходной сигнал “Подт.ПР.” (подтверждение приема для ВУ) высокого уровня свидетельствует о том, что входные данные записаны во входной регистр канала (исходное значение сигнала означает готовность к приему данных). Сигнал на выходе INT (запрос прерывания) может использоваться для прерывания работы микропроцессора и устанавливается в состояние высокого уровня, если соответствующий разряд регистра канала С, используемый как триггер разрешения формирования запроса прерывания по данному каналу, установлен в состояние высокого уровня путем индивидуальной программной установки в единицу вторым словом управления. Управляющее слово DB7 DB3 DB2 DB1 DB0 1 DB6 0 DB5 1 DB4 1 1/0 а)1 – ввод 0– б) Управляющее слово DB7 1 DB6 DB5 DB4 DB3 DB2 1 DB1 1 DB0 в) KC – 6 KC – 7 г) Рис.10. Форматы управляющих слов (а, в) и функциональные схемы ввода данных (б, г) в режиме 1. СТБ ПР (C2, C4) Из ВУ ВУВВ55 t (C1, C5) ВВ55ВУ Подт. Пр. ВВ55МП INT МП читает из ВВ55 (C0, C3) t t Рис.11. Временная диаграмма работы БИС в режиме 1 ввод. Сигнал INT свидетельствует о том, что данные для ЦП готовы, процессор может их ввести и сбрасывается в состояние низкого уровня при чтении информации из соответствующего канала в ПП обработки запроса. Для разрешения формирования сигнала INT (КА) при вводе используется разряд КС4 регистра канала С, а для сигнала INT (КВ) разряд КС2 канала С.