![]() | |
НПО Системы Безопасности (499)340-94-73 График работы: ПН-ПТ: 10:00-19:00 СБ-ВС: выходной ![]() ![]() |
Главная » Периодика » Безопасность 0 ... 65666768697071 ... 159 jlfsc STATUS, Z jo Address ; Если равно О, то да. if ((Delay & 0x080) i= 0) ; Есть автоповтор Ijtfsc STATUS, С jjggf Variable ; Нет - декрементирование, : если больше Delay. else btfss goto xorlw btfsc gotiT movlw movwf goto endif ButtonEnd ; Конец макрокоманды endm Описание параметров этой макрокоманды приведено в табл. 8.2. Таблица 8.2 Параметры макрокоманды
ВЗАИМОДЕЙСТВИЕ С МАТРИЧНОЙ КЛАВИАТУРОЙ Клавиатура обычно строится как коммутационная матрица [матри-Чакоммутации). Матрица коммутации в данном случае двумерная, •ждый ее узел содержит кнопку (клавишу), которая коммутирует один столбец матрицы с одной из строк (рис. 8.8). Путем сканирования столбцов (поочередного соединения их «землей») и считывания кода строк можно непрерывно следить за состоянием клавиатуры. Когда ни одна из кнопок не нажата, на всех линиях строк должен ••ть высокий уровень (1). При замыкании одной из кнопок во время •Проса соответствующего столбца на линии строк вместо 1 будет 0. ) .} 77777 77777 - Строка 1 Управление столбцом О Управление столбцом 1 -Строка О В результате микроконтроллер может зафиксировать факт нажатия и определить, какая клавиша нажата. В PIC-микроконтроллерах для управления матричными клавиатурами целесообразно использовать выводы порта PORTB. Напомним, что входы этого порта снабжены внутренними резисторами, подключаемыми к напряжению нитания, а выходы портов в схемном отношении аналогичны транзисторным ключам с открытым стоком (рис. 8.9). Изначально все выводы порта следует конфигурировать как входы, причем должна быть задана «подтяжка» входов через внутренние резисторы к напряжению нитания. При опросе текуш;ий вывод переводится в режим выхода и на него выдается логический 0. Затем происходит считывание линий строк. Процесс повторяется для других столбцов. Подобным образсУМ обеспечивается сканирование всей Рис. 8.8 Матрица коммутации с управляемыми транзиаорными ключами Микроконтроллер Сенсоры строк Драйверы столбцов RBO } RBO } RBO } RBO } RBO } RBO } RBO } RBO } Рис. 8.9 Схема управления матричной клавиатурой 4x4 авиатурыи производится поиск замкнутых переключателей (нажатых клавишей). Фрагмент соответствующей программы пред ставлен ниже: int KeyScan ( ) Сканирование клавиатуры I и возврат,когда клавиша нажата. int 1 = О int key = -1 while (key == -1) { for (i = 0; (1 , 4) & ((PORTB & OxOOF) == OxOFO); i++); switch (PORTB & OxOOF) { Поиск нажатой клавиши. Строка 0. Строка 1. Строка 2.
Строка 3. ) Завершение switch. ) Завершение while (цикла), return key; } Конец функции KeyScan. Выход из функции KeyScan происходит, только когда обнаруживается нажатая клавиша. Следует отметить, что эта подпрограмма не защищает от дребезга контактов клавиши, а также не позволяет во Время своей работы выполнять другие операции. Проблемы могут быть разрешены путем использования программы сканирования в рамках программы обработки прерываний, исполнение которой инициируется с периодичностью 5 мс: Inrerrupt KeyScan ( ) Цикл сканирования клавиатуры - 5 мс. Int i = 0; int key = -1 for (1 = 0; (1 < 4) & ((PORTB & OxOOF) = = OxOOF));i++); if (PORTB & OxOOF) != OxOOF) { Клавиша нажата. 0 ... 65666768697071 ... 159 |