Вход ps 2. Передача данных в клавиатуру

В персональных компьютерах, начиная с AT, клавиатура подключается через разъем DIN5 к специальному контроллеру (UPI-Universal Peripheral Interface ) на системной плате. В самой клавиатуре имеется микроконтроллер, который соединен последовательным каналом с микросхемой типа 8042 универсального интерфейса периферийных устройств. Данные по каналу передаются пакетами по 11 бит, из которых 8 бит отведено под собственно данные, а остальные - под синхронизирующие и управляющие сигналы. Заметим, что последовательный интерфейс клавиатуры не совместим с последовательным интерфейсом RS-232C . Микросхема UPI8042 (или другая, совместимая с ней по интерфейсу) содержит собственную оперативную память и ПЗУ. Контроллер, установленный в клавиатуре (обычно типа 8048 или 6805), при нажатии на клавишу определяет координаты замкнутого контакта в матрице и передает контроллеру типа 8042 так называемый «скан-код». В свою очередь, контроллер 8042 преобразует поступивший скан-код и направляет его в процессор. Для этой операции монопольно используется линия запроса прерываний IRQ1. Очевидно, что контроллер прерываний, обрабатывающий запросы в соответствии со статусом линии, предоставит IRQ1 приоритет по сравнению со всеми другими линиями, за исключением таймера (занимающего линию IRQ0). Именно этим объясняется, что при некоторых сбоях остается возможность перехватить управление операционной системой, даже если программа «зависла». Интерфейсы клавиатур XT и AT совпадают только по электрическим параметрам. Логический формат пакетов данных заметно различается и потому старые клавиатуры XT нельзя использовать в современных компьютерах. Интерфейс PS/2 отличается от DIN5 AT только разъемом и контроллером, установленным на системной плате. В качестве разъема применяют mini-DIN6, а контроллером является микросхема 8242В. Интерфейс PS/2 использует однополярный сигнал с уровнем +5 В. Передача данных происходит в синхронном режиме. Контроллер 8242В также используют для подключения мыши в шину PS/2 . Так как обычная мышь с последовательным интерфейсом RS-232C является асинхронной и для питания используется двуполярный сигнал, она не совместима с портом PS/2 . Попытка подсоединить мышь RS-232C через переходник к порту PS/2 может привести к выходу ее из строя. Таким образом, через переходник к разъему PS/2 можно подключать только клавиатуру, а также те мыши RS-232, которые комплектуются специальным переходником.

Порт ps/2

Схема цоколевки

Разъем для подключения клавиатуры (din)

Схема цоколевки

Названия и функциональные назначения выводов

Единичная Bluetooth -система состоит из модуля, обеспечивающего радиосвязь, и присоединенного к нему хоста, в качестве которого может выступать компьютер или любое периферийное устройство. Bluetooth-модули обычно встраивают в устройство, подключают через доступный порт либо PC-карту. Поскольку все модули с точки зрения сети физически и функционально равноценны, от природы хоста можно абстрагироваться. Модуль состоит из менеджера соединений (link manager ), контроллера соединений и приемопередатчика с антенной. Модули могут как соединяться по схеме «точка - точка», так и обеспечивать многоточечные соединения. Два связанных по радио модуля образуют пиконет (piconet ). Причем один из модулей играет роль ведущего (master), второй - ведомого (slave). В пиконете не может быть больше восьми модулей: адрес активного участника пиконета, используемый для идентификации, является трехбитным. Уникальный адрес могут иметь семь ведомых модулей (ведущий не имеет адреса ), а нулевой адрес зарезервирован для широковещательных (broadcast ) сообщений. Для объединения больше восьми устройств в спецификацию введено понятие скэттернет (scatternet, рассеянная сеть ). Скэттернет формируется из нескольких независимых пиконетов. Установить связь с модулем, подключенным к другому пиконету, может любой модуль сети, в том числе и ведущий.

Оптимальный радиус действия модуля - до 10м. Диапазон рабочих частот 2,402-2,483 ГГц. Коммуникационный канал Bluetooth имеет пиковую пропускную способность 721 Кбит/с . Для уменьшения потерь и обеспечения совместимости пиконетов частота в Bluetooth перестраивается скачкообразно (1600 скачков/с). Канал разделен на временные слоты (интервалы) длиной 625 мс (время между скачками), в каждый из них устройство может передавать информационный пакет. Для полнодуплексной передачи используется схема TDD (Time-Division Duplex , дуплексный режим с разделением времени). По четным значениям таймера начинает передавать ведущее устройство, по нечетным - ведомое.

Помимо полезных данных пакет содержит код доступа и заголовок. Имеется три вида пакетов: предназначенные только для голоса (обычно 64 Кбайт/с), только для данных и комбинированные. Для передачи разных пакетов предусмотрены два типа связей: асинхронная ACL (Asynchronous Connection-Less ) и синхронная SCO (Synchronous Connection-Oriented ). Разные пары ведущий-ведомый в пределах пиконета могут использовать различные типы связи. Более того, тип связи может по мере необходимости безо всяких ограничений меняться в течение сеанса связи.

Каждый пользователь ПК знаком с этим портом. PS/2 - интерфейс, предназначенный для для подключения клавиатуры и мыши.


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

Обычно располагается на задней стенке компьютера. Параллельное соединение применяется на расстоянии не более 5 м.

Также существует параллельный порт IEEE-1284

В настоящее время стандарт IEEE-1284 не развивается. Окончательная стандартизация параллельного порта совпала с началом внедрения интерфейса USB, который позволяет подключать также и комбинированные аппараты (сканер-принтер-копир) и обеспечивает более высокую скорость печати и надежную работу принтера. Также, альтернативой параллельному интерфейсу является сетевой интерфейс Ethernet

Не под запись: Двунаправленный порт 1 (Туре 1 parallelport) - интерфейс, введенный в PS/2. Такой порт кроме стандартного режима может работать в режиме ввода или двунаправленном режиме. Протокол обмена формируется программно, а для указания направления передачи в регистр управления порта введен специальный бит CR.5: 0 - буфер данных работает на вывод, 1 - на ввод. Не путайте этот порт, называемый также enhancedbi-directional, с ЕРР. Данный тип порта «прижился» и в обычных компьютерах, в CMOS Setup он может называться PS/2 или Bi-Di.

Порт с прямым доступом к памяти (Туре 3 DMA parallelport) применялся в PS/2 моделей 57,90,95. Был введен для повышения пропускной способности и разгрузки процессора при выводе на принтер. Программе, работающей с портом, требовалось только задать в памяти блок данных, подлежащих выводу, а затем вывод по протоколу Centronics производился без участия процессора.

Позже появились другие адаптеры LPT-портов, реализующие протокол обмена Centronicsаппаратно, - FastCentronics. Некоторые из них использовали FIFO-буфер данных - ParallelPort FIFO Mode. He будучи стандартизованными, такие порты разных производителей требовали наличия собственных специальных драйверов. Программы, использующие прямое управление регистрами стандартных портов, не могли задействовать их дополнительные возможности. Такие порты часто входили в состав мультикарт VLB. Существуют их варианты с шиной ISA, а также встроенные в системную плату.

USB (UniversalSerialBus) предназначены для подключения к компьютеру таких внешних периферийных устройств, как мышь, клавиатура, портативный жесткий диск, цифровая камера, VoIP-телефон (Skype) или принтер. Теоретически, к одному host-контроллеру USB можно подключить до 127 устройств. Максимальная скорость передачи составляет 12 Мбит/с для стандарта USB 1.1 и 480 Мбит/с для Hi-SpeedUSB 2.0. Разъемы стандартов USB 1.1 и Hi-Speed 2.0 одинаковы. Различия кроются в скорости передачи и наборе функций host-контроллера USB компьютера, да и самих USB-устройств.


Основная цель, поставленная перед разработчиками – создать возможность пользователям работать в режиме Plug-and-Play (подключение устройства к работающему компьютеру, автоматическое распознавание и последующей установки, при необходимости).

Существует несколько типов USB-разъемов.

ü Разъем "тип A": обычно присутствует у ПК.

ü Разъем "тип B": обычно находится на самом USB-устройстве (если кабель съемный).

ü Разъем мини-USB: обычно используется цифровыми видеокамерами, внешними жесткими дисками и т.д.

ü Разъем микро-USB: спецификация Micro-USB предусматривает поддержку технологии USB On-The-Go (OTG), что позволит устройствам общаться между собой напрямую без использования посредника в лице компьютера.

Мыши - COM-порт , однако мыши с разъёмом PS/2 получили популярность лишь только в начале 2000-ых) и впоследствии получил признание других производителей и широкое распространение в персональных компьютерах и серверах . Скорость передачи данных - от 80 до 300 Кб/с и зависит от производительности подключенного устройства и программного драйвера .

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

Краткое описание

Pin 4 - Питание, +5 В. Используется для подачи питания на подключаемое устройство.

Pin 3 - Земля/Корпус. Общий вывод для питания.

Pin 5 - Частотный вывод, или CLK(Clock). Включается при передаче данных мышью.

Pin 1 - Data, передаваемые данные.

Протокол работы:

Перед подачей питания на устройство контроллер порта на материнской плате «слушает» CLK. При передаче от устройства (PS/2 клавиатуры или PS/2 мыши) к компьютеру используется следующий протокол. Устройство не начинает передачу, если Clock не находился в «1» по крайней мере 50 микросекунд. Устройство передаёт последовательно:

  1. старт бит - всегда ноль;
  2. 8 бит данных;
  3. бит четности;
  4. стоп бит - всегда единица.

Устройство устанавливает/меняет сигнал Data, когда Clock находится в логической единице. Контроллер на материнской плате читает данные, когда Clock находится в логическом нуле.

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

Последовательность передаваемых бит здесь сложнее:

  1. контроллер опускает сигнал Clock в ноль на время примерно 100 микросекунд;
  2. контроллер опускает сигнал Data в ноль, формируя старт бит;
  3. контроллер отпускает сигнал Clock в логическую единицу, клавиатура фиксирует старт бит;
  4. далее клавиатура генерирует сигнал Clock, а контроллер подает передаваемые биты;
  5. после того, как контроллер передал все свои биты, включая бит четности и стоп бит, клавиатура посылает последний бит «ноль», который является подтверждением приема.

PS/2 и USB

В настоящее время подавляющее большинство изготавливаемых компьютерных мышей и клавиатур имеют разъём USB , некоторые современные материнские платы (особенно миниатюрных форм-факторов) не имеют разъёма PS/2 или имеют только один разъём. Современные ноутбуки и нетбуки не имеют внешних разъёмов PS/2, и для подключения к ним мыши или внешней клавиатуры используется USB. Старые ноутбуки чаще всего имели один универсальный разъём.

Если контроллер USB мышей и клавиатур поддерживает работу через интерфейс PS/2, то устройства (мыши и клавиатуры) можно подключить через переходник с разъёмом PS/2. Как правило, такой особенностью обладает большинство мышей и клавиатур простой и/или дешевой категории.

Интерфейс PS/2 может использоваться не только для клавиатур и мышей, но и для других устройств, например, сканеров штрих-кодов, позиционеров. Однако эти устройства в большинстве случаев эмулируют работу клавиатуры или мыши. Это позволяет избавиться от драйверов и сделать устройства платформонезависимыми.

В офисных условиях иногда предпочитают использовать клавиатуры и мыши PS/2, а не USB по соображениям безопасности : это позволяет полностью отключить порты USB и сделать невозможным подключение флешек и других потенциально опасных устройств.

Цвета разъёмов

Спецификация PC97 определяет стандартные цвета для разъёмов порта PS/2 в системном блоке и на кабелях подключаемых устройств:

До внедрения этого стандарта цвета разъёмов не оговаривались, поэтому на практике обычно использовались разъёмы чёрного цвета, а наружный корпус разъёмов на кабелях совпадал с цветом оболочки кабеля (как правило, белый или серый).

Некоторые производители изначально использовали свою систему цветового кодирования: например, клавиатуры «Logitech » имели корпус разъёма оранжевого цвета, но в дальнейшем перешли на использование стандартных цветов.

См. также

Напишите отзыв о статье "PS/2 (порт)"

Примечания

Отрывок, характеризующий PS/2 (порт)

– Мама, голубчик, – сказала Наташа, становясь на колени перед матерью и близко приставляя свое лицо к ее лицу. – Виновата, простите, никогда не буду, я вас разбудила. Меня Мавра Кузминишна послала, тут раненых привезли, офицеров, позволите? А им некуда деваться; я знаю, что вы позволите… – говорила она быстро, не переводя духа.
– Какие офицеры? Кого привезли? Ничего не понимаю, – сказала графиня.
Наташа засмеялась, графиня тоже слабо улыбалась.
– Я знала, что вы позволите… так я так и скажу. – И Наташа, поцеловав мать, встала и пошла к двери.
В зале она встретила отца, с дурными известиями возвратившегося домой.
– Досиделись мы! – с невольной досадой сказал граф. – И клуб закрыт, и полиция выходит.
– Папа, ничего, что я раненых пригласила в дом? – сказала ему Наташа.
– Разумеется, ничего, – рассеянно сказал граф. – Не в том дело, а теперь прошу, чтобы пустяками не заниматься, а помогать укладывать и ехать, ехать, ехать завтра… – И граф передал дворецкому и людям то же приказание. За обедом вернувшийся Петя рассказывал свои новости.
Он говорил, что нынче народ разбирал оружие в Кремле, что в афише Растопчина хотя и сказано, что он клич кликнет дня за два, но что уж сделано распоряжение наверное о том, чтобы завтра весь народ шел на Три Горы с оружием, и что там будет большое сражение.
Графиня с робким ужасом посматривала на веселое, разгоряченное лицо своего сына в то время, как он говорил это. Она знала, что ежели она скажет слово о том, что она просит Петю не ходить на это сражение (она знала, что он радуется этому предстоящему сражению), то он скажет что нибудь о мужчинах, о чести, об отечестве, – что нибудь такое бессмысленное, мужское, упрямое, против чего нельзя возражать, и дело будет испорчено, и поэтому, надеясь устроить так, чтобы уехать до этого и взять с собой Петю, как защитника и покровителя, она ничего не сказала Пете, а после обеда призвала графа и со слезами умоляла его увезти ее скорее, в эту же ночь, если возможно. С женской, невольной хитростью любви, она, до сих пор выказывавшая совершенное бесстрашие, говорила, что она умрет от страха, ежели не уедут нынче ночью. Она, не притворяясь, боялась теперь всего.

M me Schoss, ходившая к своей дочери, еще болоо увеличила страх графини рассказами о том, что она видела на Мясницкой улице в питейной конторе. Возвращаясь по улице, она не могла пройти домой от пьяной толпы народа, бушевавшей у конторы. Она взяла извозчика и объехала переулком домой; и извозчик рассказывал ей, что народ разбивал бочки в питейной конторе, что так велено.
После обеда все домашние Ростовых с восторженной поспешностью принялись за дело укладки вещей и приготовлений к отъезду. Старый граф, вдруг принявшись за дело, всё после обеда не переставая ходил со двора в дом и обратно, бестолково крича на торопящихся людей и еще более торопя их. Петя распоряжался на дворе. Соня не знала, что делать под влиянием противоречивых приказаний графа, и совсем терялась. Люди, крича, споря и шумя, бегали по комнатам и двору. Наташа, с свойственной ей во всем страстностью, вдруг тоже принялась за дело. Сначала вмешательство ее в дело укладывания было встречено с недоверием. От нее всё ждали шутки и не хотели слушаться ее; но она с упорством и страстностью требовала себе покорности, сердилась, чуть не плакала, что ее не слушают, и, наконец, добилась того, что в нее поверили. Первый подвиг ее, стоивший ей огромных усилий и давший ей власть, была укладка ковров. У графа в доме были дорогие gobelins и персидские ковры. Когда Наташа взялась за дело, в зале стояли два ящика открытые: один почти доверху уложенный фарфором, другой с коврами. Фарфора было еще много наставлено на столах и еще всё несли из кладовой. Надо было начинать новый, третий ящик, и за ним пошли люди.
– Соня, постой, да мы всё так уложим, – сказала Наташа.
– Нельзя, барышня, уж пробовали, – сказал буфетчнк.
– Нет, постой, пожалуйста. – И Наташа начала доставать из ящика завернутые в бумаги блюда и тарелки.
– Блюда надо сюда, в ковры, – сказала она.
– Да еще и ковры то дай бог на три ящика разложить, – сказал буфетчик.
– Да постой, пожалуйста. – И Наташа быстро, ловко начала разбирать. – Это не надо, – говорила она про киевские тарелки, – это да, это в ковры, – говорила она про саксонские блюда.
– Да оставь, Наташа; ну полно, мы уложим, – с упреком говорила Соня.
– Эх, барышня! – говорил дворецкий. Но Наташа не сдалась, выкинула все вещи и быстро начала опять укладывать, решая, что плохие домашние ковры и лишнюю посуду не надо совсем брать. Когда всё было вынуто, начали опять укладывать. И действительно, выкинув почти все дешевое, то, что не стоило брать с собой, все ценное уложили в два ящика. Не закрывалась только крышка коверного ящика. Можно было вынуть немного вещей, но Наташа хотела настоять на своем. Она укладывала, перекладывала, нажимала, заставляла буфетчика и Петю, которого она увлекла за собой в дело укладыванья, нажимать крышку и сама делала отчаянные усилия.
– Да полно, Наташа, – говорила ей Соня. – Я вижу, ты права, да вынь один верхний.
– Не хочу, – кричала Наташа, одной рукой придерживая распустившиеся волосы по потному лицу, другой надавливая ковры. – Да жми же, Петька, жми! Васильич, нажимай! – кричала она. Ковры нажались, и крышка закрылась. Наташа, хлопая в ладоши, завизжала от радости, и слезы брызнули у ней из глаз. Но это продолжалось секунду. Тотчас же она принялась за другое дело, и уже ей вполне верили, и граф не сердился, когда ему говорили, что Наталья Ильинишна отменила его приказанье, и дворовые приходили к Наташе спрашивать: увязывать или нет подводу и довольно ли она наложена? Дело спорилось благодаря распоряжениям Наташи: оставлялись ненужные вещи и укладывались самым тесным образом самые дорогие.

Клавиатура является самым распространенным устройством для ввода информации в компьютер. Поэтому важно знать принцип работы и интерфейс связи клавиатуры.

В данной статье описывается устройство, которое позволяет принимать данные от клавиатуры и отображать нажатые клавиши на устройстве вывода. В качестве примера, мы разработаем простейшее устройство с использованием клавиатуры PS/2, микроконтроллера PIC и семисегментного индикатора.

Идея проекта

Главной целью данного проекта является создание устройства, способного работать с PS/2 девайсами, а конкретно с PS/2 клавиатурой. Клавиатура будет подключена к микроконтроллеру PIC, который в свою очередь будет обрабатывать коды нажатых клавиш и выводить символы клавиш на семисегментный индикатор.

PS/2 - это последовательный интерфейс с тактовым сигналом 10-16 кГц, поэтому в PIC нам надо использовать прерывания, для детектирования заднего фронта импульсов.

Список используемых радиоэлементов

Микроконтроллер PIC18F452 (даташит)
7805 - пятивольтовый регулятор напряжения
Кварцевый резонатор 20 МГц
PS/2 коннектор (мама)
7-ми сегментный индикатор
Резисторы

Дополнительно, потребуется программатор для прошивки PIC, макетная плата и перемычки (ну или протравленная печатная плата).

Схемотехника

Как видно из принципиальной схемы ниже, устройство очень простое и основные детали это: 78L05, PIC18F452 и PS/2 разъем.

В разъеме PS/2 пины 2 и 6 не используются, 4-ый пин - питание +5В, 3-ий пин - общий. 5-ый пин - тактовый сигнал, а 1-ый пин - данные.

7-ми сегментный индикатор я использовал с общим катодом.

Немного теории о PS/2

Как уже было сказано выше, в PS/2 используется последовательный протокол передачи информации с двумя линиями: тактовый сигнал и линия данных.

Назначение выводов 6-pin Mini-DIN (PS/2):
1 - Данные
2 - Не используется
3 - Общий (земля)
4 - Питание (+5V)
5 - Тактовый сигнал
6 - Не используется

На рисунке выше показана распиновка PS/2 разъемов папа (слева) и мама (справа). Обычно, разъем типа "папа" используется на стороне устройства - мышь, клавиатура, а разъем типа "мама" на компьютере. В нашем случае (т.к. у нас приемная сторона) мы будет использовать коннектор типа "мама" (можно вырезать с какой-нибудь сгоревшей материнской платы).

На рисунке выше показана стандартная временная диаграмма выходных данных для PS/2 устройств. Последовательность следующая:
1. Вывод данных устанавливается в низкий логический уровень
2. Вывод тактового сигнала устанавливается в низкий уровень
3. Вывод данных продолжает находиться в низком уровне (стартовый бит)
4. Тактовый сигнал переходит в высокий логический уровень
5. Начинается передача восьми битов с данными
6. Далее идет бит контроля четности
7. А за ним стоповый бит

Все данные принимаются по спаду положительного синхроимпульса.

Скан-коды клавиш

Каждая клавиша клавиатуры содержит свой уникальный код, т.н. скан-код.

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

Рассмотрим пример того, как происходит формирование скан-кодов клавиш. Если на клавиатуре нажимается какая-либо клавиша, то на выходе клавиатуры появляется скан-код нажатой клавишы. Когда клавиша отжимается, то на выходе формируется код 0xF0 и скан-код отжатой клавиши. Т.о. можно определить удерживается ли клавиша нажатой или нет, но нам это пока что не нужно.

На рисунке выше приведена осциллограмма PS/2 при нажатой клавиши "J". Канал 1 (желтый) на осциллограмме это таковый сигнал. Канал 2 (голубой) это сигнал данных. Для наглядности, я нанес вспомогательные линии для детектирования спада синхросигнала.
При данной осциллограмме легко можно определить скан-код нажатой клавиши. Не забываем, что слева находится младший бит (т.е. 0), а справа старший (7 бит). Т.о. в двоичном коде получилось 0011 1011, что в шестнадцатеричном является 0x3B, т.е. это скан-код клавиши "J".

Передача данных в клавиатуру

Другой функцией PS/2 протокола является передача данных обратно в клавиатуру, к примеру можно подать команду на включение/отключение светодиода Caps Lock, Num Lock и др. Но не будем на этом зацикливаться, т.к. это тема другой статьи.

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

Программа для PIC

ПО состоит из двух основных частей: главный цикл Main Loop и обработчика прерываний.

В Main Loop происходит прием данных и их обработка для вывода на индикатор. Ну и собственно сам вывод данных.

Часть кода Main Loop:

#include #include #include #include //7-Segment Display Output #define number_0 0b01111110 .. ... .. #define letter_a 0b11101110 #define letter_b 0b11111110 .. ... .. void main(void){ TRISC = 0xFF; TRISD = 0x01; PORTB = 0x00; PORTC = 0x00; //7-Seg LED is Reverse Polarity PORTD = 0x00 ^ 0xFF; Delay10KTCYx(10); INTCON = 0b11000000; OpenCapture1(C1_EVERY_FALL_EDGE & CAPTURE_INT_ON); OpenTimer1(TIMER_INT_ON & T1_SOURCE_INT & T1_PS_1_1 & T1_16BIT_RW); WriteTimer1(0x0000); while(1) { if(buf_ready == 1){ switch(scan_code_buf){ case 0x1C: PORTD = (letter_a ^ 0xFF); break; ... .... .. break; case 0x45: PORTD = (number_0 ^ 0xFF); break; case 0x66: PORTD = (delete ^ 0xFF); break; default: break; } //Shift Buffer Forward scan_code_buf = scan_code_buf; scan_code_buf = scan_code_buf; scan_code_buf = scan_code_buf; scan_code_buf = scan_code_buf; scan_code_buf = scan_code_buf; scan_code_buf = scan_code_buf; scan_code_buf = scan_code_buf; scan_code_buf_cnt--; if(scan_code_buf_cnt == 0) buf_ready = 0; } Delay10KTCYx(1); } }

Итак, в цикле Main Loop происходит обработка данных, которые поступают в fifo-буфер. В коде, который представлен ниже, происходит прием данных PS/2 по прерыванию, после чего, они помещаются в fifo-буфер. Код 0xF0 игнорируется, нас интересуют только нажатия клавиш.

Код прерываний следующий:

Void InterruptHandlerHigh(void) // Declaration of InterruptHandler { //Check If TMR1 Interrupt Flag Is Set if(PIR1bits.CCP1IF){ if(bit_counter < 10){ current_scan_code = current_scan_code >> 1; current_scan_code += (PORTDbits.RD0*0b10000000000); bit_counter++; } else if(bit_counter == 10){ scan_code_buf=(current_scan_code>>2)&0xFF; scan_code_buf_cnt++; buf_ready = 1; bit_counter = 0; } WriteTimer1(0x0000); //Clear CCP1 Overflow Flag Bit PIR1bits.CCP1IF = 0; } //Check If CCP1 Interrupt Flag Is Set else if(PIR1bits.TMR1IF){ //Clear Timer1 Overflow Flag Bit bit_counter = 0; PIR1bits.TMR1IF = 0; } INTCONbits.GIE = 1; }

Как видно из кода выше, прерывание захвата скан кода и прерывание timer1 используются вместе, чтобы обеспечить "захват" 8-ми бит, т.к. нам не нужны стартовые, стоповые биты и бит контроля четности.

Как видно из видео выше, устройство прекрасно работает и отображает нажатые цифры и буквы. Единственное, я не стал отображать такие клавиши как W, N и т.п., т.к. на семисегментном индикаторе сделать это не реально.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
МК PIC 8-бит

PIC18F4520

1 В блокнот
Линейный регулятор

LM7805

1 В блокнот
Электролитический конденсатор 47 мкФ 1 В блокнот
Резистор

330 Ом

7 В блокнот
Кварц 20 МГц 1

Читайте также: