КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Описание работы. Темы для предварительной проработки
Темы для предварительной проработки Цель работы Лабораторная работа 5 БУФЕР КЛАВИАТУРЫ ПЭВМ Содержание отчета Индивидуальные задания Особенности программирования 5.1. На языке Турбо-Паскаль. 5.1.1. Для чтения данных из порта и записи данных в порт ис- пользуйте предопределенный массив Port. Например, для чтения из порта 64H применяется выражение b:=Port[$64], а для записи в порт 60H - выражение Port[$60]:=b, где b - переменная типа byte. 5.2. На языке Турбо-Си. 5.2.1. Для обращения к портам ПЭВМ применяются функции чтения и записи порта,которые хранятся в библиотеке < dos.h>. Библиотека подключается директивой #include < dos.h> после чего, например, для записи значения b в порт 60H ис- пользуется выражение: outportb(0x60,b); Для чтения из порта 64H используется выражение: b=intportb(0x64); где:b- переменная типа char. 6.1. Индивидуальные задание выбрать в соответствии с таблицей 3: Таблица 3 ─────────────────────────────────────────────── Номер Период задержка Наименование в журнале автоповтора автоповтора светодиода ─────────────────────────────────────────────── 1 30.0 250 NumLock 2 26.7 750 CapsaLock 3 24.0 1000 ScrollLock 4 20.0 250 NumLock 5 2.0 750 CapsaLock 6 3.0 1000 ScrollLock 7 30.0 1000 ScrollLock 8 26.7 250 NumLock 9 24.0 250 CapsaLock 10 2.0 1000 ScrollLock 11 3.0 250 NumLock 12 4.0 750 CapsaLock 13 5.0 1000 ScrollLock 14 20.0 250 NumLock 15 30.0 750 CapsaLock 16 26.7 1000 ScrollLock ─────────────────────────────────────────────── 7.1. Тема лабораторной работы. 7.2. Цель работы. 7.3. Индивидуальное задание. 7.4. Текст программы. 7.5. Результаты работы программы.
Изучение организации буфера клавиатуры и приобретение практи- ческих навыков определения хранящихся в буфере ASCII и скан-кодов клавиш клавиатуры 2.1. Организация буфера клавиатуры. 2.2. Формирование ASCII кодов. Записанная в ПЗУ BIOS подпрограмма обработки прерывания 09H, вызванного процессором клавиатуры при нажатии (отжатии) клавиши, читает скан-код из порта 60H и, если это скан-код клавиши-переклю- чателя (правый Shift, левый Shift, Ctrl, Alt, ScrollLock, NumLock, CapsLock и Insert), то изменяется содержимое ячеек памяти 0040:0017H и 0040:0018H, хранящих состояния клавиш-переключате- лей. В буфер клавиатуры при этом ничего не пишется (исключение составляет клавиша Insert). В таблице 1 приведен формат байта по адресу 0040:0017H, а в таблице 2 - по адресу 0040:0018H.
Таблица 1 Формат байта по адресу 0040:0017H ────────────────────────────────────── Бит Значение, когда бит=1 ────────────────────────────────────── 0 нажата клавиша правый Shift 1 нажата клавиша левый Shift 2 нажата клавиша Ctrl 3 нажата клавиша Alt 4 режим ScrollLock включен 5 режим NumLock включен 6 режим CapsLock включен 7 режим вставки включен ──────────────────────────────────────── Таблица 2 Формат байта по адресу 0040:0018H. ─────────────────────────────────────────────── Бит Значение, когда бит=1 ─────────────────────────────────────────────── 0 нажаты клавиши левый Shift вместе с Ctrl 1 нажаты клавиши левый Shift вмести с Alt 2 нажата клавиша SysReq 3 нажаты клавиши Ctrl вместе с NumLock 4 режим ScrollLock включен 5 режим NumLock включен 6 режим CapsLock включен 7 режим вставки включен ─────────────────────────────────────────────── Состояния клавиш-переключателей могут быть изменены программно. Если же это скан-код клавиши, не являющейся переключателем, то в соответствии с ее скан-кодом и состоянием клавиш-переключателей формируется или однобайтный ASCII код данной клавиши, который вмес- те со скан-кодом записывается в буфер клавиатуры, или двубайтный расширенный код, первым байтом которого является 0, а второй байт в большинстве случаев совпадает со скан-кодом. Эти два байта также записываются в буфер клавиатуры. При отжатии клавиши в буфер ничего не записывается и изменяется только состояние клавиш-переключате- лей. Программа обработки прерывания 09H отслеживает также некоторые комбинации клавиш. В табл.3 приведены эти комбинации и действия, выполняемые обработчиком прерывания при их обнаружении: Таблица 3 Функции клавиш ─────────────────────────────────────────────── Комбинация клавиш Выполняемые действия ─────────────────────────────────────────────── Ctrl-Alt-Del Сброс и перегрузка системы Ctrl-NumLock Перевод машины в состояние ожидания Shift-PrtSc Распечатка на принтере содержимого экрана (обработка прерывания 05H) Ctrl-Break Завершение выполнения программы ─────────────────────────────────────────────── Структура буфера клавиатуры изображена на рис.1. Буфер клавиатуры расположен по адресам 0040:001H - 0040:003cH опера- тивной памяти и позволяет накапливать данные (ASCII и скан-коды) о 15 нажатиях клавиш (на месте, предшедствующем началу строки симво- лов в буфере хранятся ASCII код возврата каретки (ASCII 13) и скан -код клавиши "Enter"). В ячейке 0040:001aH (указатель начала) хранится адрес перво- го введенного символа, а в ячейке 0040:001cH (указатель хвоста) - адрес первой свободной ячейки после последнего введенного символа. Адреса хранятся в виде байта смещения (второй байт ячейки не ис- пользуется). Если буфер пуст, то содержимое указателя начала сов- падает с содержимым указателя хвоста. 15 0 ┌──────────────┐ 0040:003с │ │ ├──────────────┤ 3a │ │ Содержимое ячейки буфера ├──────────────┤ 38 │ │ 15 8 7 0 ├──────────────┤ ┌────────────┬────────────┐ 36 │ │ │ скан-код │ ASCII │ ├──────────────┤ └────────────┴────────────┘ 34 │ "R" │ ├──────────────┤ если ASCII код равен 0, то 32 │ "E" │ вместо скан-кода указывается ├──────────────┤ номер расширенного кода 30 │ "F" │ (в большинстве случаев сов- ├──────────────┤ падающего со скан-кодом) 2e │ "F" │ ├──────────────┤ 2c │ "U" │ ├──────────────┤ 2a │ "B" │ ├──────────────┤ 28 │ │ ├──────────────┤ 26 │ │ ├──────────────┤ 24 │ │ ├──────────────┤ 22 │ │ ├──────────────┤ 20 │ │ ├──────────────┤ 1e │ │ ├──────────────┤ 1c │ 36 │ Указатель хвоста ├──────────────┤ 0040:001a │ 2a │ Указатель начала └──────────────┘ Рис.1 Запись в буфер осуществляется по адресу указателя хвоста, при этом содержимое указателя увеличивается на 2. Чтение из буфера производится по адресу указателя начала, при этом содержимое ука- зателя также увеличивается на 2 (если указатель содержит адрес последней ячейки буфера - 3cH, то вместо увеличения на 2 в него необходимо записать адрес начала буфера - 1H).
Дата добавления: 2014-12-07; Просмотров: 367; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |