October 16 2017 22:57:33
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Установка флага KEYF
МОДУЛЬ ВНЕШНЕЙ МАГИСТРАЛИ

В динамическом режиме (бит MODEK = 0) срез сигнала на одном из входов KBDi устанавливает запрос на прерывание, если все другие входы KBDi в это время установлены в 1. В формировании запроса участвует только триггер TKBI. Если же в момент среза сигнала на входе KBDi любой другой вход KBDi был установлен в 0, то запрос от KBDi будет пропущен. Чтобы этого не случилось, необходимо запре­щать функцию KBI для только что обработанного входа.

В режиме статической защелки (бит MODEK = 1) срез или низкий логический уровень сигнала на входах KBD7...KBD0 устанавливает запрос на прерывание. Сигнал запроса формируется одновременно по двум каналам - триггер TKBI и элементы схемы на Рис. 3.75. Так долго как существует низкий логический уровень хотя бы на одном входе KBDi, удерживается и запрос на прерывание (KEYF = 1). Поэтому все нажатые клавиши могут быть последовательно обслужены.

Внимание! Модуль сканирования клавиатуры допускает только одновременное конфигурирована всех выбранных входов динамический либо статический режим.

Установка флага KEYF в 1 не всегда сопровождается формированием активного уровня сигнала запроса на прерывание в модуль системной интеграции SIM. Разрешает или запрещает формирование этого сигнала бит маски прерывания IMASKK.

Внимание! Глобальная маска прерывания I в регистре признаков CPU MK маскирует все прерывания, в том числе и внешние прерывания по запросу модуля сканирования клавиатуры. При сбросе МК маска I устанавливается в 0, следовательно, сразу после включения питания прерывания модуля сканирования клавиатуры будут разрешены. Однако этого не стоит опасаться, т.к. функция KBI для линий модуля при сбросе запрещена. Необходимо лишь правильно произвести инициализацию.

Если входы модуля сканирования клавиатуры настроены на динамический режим работы, запрос на прерывание сформирован (KEIF = 1) и прерывания разрешены (IMASK = 0), то переход МК на подпрограмму обработки прерывания по данному запросу вызывает автоматический сброс триггера TKBI и вслед за ним флага KEYF. Для выполнения этого действия используется селектор вектора прерывания (рис. 3.75). Триггер TKBI может быть также сброшен программно посредством записи 1 в бит подтверждения прерывания ASKK.

Если входы модуля сканирования клавиатуры настроены на статический режим работы, запрос на прерывание сформирован (KEIF = 1) и прерывания разрешены (IMASK = 0), то переход МК на подпрограмму обработки прерывания по данному запросу вызывает только сброс триггера TKBI. Флаг запроса на прерывание KEYF будет удерживаться в 1 до тех пор, пока все задействованные в модуле сканирования входы не установятся в состояние высокого логического уровня. И в этом случае триггер TKBI может быть также сброшен программно. Это полезно, если Вы временно замаскировали прерывания от клавиатуры и при их разблокировании не хотите "вспоминать предысторию", т.е. обрабатывать задержанные прерывания.

Состояние бита маски прерывания IMASKK не оказывает влияния на логику установки и сброса флага KEYF, который доступен для чтения. Это обстоятельство может быть использовано разработчиком, если в приложении необходимо фиксировать перепад сигнала из 1 в О, и время реакции на это событие не является критичным. При сбросе МК триггер TKBI устанавливается в 0 бит MODEK, определяющий статический или динамический режим приема запросов, также обнуляется. В результате цепь формирования запроса из элементов 1, 2, 3 отключается и флаг запроса на прерывание устанавливается в 0.

Модуль системной интеграции SIM генерирует всего один вектор прерывания по запросу модуля сканирования клавиатуры. Поэтому для определения, какая из клавиш вызвала прерывание, следует сконфигурировать соответствующий порт в режим ввода и в подпрограмме прерывания опросить его.

Полезный совет! Установка битов KBDi регистра INTKBIER кон-фигурирует линии соответствующего порта в режим ввода, независимо от состояния битов регистра направления передачи порта DDRx. Однако, если Вы хотите не только использовать эти линии для приема запросов на прерывание, но и читать их программно, то Вам следует записать 0 в соответствующие разряды DDRx, т. е. поставить линии в режим ввода.

Абсолютные значения векторов прерывания по запросу модуля сканирования клавиатуры для различных типов МК семейства НС08 приведены в Табл. 3.135.

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.06 секунд 2,254,088 уникальных посетителей