Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Подключение АТ-клавиатуры к МК. (драйвер клавиатуры)
Подключение АТ-клавиатуры к МК.
Меджикивис Дата: Пн, 12.08.2019, 23:26  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 31
Репутация: 6   ±
Замечания:   ±
На сайте с 11.04.2016

Статус: Offline

Представляю драйвер компьютерной клавиатуры для Proton Basic.

Мне хотелось, чтоб не обременять устройство его собственной клавиатурой, если она там не нужна, а предусмотреть "технический" разъем: подключил любую стандартную клаву, подредактировал нужные параметры и готово!

Драйвер был написан под такого рода задачи, и поэтому максимально усечен, чтобы уменьшить его размер.
Он позволяет принимать сканкод нажатой клавиши и управлять светодиодами клавиатуры.
Автоповтор нажатия заблокирован, так как в случае отсутствия текстового дисплея, он создал бы больше затруднений, чем удобства. Предполагался ввод простых команд типа "M184<Enter>", так что верхний/нижний регистры не требуются.
Лицензия - FREEWARE (дарю бесплатно без каких-либо условий).

Драйвер состоит из двух взаимосвязанных подпрограмм.
ATKey: подпрограмма приема сканкода нажатой клавиши. Она помещает сканкод в переменную ATScan. Работает без остановки. Если никакая клавиша нажата не была, то ATScan равна нулю.
Эта подпрограмма имеет служебную переменную atNoR. При запуске программы ей надо присвоить величину 240, это ее значение по умолчанию, и больше о ней заботиться не требуется.
Некоторые клавиши выдают двухбайтный код. От них подпрограма считывает второй байт, позволяющий их различать.
Клавиша Pause/Break генерирует три кода последовательно с одного нажатия. Решите сами, что Вы будете с ней делать; заблокируете, или что.

ATLEDS: подпрограмма управления светодиодами. Ее входом является переменная atLB, биты которой 0, 1 и 2 задают желаемое состояние светодиодов. К этим битам можно обращаться по именам SCR_LED, NUM_LED и CAPS_LED соответственно. Другие биты этой переменной трогать не следует, они всегда должны быть нулевыми. Можно приравнять atLB к нулю, чтоб погасить светодиоды все сразу.
Эта подпрограмма связана с предыдущей, поскольку во время управления светодиодами клавиатура отсылает коды подтверждения, которые приходится отслеживать. Драйвер делает это самостоятельно, пользователю не возвращает ничего.

Обе подпрограммы используют временные переменные tmp1, tmp2, tmp3. Между вызовами Вы можете пользоваться ими как хотите, но помните что любой вызов подпрограмм драйвера разрушит их содержимое. Для долговременного хранения они не годятся.

Для примера использования сделана демошная программа. Проверено с PIC16F628A, 4МГц.
Клавиатура подключается к МК двумя сигналами. KBSync, синхронизация, устанавливается как выход МК, в норме он 0, низкий уровень. KBData - вход МК.

Собственно, анализ кода делается обычным Select.

$AA - такой код клавиатура генерирует в процессе включения питания. Так как он не сопровожден кодом отпускания клавиши, это надо добавить в ручную: atNoR = 240. Впрочем, если не добавить, то всё равно всё будет работать, просто драйвер до любого нажатия клавиши будет находиться в режиме блокировки автоповтора, что ни на что не влияет, потому что код $AA появляется только однократно.
Сначала я хотел заблокировать его в драйвере, но потом подумал, что он может быть полезен для улавливания "горячего" подключения клавиатуры.

Дальнейшие строчки очевидны: 0 это нет нажатия, не выполняем ничего. Дальше кнопки CapsLock, NumLock и ScrollLock, традиционно управляющие светодиодами.

А на все остальные клавиши (Case Else) сделана индикация кода миганием светодиода NUM.
Индицируются три цифры десятичного числа, начиная со старшей, количеством вспышек: 1 - 9. Поскольку ноль в виде паузы оказался неразличим, он сделан короткой вспышкой.

Поскольку AT-клавиатура запоминает нажатия, это избавило от необходимости использовать прерывания или обращения к таймеру.
Прикрепления: AT-kbd.bas(4.7 Kb)
ЯНДЕКС Дата: 12.08.2019
Форум Picbasic.ru » Программирование МК » Proton PicBasic » Подключение АТ-клавиатуры к МК. (драйвер клавиатуры)
  • Страница 1 из 1
  • 1
Поиск: