Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Модуль обслуживания клавиатуры KBI08



Модуль KBI08 обеспечивает формирование запроса прерывания при поступлении сигнала на определенные входы параллельных портов. Обычно эти входы используются для подключения клавиатуры, поэтому модуль KBI08 и получил такое название. В микроконтроллере MC68HC908GP32 модуль KBI08 обслуживает от 1 до 8 входов KBDi, которые подключаются к соответвующим выводам PTAi порта A.

Функционирование модуля KBI08 определяется содержимым регистра KBSCR, отдельные биты которого имеют следующее назначение (рис.29,а):

KEYF – признак внешнего запроса прерывания (доступен только для чтения), принимает значение 1 при поступлении сигнала на один из входов KBDi;

ACKK – подтверждает прием запроса прерывания (доступен только для записи), при записи 1 в этот бит производится сброс признака KEYF в состояние 0;

IMASKK – маска прерывания, при установке значения IMASKK=1 поступление сигнала на входы KBDi не вызывает прерывания текущей программы;

MODEK – определяет вид сигнала на входе KBDi, вызывающего прерывание: при MODEK=0 прерывание вызывается отрицательным перепадом потенциала, при MODEK=1 – подачей низкого уровня потенциала (логический 0).

               
        KEYF ACKK IMASKK MODEK

а). KBSCR (адрес $001A)

               
KBD7 KBD6 KBD5 KBD4 KBD3 KBD2 KBD1 KBD0

а). KBIER (адрес $001B)

Рис.29. Формат содержимого регистров KBSCR (а) и KBIER (б) модуля KBI08

Регистр KBIER разрешает формирование запроса прерывания при поступлении сигнала на вход KBDi, если соответствующий бит содержимого этого регистра (рис.29,б) установлен в 1. Если бит KBDi=0, то соответствующий вывод порта используется для персылки данных. При запуске микроконтроллера все биты регистров KBSCR, KBIER устанавливаются в 0.

При поступлении соответствующего сигнала на какой-либо из входов KBDi устанавливается значение признака KEYF=1, если для данного входа разрешено формирование запроса прерывания (бит KBDi=1). Если при этом прерывания модуля KBI08 не маскированы (бит IMASKK=0), то в программный счетчик PC производится загрузка вектора, расположеного по адресу $FFE0-E1 из таблицы векторов прерываний (см. табл.10 в разделе 5). Таким образом производится вызов подпрограммы обслуживания. Чтобы определить, какой из входных сигналов вызвал прерывание, эта подпрограмма должна перевести выводы порта в режим приема данных, считать и проанализировать их состояние. Сброс признака KEYF в состояние 0 производится автоматически при выборе вектора прерывания или выполняется программно путем установки бита ACKK в 1.

Если прерывание вызывается отрицательным уровнем потенциала (бит MODEK=1), то при поступлении такого потенциала на вход KBDi формируется запрос прерывания (признак KEYF=1), который сохраняется, пока на этом входе не установится уровень 1. При этом возможно многократное повторение программы обслуживания, если поддерживается значение бита IMSKK=0. Если процессор выполняет обслуживание запроса, поступившего ранее на другой вход модуля KBI08, то новый запрос будет обслуживаться после него.

Если прерывание вызывается отрицательным перепадом потенциала (бит MODEK=0), то при поступлении такого перепада на вход KBDi, для которого установлен бит KBDi=1, производится однократное выполнение подпрограммы обслуживания. При этом на других входах модуля KBI08 должен быть установлен уровень 1. Если хотя бы на одном из них поддерживается уровень 0, то поступивший на вход KBDi отрицательный перепад потенциала не вызовет прерывания.

В режиме ожидания и останова модуль KBI08 продолжает функционировать. Поступление сигнала на какой-либо их входов KBDi при значениях битов KBDi=1 и IMASKK=0 вызовет переход микроконтроллера в рабочий режим. Если такой переход является нежелательным, следует запретить прерывания от модуля KBI08 перед выполнением команды WAIT или STOP, установив значение бита IMASKK=1.





Дата публикования: 2014-11-02; Прочитано: 365 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...