Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Передача одного байта в канал связи

Поиск

Для передачи одного байта (символа “!” - ASCII-код 21h) в канал связи необходимо дождаться освобождения регистра THR (регистр буфера передатчика) и поместить значение передаваемое значение в этот регистр:

 


mov AH, “!”; передаваемый бит

add DX, 0005; адрес регистра LSR

OutLSR: in AL, DX; считать значение регистра LSR

test AL, 1E; одно из ошибочных

; состояний

jnz H

test AL, 01; доступность принимаемых

; значений

jnz H

test AL, 40; доступность THR

jz OutLSR

sub DX, 0005; адрес регистра THR

mov AL, AH; значение передаваемого байта

out DX, AL; записать значение регистра

;THR

nop

nop

H: int 3

 

Прием одного байта из канала связи

Для приема одного байта данных из канала связи необходимо дождаться состояния «готовность принимаемых данных» и прочитать один байт данных из регистра RBR (регистр буфера приемника):

mov CX, 08; счетчик повторений

add DX, 0005; адрес регистра LSR

InLSR: in AL, DX; прочитать значение регистра

; LSR

test AL, 1E; одно из ошибочных

; состояний

jnz A

test AL, 01; доступность принимаемых

; данных

jnz InData; да, переход

loop InLSR; нет, продолжить опрос

jmp A

InData: sub DX, 0005; адрес регистра RBR

in AL, DX; прочитать принятый символ

A: int 3

 

Использование прерываний

mov AX,0040;

mov ES,AX; определение базового адреса

mov DX,ES:[0000];

mov AH,00

mov AL,A3; формат слова:

; - 8 бит

; - 1 стоповый бит


; - без контроля четности

; - скорость 2400 бод

mov DX,0000

int 14; инициализация

 

mov CX,0FFF; число повторений

A: mov AH,01

mov AL,21; символ “!”

mov DX,0000

int 14; передача символа

loop A

int 3

 

Программа 1. Инициализации последовательного порта (длина -6 бит, без контроля четности, 2 стоповых бита и циклической передачи символа)

mov dx,3fb

mov al,05

out dx,al

mov dx,3f9

mov al,00

out dx,al

mov dx,3fd

a1: in al,dx

test al,40

jz a1

mov dx,3f8

mov al,05

a2: out dx,al

mov cx,ff

loop a2

INT 3

Программа 2. Инициализация последовательного порта COM1 (длина -6 бит, без контроля по четности, 2 стоповых бита) и циклическая передача символа, скорость передачи 2400 бод.

mov dx,3fb

mov al,85 - установка бита DLAB

out dx,al

mov al,30 - запись младшего байта делителя

mov dx,3f8

 


 

out dx,al

mov al,00 - запись старшего байта делителя

mov dx,3f9

out dx,al

mov dx,3fb - инициализация последовательного порта COM1 длина -6 бит, без контроля по четности, 2 стоповых бита

mov al,05

out dx,al

mov dx,3f9 - запрет прерываний

mov al,00

out dx,al

mov dx,3fd - чтение состояния линии

a1: in al,dx

test al,40 - регистр передатчика пуст

jz a1

mov dx,3f8 - регистр данных

mov al,05

a2: out dx,al

mov cx,ff

loop a2 - циклический вывод константы 05h

INT 3

 

 


 

 

Лабораторная работа 6

(описание)

 

7. «Программирование клавиатуры

 


ЦЕЛЬ РАБОТЫ

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

 

7.2. ТЕХНИЧЕСКИЕ СРЕДСТВА, ИСПОЛЬЗУЕМЫЕ В РАБОТЕ

В лабораторной работе используется ПЭВМ IBM PC AT 386.

 

7.3. ОПИСАНИЕ.

 

7.3.1 Клавиатура.

Клавиатура - это основное средство связи пользователя с машиной. В клавиатуре имеется микропроцеcсор (далее МП), который сканирует ее в поиске нажатых клавиш. Этот МП контролирует также свою линию связи с контроллером клавиатуры. По этой линии связи от адаптера поступают команды управления клавиатурой, а адаптеру - коды сканирования и подтверждения. Коды сканирования клавиатуры вырабатываются при нажатии и отпускании клавиши.

Для персональных компьютеров, совместимых с IBM PC, были разработаны три типа клавиатуры:

1) 83-клавишная (использовалась в PC XT). Она имеет следующие группы клавиш:

- основные клавиши (клавиатура пишущей машинки);

- функциональные клавиши (F1-F10);

- клавиши управления курсором (клавиатура калькулятора);

- клавиши состояния и сдвигов (Shift, Ctrl, Alt, Caps Lock и др.).

2) 84-клавишная (клавиатура РС АТ) отличается от РС ХТ дизайном (изменились размер и расположение некоторых клавиш). Кроме того, контроллер клавиатуры стал обладать возможностями программирования, расширенной обработки ошибок, повторяемостью клавиш.

3) 101/102-клавишная клавиатура PS/2. На ней имеется множество новых клавиш: F11, F12, правые клавиши Ctrl, Alt, вторая клавиша Enter, клавиша Pause, полностью продублированы клавиши управления курсором. Появилась возможность выбора одного из трех режимов работы (№1,2,3), устанавливаемых командой F0h. В настоящее время со всеми моделями ПК поставляется 101-клавишная клавиатура. На ПК ЕС 1840, ЕС 1841 была установлена клавиатура, функциональным аналогом которой являлась клавиатура РС ХТ. На программном уровне клавиатура РС АТ и 101-клавишная клавиатура совместимы между собой и обладают всеми возможностями клавиатуры РС ХТ.

 

7.3.2 Функционирование адаптера клавиатуры и клавиатуры.

Адаптер клавиатуры можно рассматривать с двух точек зрения: во-первых, адаптер взаимодействует непосредственно с клавиатурой, принимая от нее информацию, и может программироваться для задания режимов такого взаимодействия, а также для задания некоторых характеристик клавиатуры; во-вторых, адаптер взаимодействует с процессором, извещая его о получении информации от клавиатуры, а также принимая управляющую информацию от программы.

Адаптер клавиатуры выполняет следующие основные

 


функции:

- прием данных от клавиатуры по последовательному интерфейсу;

- проверка четности поступившего байта информации;

- трансляцию скан-кодов (кодов клавиш);

- помещения байта данных в выходной буфер и извещение процессора;

- передачу байта информации из входного буфера в клавиатуру.

 

 

Рассмотрим взаимодействие адаптера с процессором и клавиатурой.

Регистр состояния - это восьмибитовый регистр, доступный процессору только по чтению по адресу 64h.

Входной буфер представляет собой два восьмибитовых регистра. доступные по записи с адресами 60h и 64h. Причем первый из регистров используется для записи данных, а второй - для записи команд.

Выходной буфер - восьмибитовый регистр, доступный только по чтению, с адресом 60h.

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

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

Порт состояния входных линий Т0 и Т1 содержит состояние входных линий синхронизации и данных, которое может быть считано командой контроллера клавиатуры.

Управляющий байт адаптера клавиатуры управляет


режимами работы адаптера, значение байта может быть считано и записано посредством команд адаптера.

При передаче и приеме информации от клавиатуры используется последовательный интерфейс с длиной посылки 11 бит. Первым идет признак начала посылки, затем следуют восемь битов данных, далее бит четности и в конце признак конца посылки. Для синхронизации обмена информацией между адаптером и клавиатурой используется специальный генератор в клавиатуре. Из клавиатуры в выходной буфер адаптера передаются служебные коды и коды клавиш, а от адаптера через входной буфер в клавиатуру поступают управляющие команды. Каждая нажатая на клавиатуре клавиша вырабатывает свой код, который передается в адапер, причем в клавиатуре устроен аппаратный 17-байтовый FIFO буфер для сохранения кодов, предназначенных для передачи в адаптер. 16 его байтов используются для сохранения собственно кодов, а в 17-ый байт записывается признак переполнения буфера (00h), в том случае, когда по заполнению буфера нажимается очередная клавиша, а адаптер клавиатуры оказывается еще не готовым к приему информации от клавиатуры. Прием данных от клавиатуры может быть заблокирован с помощью ключа (переключатель обычно располагается на передней панели системного блока). Однако, в этом случае разрешена передача и прием команд, и только коды клавиш, получаемые от клавиатуры, игнорируются адаптером. При перемещении байта информации, полученного от клавиатуры, в выходной буфер адаптер выставляет прерывание по линии IRQ1, которое обычно обрабатывается в BIOS, как INT 09h.

Регистр состояния адаптера содержит бит, который может указывать на ошибку, возникшую при приеме байта информации из клавиатуры. Причиной ошибки может быть нарушение четности или сбой синхронизации, когда передача байта оказывается незавершенной в течении заданного времени (обычно это 2 мс). В случае любой из ошибок в выходной буфер адаптера помещается значение FFh.

Передача каждого байта из клавиатуры в адаптер должна завершиться подтверждением его приема адаптером, в противном случае клавиатура блокируется: не принимает и не передает информацию. Единственным исключением является прием байта с нарушением бита четности, в таком случае адаптер автоматически посылает в клавиатуру команду повторить передачу (Resend), а клавиатура отвечает повторной передачей информации.

Передача от адаптера клавиатуры происходит аналогичным образом. Адаптер формирует 11-битовую посылку. Аналогично приему возможны два типа ошибок: нарушение четности и нарушение синхронизации. Возникновение одной из этих ошибок отражается в регистре состояния, а в выходной буфер помещается значение FEh. Для каждого передаваемого байта ожидается подтверждение от клавиатуры о его получении. Для каждой клавиши клавиатура вырабатывает два кода: код нажатия и код отжатия клавиши. Вернее, во втором случае вырабатывается тот же код, что и при нажатии клавиши, но ему предшествует посылка шестнадцатеричного значения F0h.

Адаптер клавиатуры занимается тем, что преобразует коды, получаемые от клавиатуры, в порядковые номера клавиш, обычно называемые системными скан-кодами. При этом двухбайтовый код отжатия от клавиатуры заменяется однобайтовым значением со старшим битом, установленным в единицу.

 

7.3.3 Программирование клавиатуры.

Как после нажатия, так и после отжатия клавиши адаптер клавиатуры генерирует аппаратное прерывание IRQ1. Обработчик прерываний INT 09h читает из порта 60h байт данных и начинает обработку нажатия (отжатия) клавиши.




Поделиться:


Последнее изменение этой страницы: 2017-02-17; просмотров: 198; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.117.93.183 (0.008 с.)