Главная страница
Навигация по странице:

  • Выполнение работы

  • Алфавитно-цифровые.

  • Функциональные.

  • Клавиши управления и индикации

  • Лабораторная работа 2. Лабораторная работа 2 Драйвер клавиатуры по дисциплине Эксплуатация и развитие компьютерных сетей и систем


    Скачать 179 Kb.
    НазваниеЛабораторная работа 2 Драйвер клавиатуры по дисциплине Эксплуатация и развитие компьютерных сетей и систем
    Дата23.10.2022
    Размер179 Kb.
    Формат файлаdoc
    Имя файлаЛабораторная работа 2.doc
    ТипЛабораторная работа
    #749568


    Министерство образования и науки Российской Федерации

    ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ

    СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

    Кафедра промышленной электроники (ПрЭ)

    Лабораторная работа № 2 «Драйвер клавиатуры»

    по дисциплине

    Эксплуатация и развитие компьютерных сетей и систем.


    Выполнил:

    Студент ФДО
    Специальность: 210106
    « » 2013г.
    Проверил:


    2013

    Введение
    Целью работы: изучение и реализация принципов работы драйвера клавиатуры. Требуется написать и отладить драйвер клавиатуры с помощью имитатора прикладной программы.
    Выполнение работы
    По своему назначению клавиши на клавиатуре делятся на шесть групп:

    • функциональные клавиши;

    • алфавитно-цифровые;

    • клавиши управления и индикации;

    • цифровая панель;

    • специализированные;

    • клавиши управления курсором.


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

    Алфавитно-цифровые. К алфавитно-цифровому блоку относятся клавиши для ввода букв, цифр, знаков пунктуации и арифметических действий, специальных символов (буквы от a до z, цифры от 0 до 9, символы %, $, # и т.д.).

    При программировании этих клавиш обычно применяется прерывание INT21H. Так же можно применить прерывание INT16H и определять клавишу по так называемому СКЭН-КОДУ.

    Суть разработанной нами программы: пользователю выдается сообщение нажать любую клавишу. Если нажата «o», то выдается сообщение, что нажата клавиша «o», в противном случае выдается сообщение о том, что нажата клавиша НЕ «o».

    Функциональные. Расположены обычно на верхней части клавиатуры — от F1  до  F12 . Функции этих клавиш определяются программой и операционной системой, с которой пользователь работает в данный момент.

    При программировании этих клавиш в программе используются так называемые СКЭН-КОДЫ для определения, какая именно клавиша нажата. Так же используется прерывание INT16H.

    Суть нашей программы: при нажатии функциональной клавиши на экране печатается название функциональной кнопки.

    Клавиши управления и индикации. Для управления и индикаци чаще всего используется клавиши Alt, Ctrl, SHift, NUM Lock и др.

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

    Листинг 1- Драйвер алфавитно-цифровых клавиш
    Program INT21H;

    uses CRT;

    VAR flag: byte;

    Begin

    ClrScr;

    Writeln('Programm INT21H');

    Writeln('Press Any Key');

    flag:=0;

    ASM {Начало ассемблерного блока}

    {Ожидание нажатой клавиши}

    MOV aH,01H {Ввод символа с клавиатуры с эхом}

    INT 21H {Прерывание}

    CMP AL,'o' {Если символ латинская буква "o"}

    JNE @NEXT

    MOV flag,1 {То выставляем флаг}

    JMP @END

    @NEXT:

    MOV flag, 0 {Иначе обнуляем флаг}

    @END:

    END;

    writeln;

    if (flag = 1) tHen writeln('You pusHed "o"') else

    writeln('You pusHed NOT "o"');

    readln;

    END.


    Рис.1 – Выполнение программы INT21H

    Листинг 2 - Драйвер функциональных клавиш
    Program Functional;

    uses CRT;

    var i: byte;

    Begin

    clrscr;

    writeln('PusH any functional key.');
    ASM

    MOV AH,00 {Запрос на чтение символа}

    INT 16H

    MOV i,AH {Запомним результат}

    END;
    case i of {Если число диапазоне СКЭН-кодов функциональных клавиш, то}

    $3B..$44 : writeln('You pusHed key F',i-$3a);

    else writeln('You pusHed not functional key!');

    END;

    readln;

    END.





    Рис.2 – Выполнение программы Functional

    Листинг 3 - Драйвер клавиш управления и индикации
    Program Indication;

    uses crt;

    var x,i:byte;

    key:array[0..7] of byte; {Массив клавиш}

    Begin

    clrscr;

    ASM

    MOV aH,02 {запрос на определение текущего состояния регистра клавиатуры}

    INT 16H {По прерыванию 16HРР}

    MOV x,AL {Запомним результатРР}

    END;

    for i:=0 to 7 do {Выделяем каждый бит в массив keyРР}

    begin

    key[i]:= x mod 2;

    x:= x div 2;

    END;
    if key[0]=1 tHen write('RigHt SHift',';');

    if key[1]=1 tHen write('Left SHift','; ');

    if key[2]=1 tHen write('Ctrl/SHift','; ');

    if key[3]=1 tHen write('Alt/SHift','; ');

    if key[4]=1 tHen write('Scroll Lock','; ');

    if key[5]=1 tHen write('Num Lock','; ');

    if key[6]=1 tHen write('Caps Lock','; ');

    if key[7]=1 tHen write('Ins','. ');

    writeln;

    readln;

    END.


    Рис.3 – Выполнение программы Indication
    Заключение

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


    написать администратору сайта