Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Матричная клавиатура (опрос через прерывание)
Матричная клавиатура
доцент2 Дата: Пн, 30.04.2018, 14:43  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 423
Репутация: 7   ±
Замечания:   ±
На сайте с 13.09.2011

Статус: Offline

Всем привет.
Подключил матричную клавиатуру 4х4 к порту B pic18f252. С помощью такого блока
VARr1 = InKey   ' Сканировать клавиатуру и присвоить код нажатой клавиши переменной VAR1
DelayMS 20       ' Bключить антидребезговую защиту на 100 мсек
KEY = LookUp VARr1,[1,2,3,"A",4,5,6,"B",7,8,9,"C","*",0,"#","D"]   ' Конвертировать содержимое VAR1
все нормально читается.
Сейчас возникла потребность получать данные о нажатии клавиш через прерывание.
Попробовал через такой блок:
RBIE = 1 'разрешено прерывание по изменению уровня сигнала на входах PORTB.4-PORTB.7

Klav_prer:
Context Save
    If RBIF =1 Then 'если произошло прерывание по PORTB.4-PORTB.7
    KEY=0      
       KEY=PORTB   
    EndIf
       RBIF =0      'сбросить Флаг внешнего прерывания по PORTB.4-PORTB.7
Context Restore     'возврат из обработчика прерывания
пока ни чего не выходит. Если выводы клавиатуры подключенные к PORTB.0-PORTB.3 повесить на массу,
то нажатие клавиш читается,но естественно только с 4-х кнопок PORTB.4-PORTB.7.
Вопрос. Возможно ли использовать прерывание для работы с матричной клавиатурой?

Добавлено (30.04.2018, 14:43)
---------------------------------------------
Прошу прощения за "панику", проблема решилась.
Context Save
    If RBIF =1 Then 'если произошло прерывание по PORTB.4-PORTB.7      
'--------------------------------------
'//////// Опрос клавиатуры ////////////
'--------------------------------------
VARr1 = InKey    ' Сканировать клавиатуру и присвоить код нажатой клавиши переменной VAR1
DelayMS 10        ' Bключить антидребезговую защиту на 100 мсек
KEY = LookUp VARr1,[1,2,3,"A",4,5,6,"B",7,8,9,"C","*",0,"#","D"]   ' Конвертировать содержимое VAR1
PORTB = %11110000   
    EndIf
       RBIF =0      'сбросить Флаг внешнего прерывания по PORTB.4-PORTB.7
Context Restore     'возврат из обработчика прерывания

Прикрепления: 2024987.png(23.1 Kb)
ЯНДЕКС Дата: 30.04.2018
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Матричная клавиатура (опрос через прерывание)
  • Страница 1 из 1
  • 1
Поиск: