ЭФО предлагает со своего склада новую серию преобразователей интерфейсов USB UART компании FTDI FT232RNL-REEL

Интерфейс клавиатуры АТ

Введение

Иногда необходим простой и дешевый RS-232 терминал для надлежащего контроля за компьютером или устройством на интерфейсе RS-232. Если не требуется, нет места или достаточного энергоснабжения, чтобы разместить монитор, компьютер и клавиатуру. Может быть проблема в том, что компьютер или устройство расположены где ни будь еще, и хотите взаимодействовать с ним на некотором расстоянии.

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Самый дешевый путь – приобрести готовый пользовательский интерфейс состоящий из стандартных компонентов, таких как модули ЖКИ и компьютерные клавиатуры. Стандартная компьютерная клавиатура (PS/2 типа) стоит приблизительно US-$ 12, двух строчный 40 символьный точечный матричный LCD модуль стоит около US-$ 20.

Чтобы подключить эти компоненты кабелем к последовательному порту, необходимы микроконтроллер и согласователь логических уровней RS-232. Для управления на более больших расстояниях можно соединить терминал с устройством, используя беспроводной канал физического уровня (тот же RS-232, только по беспроводному каналу).

<КАРТИНКА 1>

Возможные применения

RS-232 терминал например очень удобен в использовании с музыкальными автоматами на базе ПК, проигрывающими MP3 файлы. Вам потребуется MP3 плеер, программируемый из командной строки (или MP3 плеер с Active-X интерфейсом) и программное соединение MP3 плеера с RS-232 портом. Это программное «соединение» может быть реализовано с помощью Visual Basic и часто включаемого в большинство различных MP3 плееров под Windows, Active-X интерфейс.

Дальнейшим улучшением устройства, делающее его способным удовлетворить сегодняшние потребности в сетевых коммуникациях, будет поддержка TCP/IP с Ethernet. Тогда будет возможно управлять простыми Ethernet приборами, т.е. машиной для приготовления кофе, электрическими жалюзи, автономной сетевой газонокосилкой,… ;-) через это удаленный терминал. Встречайте новый мир…

<КАРТИНКА 2>

Концепция

Программа, приведенная ниже, не имеет поддержки ЖК дисплея. Она только осуществляет получение и декодирование скан кодов клавиатуры АТ и передачу ASCII символов клиенту по протоколу RS-232. если вам нужно подобное устройство на PIC16F84 c ЖК дисплеем, смотрите v2xx проект.

Проблема PIC16F84 в том, что в нем отсутствует аппаратная поддержка RS-232. Получение скан кодов клавиатуры, декодирование и передача по интерфейсу RS-232 происходит программно. Дополнительная возможность прима данных по RS-232 может быть осуществлена только программно – основываясь на прерываниях, но это не реализовано в этом проекте. Текущая реализация – вытесняющий, основанный на прерываниях, метод получения скан кодов.

Недавнее фото моего рабочего места, подключение PS/2 клавиатуры Microsoft к PIC16F84 КАРТИНКА Старое фото моего рабочего места, тогда разработка только начиналась
Недавнее фото моего рабочего места,
подключение PS/2 клавиатуры Microsoft к PIC16F84

Старое фото моего рабочего места,
тогда разработка только начиналась

Как это работает

Любой удар по клавише на клавиатуре вызывает посылку соответствующего скан кода с клавиатуры в микроконтроллер. В последствии микроконтроллер преобразует скан коды с клавиатуры в ASCII коды и отправляет их по протоколу RS-232.

Захват скан кодов с клавиатуры делает подпрограмма обработки прерывания. Прерывание запускается по спаду на линии такта разъема клавиатуры (PORTB, 0). Скан код считывается с линии данных, того же разъема (PORTA, 4). После 11 тактов (т.е. 11 внешних прерываний на RB0/INT), подпрограмма обработки прерывания выделит 8 битный скан код и установит флаг «Готов». Декодирование 8 битного скан кода происходит путем нормальных вычислений, запускаемых установкой флага «Готов», пока клавиатура в покое (низкий уровень линии такта).

Тот факт, что получение скан кодов осуществляется используя подпрограмму обработки прерывания, а декодирование происходит в режиме нормальных вычислений, позволяет выполнять другие задачи одновременно. Именно поэтому я назвал метод получения скан кодов вытесняющим, он не блокирует процессор в главном цикле во время получения данных с клавиатуры, таким образом, процессорные ресурсы достаются и другим задачам. Это работает так:

После получения данных, соответствующий флаг KBDflag устанавливается (в конце подпрограммы обработки прерывания) и декодированный клавиатурный символ помещается в регистр KBD. Флаг KBDflag сбрасывается в конце подпрограммы декодирования – KBDdecode.

Бесконечный главный цикл получения клавиатурного ввода (keyboard_v1xx.asm), клавиатурные данные в регистре KBD:

				;****************************** 
_MLOOP btfsc KBDflag ; проверка флага принятия скан кода 
call KBDdecode ; если установлен, вызов процедуры декодирования 
;btfsc your_other_flag 
;call your_other_service 
goto _MLOOP 
;******************************

Только передача по RS-232 протоколу поддерживается этой программой, так как прерывание PORTB, 0 занято линией такта клавиатуры. Также нет возможности осуществить прием данных по RS-232 используя мои модули m_rsxxx.asm, поскольку они требуют PORTB, 0 так же, и спланированы как не вытесняющие подпрограммы получения данных. (смотри также «Ограничения»).

Для специальной настройки кода просмотрите секцию «Настройка под требования пользователей», расположенную ниже.

Спецификация

Процессор Microchip PIC16F84
Тактовая частота 4 МГц кварцевый резонатор
Производительность 1 MIPS (миллион операций в секунду)
Скорость прередачи по RS232 9600 бод, 8 бит, нет бита четности, 1 стоп бит
Размер кода 523 слова команд
Особенности подпрограммы клавиатуры Возможность односторонней связи между контроллером и клавиатурой
Метод получения данных Получение скан кодов – вытесняющим методом, на основе прерываний,
декодирование в ASCII коды путем нормальных вычислений, активируемых флагом «Готов»
Аппаратные требования Клавиатура АТ, PS/2 разъем, МАХ232
Программные Требования Программа терминала RS-232 (или отладочный интерфейс RS-232 от Excel 97)

Особенности

  • Односторонняя связь между микроконтроллером и удаленным RS232 клиентом.
  • Односторонняя связь между микроконтроллером и клавиатурой
  • Поддержка всех клавиатурных символов, напечатанных с активной или неактивной кнопкой shift.
  • Доступны Английская и модифицированная Щвейцарско-Германская «кодовые страницы» (QWERTY и QWERTZ).
  • Возможность осуществить горячие клавиши или определенные пользователем символы для клавиш 'Esc', 'Num Lock', 'Scroll Lock' и 'F1' - 'F12'.
  • Дальнейшее усовершенствование (не осуществлено): поддержка ASCII преобразования из прямых ALT-Десятичных и CTRL-Шестнадцатеричных кодов, т.е. ALT + 6 + 4 = @ или CTRL + 3 + F = ?.

Чтобы продемонстрировать визуально посылку данных микроконтроллером используйте терминальную программу подобную Windows Hyperterminal. Ниже приведен пример сессии, показывающий корректную функциональность клавиатурного интерфейса. Во время отладки устройства использовалась эта терминальная программа и Отладочный_интерфейс_RS232 Excel 97.



Пример сессии с использованием hyperTerminal. Все содержимое было послано микроконтроллером.

Ограничения

В случае если вы хотите одновременно принимать данные по RS-232 и одновременно декодировать коды клавиатуры на одном PIC 16X84, вам потребуется сконфигурировать линию такта клавиатуры или линию приема данных RS-232 (ранее обе были настроены на прерывание PORTB, 0) на другой, отдельный источник прерываний (т.е. PORTB, 4 - PORTB, 7) и переделать подпрограмму получения данных по RS-232 так, чтобы она работала в вытесняющем режиме. Помните, что после помещения в микроконтроллер 16X84 всего терминального ПО в нем останется не так уж много места для дальнейших усовершенствований.

Обходным маневром позволяющим получить прием данных по RS-232 в контроллере PIC16X84 используя это ПО должно быть решение на основе опроса. Но имейте ввиду что ваш механизм опроса должен быть достаточно быстрым даже для наихудшего случая.

Важное замечание от Jason Plumb

«Эй,

Во первых, дайте мне сказать, что мне нравится ваш сайт и спасибо вам за то, что вы предоставили отличный материал для нас, людей увлеченных домашним хобби с микроконтроллерами. В настоящее время я работаю над музыкальным проектом, в котором использую клавиатурный интерфейс PS/2 с микроконтроллером PIC16F84, и я интенсивно использовал вашу страничку по адресу http://www.electronic-engineering.ch/microchip/projects/keyboard/v1xx/keyboard_v1xx.html когда разрабатывал аппаратную часть и писал код. В любом случае я должен упомянуть о том, как я столкнулся с проблемой, которую потом решил. Проблема связана с посылкой байта к клавиатуре с PIC контроллера (чтобы зажечь индикаторы NumLock и ScrollLock). В секции «Протокол взаимодействия компьютера с клавиатурой» вашей статьи сказано, что клавиатура выставляет на линии данных низкий уровень на один такт после посылки байта, для того, чтобы создать бит ACK. Клавиатура, которую использовал я (generic PS/2 за 10$) не посылала ACK бит, но вместо этого посылала целый байт. Если мой код будет ожидать бит ACK, он повиснет навсегда. Я изменил механизм ожидания так, чтобы он ждал байт (вызывая уже имеющуюся функцию) и все заработало. На эту идею меня натолкнул просмотр других сетевых документов (особенно код некоторых ядер Linux http://www.mscs.mu.edu/~georgec/Classes/207.1998/14Minix_book/S/src%20kernel%20keyboard.c.html#307). Также я видел упоминание об ACK байте в других источниках. Я думаю, что клавиатура посылает байт 0xFA как ACK байт, но лично я не находил этому подтверждения. Возможно, ваша отличная документация должна иметь поясняющую заметку, чтобы другие не столкнулись с той же проблемой. Может, что ни будь наподобие: «Примечание: Некоторые клавиатуры посылают ACK байт (значением 0xFA) вместо ACK бита».

Спасибо еще раз,

Jason»

Замечание автора:

Вышеприведенный комментарий касается двунаправленной связи между PIC микроконтроллером и клавиатурой, т. е. для исходного кода проекта Интерфейс клавиатуры АТ V2.xx и более старших версий. Двунаправленная связь между компьютером и клавиатурой разработана с поддержкой и ACK бита, и ACK байта.

  • Каждая команда посланная от компьютера к клавиатуре требует бит четности и ACK бит в конце.
  • Каждая команда, принятая клавиатурой от компьютера должна быть подтверждена клавиатурой путем посылки ACK байта (0xFA) компьютеру. Смотрите также секцию «Протокол взаимодействия компьютера с клавиатурой».

Соответствующий пример ассемблерного кода для PIC приведен ниже:

				;*** включение клавиатурных светодиодов (состояние по умолчанию) *** 
KBDcmd 0xED ; команда управления клавиатурными светодиодами 
KBDexp 0xFA ; ожидание подтверждения клавиатуры (FA) 
movfw KBDleds ; загрузка состояния клавиатурных светодиодов 
KBDcmdw ; посылка данных, управляющих светодиодами 
KBDexp 0xFA ; ожидание подтверждения клавиатуры (FA) 

Однако, некоторые клавиатуры АТ могут вести себя по другому и может потребоваться перенастройка кода для правильной работы двунаправленной связи.

Теория клавиатуры АТ

Полностью функциональное описание и временные диаграммы клавиатуры АТ доступны на web сайте Craig Peacock. Обращайтесь на его web сайт связь_с_клавиатурой_PC чтобы получить отличное и всеобъемлющее описание всех особенностей и команд клавиатуры АТ. Здесь я хотел бы поблагодарить Craig Peacock за его незаконченную работу над его web сайтом.

Ниже я представил только упрощенную структуру наиболее важных технических аспектов взаимодействия клавиатуры с компьютером. Небольшие части представленного ниже материала частично копированы из описания от Craig Peacock.

Скан коды клавиатуры

Диаграмма ниже показывает скан коды, назначенные клавишам для английской раскладки клавиатуры. Соответствующие клавишам скан коды это номера на кнопках, например скан код клавиши ESC - 0x76. все скан коды представлены в шестнадцатеричной системе исчисления.

<КАРТИНКА с кнопками>

Назначение скан кодов совершенно случайное (спасибо IBM и другим ранним производителям компьютеров) и иногда они попадаются в виде последовательности, например клавиша break. Во многих случаях простейший путь преобразования скан кодов в ASCII символы – использование таблицы. Ниже представлены скан коды расширенной части клавиатуры и дополнительной цифровой клавиатуры.

Цитирую Craig Peacock: «Как насчет E1,14,77,E1,F0,14,F0,77! Это не может быть допустимым скан кодом? Снова неправильно. Эта последовательность посылается когда вы нажимаете кнопку pause/break. Не спрашивайте меня почему они сделали ее такой длинной! Возможно у них бал плохой день или что нибудь еще?»

Путь АТ основан на продвинутой технологии (Advanced Technology – АТ)…

<КАРТИНКА с кнопками (дополнительными)>

Клавиатура АТ посылает разные скан коды при нажатии, удержании и отпускании клавиши. Пример приведен в таблице ниже.

 

 

Скан код при нажатии и удержании

Скан код при отпускании

Нормальный скан код

73

F0 73

Расширенный скан код

E0 4A

E0 F0 4A

Все скан коды могут быть легко представлены визуально и проверены при помощи Подпрограммы_отладки_скан_кодов_клавиатуры_АТ и RS232 Отладочного_интерфейса.

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

Передача данных реализована как двунаправленный протокол: клавиатура может послать данные компьютеру (микроконтроллеру) и компьютер может послать команды и данные клавиатуре. Компьютер имеет максимальный приоритет в выборе направления. Он может в любой момент (хотя это не рекомендуется) послать команду клавиатуре.

Клавиатура свободно может посылать данные компьютеру когда оба сигнала и данных, и такта находятся в состоянии высокого уровня (ожидание). Тактовый сигнал генерируется клавиатурой, но компьютер также может использовать его как сигнал «линия свободна для посылки»: если компьютер выставляет низкий уровень на линии такта, клавиатура отправляет свои данные в буфер до тех пор, пока линия такта не освободится, т. е. станет высокой. В случае если компьютер также устанавливает линию данных клавиатуры в низкий уровень, тогда клавиатура приготовится к приему команды от компьютера.

Передача данных в прямом направлении, т.е. от клавиатуры к компьютеру, происходит кадрами по 11 бит. Первый бит это стартовый бит (логический 0), за ним следуют 8 бит данных (младший бит первый), один бит четности и стоп бит (логическая 1). Каждый бит считывается по спаду уровня на линии такта.

<КАРТИНКА с диаграммами, синими линиями>

Протокол взаимодействия клавиатуры с компьютером, с битом четности.

Команды клавиатуры

Как только команда компьютера будет послана клавиатуре, команды клавиатуры будут посланы компьютеру. Если вы думаете так, вы не ошибаетесь. Ниже представлено детальное описание некоторых команд, которые клавиатура может послать.

 

FA

Подтверждение

AA

Тест (самодиагностика) при включении пройдет

EE

Смотрите команду эхо (Команды компьютера)

FE

Послать повторно – после приема этой команды компьютер должен повторно передать последний посланный байт

00

Ошибка или переполнение буфера

FF

Ошибка или переполнение буфера

Протокол взаимодействия компьютера с клавиатурой

Взаимодействие компьютера с клавиатурой инициируется установкой низкого уровня на линии данных разъема клавиатуры. Однако, что бы предотвратить попытку клавиатуры послать данные в тот же самый момент, следует установить низкий уровень на линии такта клавиатуры более чем на 60 мкс. Это более чем 1 бит по длине. Тогда линия данных клавиатуры останется в низком уровне, в то время как линия такта освободится. Клавиатура начнет генерировать тактовый сигнал на линии такта. Этот процесс может занимать до 10 мс. После того, как первый спад на линии такта будет зафиксирован, вы должны выставить первый бит данных на линии данных. Этот бит будет прочитан клавиатурой при следующем спаде такового сигнала, после чего вы можете поместить следующий бит данных. Этот процесс повторяется для 8 бит данных. После бит данных идет бит четности.

<КАРТИНКА синим и красным>

Протокол взаимодействия компьютера с клавиатурой АТ, с битом четности и подтверждением.

Бит четности = NOT(XOR(bits[0..7]))

После того, как бит четности послан, и линия данных клавиатуры находится в состоянии ожидания (высокий уровень) на один тактовый цикл, клавиатура подтвердит прием данных. Она сделает это путем установки линии данных в низкий уровень на следующий период тактового сигнала. Если линия данных клавиатуры не будет в состоянии ожидания после 10го бита (стартовый, 8 бит данных, бит четности), клавиатура будет продолжать посылать тактовый сигнал до тех пор, пока линия данных не перейдет в состояние ожидания (смотрите также Ограничения).

Команды компьютера

Эти команды посылаются компьютером клавиатуре. Наиболее общие команды – команды установки/сброса индикаторов состояния (т.е. светодиоды Num lock, Caps Lock и Scroll Lock). Более общие и нужные команды представлены ниже:

 

ED

Установить светодиоды состояния – Эта команда используется для установки состояния светодиодов Num Lock, Caps Lock и Scroll Lock. После посылки ED, клавиатура ответит ACK (FA) и будет ожидать следующего байта, который и будет определять состояние светодиодов. Бит 0 управляет Scroll Lock, бит 1 управляет Num Lock и бит 2 - Caps lock. Биты с 3 по 7 игнорируются.

EE

Эхо – после посылки этой команды, клавиатура должна ответить эхом (EE).

F0

Установка набора скан кодов. После посылки F0, клавиатура отвечает байтом ACK (FA) и ждет следующего байта, 01-03 который определяет используемые скан коды. Посылка 00 вторым байтом вернет текущий набор скан кодов.

F3

Установка интенсивности повторов при удержании клавиши. Клавиатура ответит на команду байтом FA и будет ждать второго байта, который определяет интенсивность повторов.

F4

Разрешить клавиатуру – очищает выходной буфер клавиатуры, разрешает сканирование клавиш и возвращает подтверждение.

F5

Запретить клавиатуру – сбрасывает клавиатуру, запрещает сканирование клавиш и возвращает подтверждение.

FE

Послать повторно – приняв эту команду клавиатура повторно передаст последний переданный байт.

FF

Сброс – сброс клавиатуры.

Обращайтесь на web сайт Craig Peacock за дополнительной информацией: связь_с_клавиатурой_PC.

Ресурсы проекта

Доступный ассемблерный код для PIC

 

Главный файл

Основная клавиатурная таблица декодирования

Основная клавиатурная таблица декодирования с SHIFT

HEX файлы

Последняя версия:
kbd_1xx.asm

Английская кодовая страница (QWERTY)
Просмотр: eng_main.html
Загрузка: eng_main.asm

Английская кодовая страница (QWERTY)
Просмотр: eng_shif.html
Загрузка: eng_shif.asm

QWERTY кодовая страница:
kbd_104_eng.hex

QWERTZ кодовая страница:
kbd_104_sg.hex

Модифицированная Швейцарско Германская кодовая страница (QWERTZ)
View: ger_main.html
Download: ger_main.asm

Модифицированная Швейцарско Германская кодовая страница (QWERTZ)
View: ger_shif.html
Download: ger_shif.asm

Вышеперечисленным программам требуются дополнительные подключаемые файлы (модули) для успешной компиляции: m_bank.asm, m_wait.asm, m_rs096.asm

Для тех, кто не знаком с подключением PIC к RS232 используя MAX232: RS232-Интерфэйс.pdf (9.7 kB)

Схемы, описания чипов, распиновка

Спецификация_клавиатуры_АТ (PDF, 189 kB)

Схема интерфейса клавиатуры АТ используя PIC 16F84: Keyboard_V1xx.pdf.

Вы не знаете как точечно матричный LCD дисплей работает? Взгланите на мою data sheets page.

Загрузит карту символов ASCII: ASCII-Map.pdf

Получить описание контактов различных разъемов клавиатур вы можете здесь: .

Настройка под требования пользователей / FAQ

Эта секция покрывает важные детали структуры кода. Чтобы иметь представление о том, как это работает на высоком уровне, обратитесь к секции «Как это работает» выше. Я написал этот клавиатурный проект таким, что он полностью настраиваемый в зависимости от вашего опыта программирования для PIC на ассемблере.

Как я могу использовать ввод с клавиатуры АТ?

Вопрос: Я использую ваш код для клавиатуры АТ. Но как я могу использовать декодированный ввод с клавиатуры…?

Ответ: Декодированное содержимое находится обычно в регистре KBD. Вы можете использовать это содержимое в основной программа в бесконечном цикле. Пожалуйста просмотрите секцию «Как это работает» выше.

Как точно работает декодирование скан кодов клавиш?

Вопрос: Как точно работает ваше декодирование скан кодов? Вы используете две странные таблицы преобразования…

Ответ: Взгляните на некоторые части «Таблицы преобразования клавиатуры АТ», т.е. eng_main.asm (QWERTY):

Простое декодирование с использованием таблиц выполнено с помощью retlw x и DT x. Эти директивы просто возвращают соответствующий символ ASCII. Более сложное декодирование выполняют подпрограммы, т.е. goto _XYZ. Это означает, например, что для нажатия клавиши ENTER/RETURN на клавиатуре, будет выполняться подпрограмма _CRLF (возврат каретки, перевод строки) и для кнопок ALT, CTRL, SHIFT и CAPS_LOCK соответствующие флаги будут установлены соответствующими подпрограммами.

 

goto _ALT

; ALT (установка/сброс ALT флаг)

goto _SHIFT

; SHIFT (установка/сброс SHIFT флаг)

retlw 0

;

goto _CTRL

; CTRL (установка/сброс CTRL флаг)

DT "q1"

; DT: MPASM директива создания таблицы (retlw x)

goto _CRLF

; CR, LF 0x5A

Поскольку клавиатура посылает слегка отличающиеся скан коды при нажатии и отпускании клавиши требуется обрабатывать также и отпускание клавиши. Это реализовано с помощью так называемого флага отпускания (RELflag). Так для каждого нажатия отдельной клавиши процедура обработки прерывания запускается дважды (для разных скан кодов при нажатии и отпускании) и подпрограмма декодирования скан кодов запускается дважды.

 

#define RELflag FLAGreg,0x00

; флаг отпускания(0xF0)

#define SHIflag FLAGreg,0x01

; shift флаг (0x12 / 0x59)

#define SPEflag FLAGreg,0x02

; флаг специального кода (0xE0)

#define CAPflag FLAGreg,0x03

; caps lock флаг (0x0D)

#define ALTflag FLAGreg,0x04

; ALT флаг (0x11)

#define CTRLflag FLAGreg,0x05

; CTRL флаг (0x14)

#define KBDflag FLAGreg,0x06

; флаг приема данных клавиатуры

В ассемблерном коде имеются 4 основных блока:

  1. Получение скан кодов с клавиатуры с помощью прерываний
  2. Предварительное декодирование скан кодов, установка/сброс флагов
  3. Проверка диапазона скан кодов (проверка целостности)
  4. Декодирование скан кодов (с использованием таблиц) и преобразование и вывод символов ASCII (LCD, RS232)

Чтобы сберечь место под код в памяти контроллера я осуществил 2 таблицы декодирования (главную и для нажатой SHIFT) как показано ниже:

  • Маленькие буквы (a-z) преобразуются с помощью главной таблицы преобразования, заглавные буквы (A-Z) получаются путем простого добавления десятичного числа 224 (без знакового 8 бит) к результату полученному из главной таблицы преобразования для маленьких символов. Состояние кнопки shift клавиатуры отслеживается только по флагу shift.
  • Таблица для нажатой SHIFT используется для преобразования специальных символов, т. е. +, %, &, (, ), ?
  • Сжатие применяется к секциям таблицы, где скан коды сильно отдалены от остальных, т.е. дополнительная часть клавиатуры с цифровым блоком.

Если вы примените изменения к существующему коду, вам потребуется изменить директивы ORG для того, чтобы повторно выровнять ассемблерный код правильно, для отличающихся таблиц преобразования и границ страницы PIC контроллера.

Моя собственная настройка клавиш

Вопрос: Я собрал ваше устройство и оно работает очень хорошо. Сейчас я хочу настроить свое устройство так, чтобы печатать определенную фразу, например 'Hello World', каждый раз, когда я нажимаю определенную клавишу...?

Ответ: Это не такая уж сложная задача, если вы будете использовать всего одну определенную клавишу, например F9. (Для последовательностей, подобных 'asdf', вы должны написать свою подпрограмму детектирования для главного цикла путем проверки значений в регистре KBD.) Во первых взгляните на таблицы преобразования, например eng_main.asm (QWERTY)

Перевод: [IMG]/i/Image/wand.gif[/IMG] по заказу РадиоЛоцман

На английском языке: AT Keyboard Interface V1.04

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя