Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
GEK / Перечень вопросов Архитектура_2.docx
Скачиваний:
80
Добавлен:
18.05.2015
Размер:
5.89 Mб
Скачать

Структура буфера клавиатуры

Хранение информации в буфере организовано в виде очереди (FIFO - First Input First Output), буфер клавиатуры находится в оперативной памяти компьютера и доступен для обычных операций чтения и записи.

Очередь буфера клавиатуры реализована следующим образом:

Каждой нажатой клавише в очереди соответствует ячейка размером в два байта, в первом байте записан ascii код, а во втором - scan код нажатой клавиши. Следует учитывать, что при считывании слова из буфера клавиатуры scan код оказывается в старшем байте, а ascii код в младшем байте слова в соответствии с порядком следования байтов принятом для IBM PC. В двух словах оперативной памяти по адресам 0x0040:0x1A и 0x0040:0x1C хранятся смещения адресов начала (головы) и конца (хвоста) очереди буфера клавиатуры. Следует обратить внимание, что эти смещения указаны относительно адреса 0040:0000h. Сам буфер размером 32 байта (16 слов) расположен в компьютере IBM PC/XT по адресу 0000h:041Eh и организован в виде кольцевой очереди. Следует отметить, что рост буфера (клавиши нажимаются, а символы из буфера не считываются) происходит в сторону хвоста.

В компьютерах моделей IBM PC/AT и IBM PS/2 расположение клавиатурного буфера задается содержимым двух слов памяти с адресами 0000h:0480h (смещение адреса начала буфера относительно 0040h) и 0000h:0482h (смещение конца буфера относительно 0040h). Обычно эти ячейки памяти содержат значения, соответственно, 001Eh и 003Eh, что соответствует расположению клавиатурного буфера в IBM PC/AT и IBM PS/2 его расположению в IBM PC/XT.

Указателями на начало и конец клавиатурного буфера обычно управляют обработчики прерываний INT 09h и INT 16h. Программа извлекает из буфера коды нажатых клавиш, используя различные функции прерывания INT 16h.

Заметим, что вы можете удалить все символы из буфера клавиатуры, установив оба указателя на начало буфера. Однако есть более предпочтительный способ с использованием, например, прерывания BIOS INT 16h.

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

При переполнении внутреннего буфера клавиатуры или буфера, расположенного в области данных BIOS программа-обработчик прерывания INT 09h генерирует звуковой сигнал.

Кроме буфера клавиатуры и ячеек памяти с указателями головы и хвоста очереди с обработкой нажатия клавиш клавиатуры связано ещё некоторые элементов в области памяти данных BIOS. Одним из этих элементов является флаг состояния клавиатуры, располагающийся в области переменных BIOS по адресу 0000:0417h. Его размер составляет один байт, отдельные биты флага содержат информацию о состоянии клавиш Shift, Ctrl, Alt, Scroll Lock, Num Lock, Caps Lock и Ins. Соответствие перечисленных клавиш и битов флага показано на рисунке:

  1. Организация и назначение интерфейса RS-232. Используемые уровни сигналов, формат кадра при асинхронной передаче, управление потоком данных.

Стандарт RS-232C описывает несимметричные передатчики и приемники — сигнал передается относительно общего провода — схемной земли (симметричные дифференциальные сигналы используются в других интерфейсах — например, RS-422). Интерфейс не обеспечивает гальванической развязки устройств. Логической единице (состояние MARK) на входе данных (сигнал RxD) соответствует диапазон напряжения от –12 до –3 В; логическому нулю — от +3 до +12 В (состояние SPACE). Для входов управляющих сигналов состоянию ON (“включено”) соответствует диапазон от +3 до +12 В, состоянию OFF (“выключено”) — от –12 до –3 В. Диапазон от –3 до +3 В — зона нечувствительности, обусловливающая гистерезис приемника: состояние линии будет считаться измененным только после пересечения порога (рис. 3). Уровни сигналов на выходах передатчиков должны быть в диапазонах от –12 до –5 В и от +5 до +12 В. Разность потенциалов между схемными землями (SG) соединяемых устройств должна быть менее 2 В, при более высокой разности потенциалов возможно неверное восприятие сигналов.

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

Рис. 1. Уровни сигналов RS-232C

Рис. 2. Кабели подключения модемов

Рис. 3. Нуль-модемный кабель: а — минимальный, б — полный

Подмножество сигналов RS-232C, относящихся к асинхронному режиму, рассмотрим с точки зрения COM-порта PC. Для удобства будем пользоваться мнемоникой названий, принятой в описаниях COM-портов и большинства устройств (она отличается от безликих обозначений RS-232 и V.24). Назначение сигналов интерфейса приведено в табл. Нормальную последовательность управляющих сигналов для случая подключения модема к COM-порту иллюстрирует рис. 4.

Назначение сигналов интерфейса RS-232C

Сигнал

Назначение

PG

Protected Ground — защитная земля, соединяется с корпусом устройства и экраном кабеля

SG

Signal Ground — сигнальная (схемная) земля, относительно которой действуют уровни сигналов

TD

Transmit Data — последовательные данные — выход передатчика

RD

Receive Data — последовательные данные — вход приемника

RTS

Request To Send — выход запроса передачи данных: состояние “включено” уведомляет модем о наличии у терминала данных для передачи. В полудуплексном режиме используется для управления направлением — состояние “включено” служит сигналом модему на переключение в режим передачи

CTS

Clear To Send — вход разрешения терминалу передавать данные. Состояние “выключено” запрещает передачу данных. Сигнал используется для аппаратного управления потоками данных

DSR

Data Set Ready — вход сигнала готовности от аппаратуры передачи данных (модем в рабочем режиме подключен к каналу и закончил действия по согласованию с аппаратурой на противоположном конце канала)

DTR

Data Terminal Ready — выход сигнала готовности терминала к обмену данными. Состояние “включено” поддерживает коммутируемый канал в состоянии соединения

DCD

Data Carrier Detected — вход сигнала обнаружения несущей удаленного модема

RI

Ring Indicator — вход индикатора вызова (звонка). В коммутируемом канале этим сигналом модем сигнализирует о принятии вызова

Рис. 4. Последовательность управляющих сигналов интерфейса

  1. Установкой DTR компьютер указывает на желание использовать модем.

  2. Установкой DSR модем сигнализирует о своей готовности и установлении соединения.

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

  4. Сигналом CTS модем уведомляет о своей готовности к приему данных от компьютера и передаче их в линию.

  5. Снятием CTS модем сигнализирует о невозможности дальнейшего приема (например, буфер заполнен) — компьютер должен приостановить передачу данных.

  6. Сигналом CTS модем разрешает компьютеру продолжить передачу (в буфере появилось место).

  7. Снятие RTS может означать как заполнение буфера компьютера (модем должен приостановить передачу данных в компьютер), так и отсутствие данных для передачи в модем. Обычно в этом случае модем прекращает пересылку данных в компьютер.

  8. Модем подтверждает снятие RTS сбросом CTS.

  9. Компьютер повторно устанавливает RTS для возобновления передачи.

  10. Модем подтверждает готовность к этим действиям.

  11. Компьютер указывает на завершение обмена.

  12. Модем отвечает подтверждением.

  13. Компьютер снимает DTR, что обычно является сигналом на разрыв соединения (“повесить трубку”).

  14. Модем сбросом DSR сигнализирует о разрыве соединения.

Из рассмотрения этой последовательности становятся понятными соединения DTR–DSR и RTS–CTS в нуль-модемных кабелях.