User Tag List

Показано с 1 по 10 из 72

Тема: Вектор-06Ц: Клавиатура от PC

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #11

    Регистрация
    14.06.2005
    Адрес
    г. Калуга
    Сообщений
    10,142
    Спасибо Благодарностей отдано 
    216
    Спасибо Благодарностей получено 
    772
    Поблагодарили
    418 сообщений
    Mentioned
    23 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от tnt23 Посмотреть сообщение
    PS/2 клавиатуру прицепить к МК довольно просто - нужно 2 линии, одна для клока (желательно с поддержкой прерываний), вторая для данных. Самое сложное там будет дальше - разбирать поток сканкодов и перекодировать в нужное.

    На всякий случай ссылка: http://www.jkmicro.com/documentation...eyboard_EN.pdf
    Ну на самом деле сложности в преобразовании сканкодов тоже нет.
    Идея такова:
    1. Составляете таблицу соответсвтия образа клавиши компьютера и сканкода. Образ представляет собой закодированную комбинацию из номера линии сканирования и номера бита который сбрасывается или устананавливается в зависимости от того, как реализовано сканирование. Так например для клавиши "Z" спековского контроллера при матрицы 8x5 будет соотвествовать коду 0x1D на линии сканирования A8. Т.е. при упаковки в образ получится код 0x02, где биты
    2...0 - это номер бита(для нашего случая 1) +1
    5...3 - это номер сканирования(для нашего случая 0)
    6 и 7 служебные, в основном для реализации совместного нажатия, опятьже в спеке 6 бит будет отвечать за нажатие совместно с SymbShift, 7 совместно с CapsShift. Еще есть комбинация - оба бита установлены - это в основном реализация клавиш знаков типа запятых, т.е. когда надо нажать несколько клавиш.
    2. Анализ пришедшего сканкода и соотвествующего его табличного значения и заполнение соотвествующеми масками образов сканирующих линий. Для нашего случая 8x5 - есть 8 байтов соответсвующие 8-ми линиям сканирования, т.е. мы запишем код 0x1D в 1 байт линии сканирования.
    3. Анализ линий сканирования и установка(сброс) необходимого бита при активности сканирующей линии. После этого выдача байта на шину данных(линию отвечающую за прием данных от клавы)
    4. Как известно клавы наших компьютеров несколько отличаются от PC хотябы по русским буквам. Для удобства нужно при нажатом регистре Рус/Лат. дополнительно подменять коды клавиш, чтобы комп не заметил разницы. А именно при нажатии на PC клаве русской "С" не вылезло типа клавиши "Ц".

    Надеюсь принцип вам понятен. Между прочим по такому принципу(в общем случаее, не затрагивая конкретную реализацию) сделал Caro свою обработку клавы. Очень удобно - я тоже по такому принципу сделал (сперва идею подсмотрев у Камиля) обработку в своем Спековском клоне(ZXM-777 256кб DRAM).
    Последний раз редактировалось Mick; 07.11.2008 в 09:30.
    Сайт поддержки моих изделий - http://micklab.ru/
    Группа ВКонтакте - https://vk.com/micklab

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вектор-06Ц: Эмуляция
    от ZEman в разделе Вектор
    Ответов: 1516
    Последнее: 16.10.2025, 11:13
  2. Вектор-06Ц: Altera DE1
    от svofski в разделе Вектор
    Ответов: 800
    Последнее: 23.04.2024, 16:55
  3. Вектор-06Ц: Железо
    от svofski в разделе Вектор
    Ответов: 262
    Последнее: 27.04.2022, 07:30
  4. Вектор-06Ц
    от AlexBel в разделе Барахолка (архив)
    Ответов: 4
    Последнее: 20.12.2007, 08:23
  5. IM2, вектор прерывания
    от Jukov в разделе Программирование
    Ответов: 18
    Последнее: 20.09.2006, 09:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •