User Tag List

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

Тема: Схема и прошивка контроллера AT PC-Keyb на AT90S2313 Камиля Каримова

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

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

    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,726
    Спасибо Благодарностей отдано 
    19
    Спасибо Благодарностей получено 
    148
    Поблагодарили
    91 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от ILoveSpeccy Посмотреть сообщение
    * если одновременно нажато 2 или более кнопки, каким образом это проще распознать?
    Судя по описаниям контроллеров клавиатур (я имею ввиду встроенных в клавиатуры),
    они допускают обработку не более 6 одновременно нажатых клавиш.
    Поэтому в памяти внешнего контроллера организуется буфер на 6 скан-кодов.
    Каждая нажатая клавиша вызывает выдачу в интерфейс своего скан-кода (некоторые больше одного).
    Даже если нажато одновременно несколько клавиш, их скан-коды будут выданы в линию один за другим,
    в порядке опроса матрицы клавиатуры встроенным контроллером.
    Принятые скан-коды помещаются в буфер внешнего контроллера.
    При отпускании клавиши, в начале выдается служебный байт (0xF0) - признак отпускания, затем сам скан-код этой клавиши.
    При этом из буфера удаляется код отпущенной клавиши.

    Цитата Сообщение от ILoveSpeccy Посмотреть сообщение
    * что делать с автоповтором, который в РС-клавиатуре? Как он работает? Просто передает несколько раз код нажатия клавиши и только при отпускании передает код, что кнопка отпущена?
    При удержании клавиши начинается цикл автоповтора, при котором в линию передается один и тот же код нажатой клавиши.
    Принятый код надо просто сравнить с тем что уже лежит в буфере, и при совпадении просто игнорировать.
    Есть правда еще один вариант и лично я им пользуюсь.
    Надо переключить клавиатуру в режим scan code 3, при котором каждой нажатой клавише соответсвует один уникальный скан-код, а также установить режим работы Make/Break запрещающий автоповтор кода:
    Код:
    	ldi	data,0xf0	;Select Alt_Scan
    	rcall	trans_ack	;передать
    	ldi	data,0x03	;Alt_Scan = 3
    	rcall	trans_ack	;передать
    ;
    	ldi	data,0xf8	;Select All Make/Break
    	rcall	trans_ack	;передать
    Последний раз редактировалось caro; 07.06.2007 в 08:54.

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

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

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

Ваши права

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