11693

Програмування клавіатури

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

Информатика, кибернетика и программирование

ЛАБОРАТОРНА РОБОТА №10. Тема: Програмування клавіатури. Ціль: Навчитися управляти перериваннями клавіатури. Теоретичні відомості Порти для роботи з к...

Украинкский

2013-04-10

44 KB

1 чел.

ЛАБОРАТОРНА РОБОТА №10.

Тема:  Програмування клавіатури.

Ціль:  Навчитися управляти перериваннями клавіатури. 

                                               

                                                Теоретичні відомості

 

Порти для роботи з клавіатурою

Для роботи з клавіатурою типу PC/XT використовуються порти з адресами 60h і 61h.

Порт 60h при читанні містить скан-код останньої натиснутої клавіші.

Порт 61h управляє не лише клавіатурою, але і іншими пристроями комп'ютера, наприклад, роботою вбудованого динаміка. Цей порт доступний як для читання, так і для запису. Для нас важливий самий старший біт цього порту. Якщо в старший біт порту 61h записати значення 1, клавіатура буде заблокована, якщо 0 - розблокована.

Оскільки порт 61h управляє не лише клавіатурою, при зміні утримуваного старшого біта необхідно зберегти стан інших бітів цього порту. Для цього можна спочатку виконати читання утримуваного порту в регістр, змінити стан старшого біта, потім виконати запис нового значення в порт:

         .........

               in      al, 61h

               or      al, 80h

               out     61h, al

         .........

Апаратне переривання клавіатури

Клавіатура підключена до лінії переривання IRQ1. Цій лінії відповідає переривання INT 09h.

Клавіатурне переривання обслуговується модулями BIOS. Драйвери клавіатури і резидентні програми можуть організовувати додаткову обробку переривання INT 09h. Для цього може бути використаний ланцюжок обробників переривання. У першій книзі першого тому ми наводили приклади розширення обробника переривання INT 09h.

Як працює стандартний обробник клавіатурного переривання, що входить до складу BIOS?

Цей обробник виконує наступні дії:

  •  читає з порту 60h скан-код натиснутої клавіші;
  •  записує вичислене по скан-коду значення ASCII -кода натиснутої клавіші в спеціальний буфер клавіатури, розташований в області даних BIOS;
  •  встановлює в 1 біт 7 порту 61h, дозволяючи подальшу роботу клавіатури;
  •  повертає цей біт в початковий стан;
  •  записує в порт 20h значення 20h для правильного завершення обробки апаратного переривання.

Читання символу з очікуванням

Функція 00h виконує читання коду символу з буфера клавіатури, якщо він там є. Якщо буфер клавіатури порожній, програма переводиться в стан очікування до тих пір, поки не буде натиснута яка-небудь клавіша. Скан-код і ASCII -код натиснутої клавіші передаються програмі.

Приведемо формат виклику функції :

На вході:       AH = 00h

       

На виході:      AL = ASCII -код символу або 0, якщо AH містить

                               розширений ASCII -код символу;

                               AH = скан-код або розширений ASCII -код

                               символу, якщо AL=0;

Приведемо таблицю скан-кодов для клавіатури:

----------T----------T------------T-------------T---------------¬

¦01   Esc ¦12   E    ¦23   H      ¦34   . >     ¦45   NumLock   ¦

¦02   1 ! ¦13   R    ¦24   J      ¦35   / ?     ¦46   ScrollLock¦

¦03   2 @ ¦14   T    ¦25   K      ¦36 Shft(прав)¦47   Home [7]  ¦

¦04   3 # ¦15   Y    ¦26   L      ¦37   * PrtSc ¦48   Up   [8]  ¦

¦05   4 $ ¦16   U    ¦27   ; :    ¦38   Alt     ¦49   PgUp [9]  ¦

¦06   5 % ¦17   I    ¦28   " '    ¦39   Пробел  ¦4a   K -       ¦

¦07   6 ^ ¦18   O    ¦29   ` ~    ¦3a   CapsLock¦4b   <-   [4]  ¦

¦08   7 & ¦19   P    ¦2a Shft(лев)¦3b   F1      ¦4c        [5]  ¦

¦09   8 * ¦1a   [ {  ¦2b   \ |    ¦3c   F2      ¦4d   ->   [6]  ¦

¦0a   9 ( ¦1b   ] }  ¦2c   Z      ¦3d   F3      ¦4e   K +       ¦

¦0b   0 ) ¦1c   Enter¦2d   X      ¦3e   F4      ¦4f   End  [1]  ¦

¦0c   - _ ¦1d   Ctrl ¦2e   C      ¦3f   F5      ¦50   Dn   [2]  ¦

¦0d   + = ¦1e   A    ¦2f   V      ¦40   F6      ¦51   PgDn [3]  ¦

¦0e   Bksp¦1f   S    ¦30   B      ¦41   F7      ¦52   Ins  [0]  ¦

¦0f   Tab ¦20   D    ¦31   N      ¦42   F8      ¦53   Del  [.]  ¦

¦10   Q   ¦21   F    ¦32   M      ¦43   F9      ¦               ¦

¦11   W   ¦22   G    ¦33   , <    ¦44   F10     ¦               ¦

L---------¦----------¦------------¦-------------¦----------------

Для інших клавіш функція 00h переривань INT 16h повертає розширений ASCII -код:

г--------T--------------T--------------T-------------¬

¦ F1   3b¦ Shift-F1   54¦ Ctrl-F1   5e ¦ Alt-F1   68 ¦

¦ F2   3c¦ Shift-F2   55¦ Ctrl-F2   5f ¦ Alt-F2   69 ¦

¦ F3   3d¦ Shift-F3   56¦ Ctrl-F3   60 ¦ Alt-F3   6a ¦

¦ F4   3e¦ Shift-F4   57¦ Ctrl-F4   61 ¦ Alt-F4   6b ¦

¦ F5   3f¦ Shift-F5   58¦ Ctrl-F5   62 ¦ Alt-F5   6c ¦

¦ F6   40¦ Shift-F6   59¦ Ctrl-F6   63 ¦ Alt-F6   6d ¦

¦ F7   41¦ Shift-F7   5a¦ Ctrl-F7   64 ¦ Alt-F7   6e ¦

¦ F8   42¦ Shift-F8   5b¦ Ctrl-F8   65 ¦ Alt-F8   6f ¦

¦ F9   43¦ Shift-F9   5c¦ Ctrl-F9   66 ¦ Alt-F9   70 ¦

¦ F10  44¦ Shift-F10  5d¦ Ctrl-F10  67 ¦ Alt-F10  71 ¦

L--------¦--------------¦--------------¦--------------

г----------T----------T-------------T-------------¬

¦ Alt-A  1e¦ Alt-P  19¦ Alt-3     7a¦ Down  Dn  50¦

¦ Alt-B  30¦ Alt-Q  10¦ Alt-4     7b¦ Left  <-  4b¦

¦ Alt-C  2e¦ Alt-R  13¦ Alt-5     7c¦ Right ->  4d¦

¦ Alt-D  20¦ Alt-S  1f¦ Alt-6     7d¦ Up    Up  48¦

¦ Alt-E  12¦ Alt-T  14¦ Alt-7     7e¦ End       4f¦

¦ Alt-F  21¦ Alt-U  16¦ Alt-8     7f¦ Home      47¦

¦ Alt-G  22¦ Alt-V  2f¦ Alt-9     80¦ PgDn      51¦

¦ Alt-H  23¦ Alt-W  11¦ Alt--     82¦ PgUp      49¦

¦ Alt-I  17¦ Alt-X  2d¦ Alt-=     83¦             ¦

¦ Alt-J  24¦ Alt-Y  15¦             ¦ ^Left     73¦

¦ Alt-K  25¦ Alt-Z  2c¦             ¦ ^Right    74¦

¦ Alt-L  26¦          ¦ Shift-Tab 0f¦ ^End      75¦

¦ Alt-M  32¦ Alt-0  81¦ Ins       52¦ ^Home     77¦

¦ Alt-N  31¦ Alt-1  78¦ Del       53¦ ^PgDn     76¦

¦ Alt-O  18¦ Alt-2  79¦ ^PrtSc    72¦ ^PgUp     84¦

L----------¦----------¦-------------¦--------------

                                              

Індивідуальне завдання.

  Написати власний обробник переривання клавіатури. Забезпечити прочитування символу з буфера клавіатури і видачу його ASC II - кода і скан- кода.


 

А также другие работы, которые могут Вас заинтересовать

9019. Герменевтика Ф. Шлейермахера, Х.- Г. Гадамера, В. Дильтея 35.5 KB
  Герменевтика Ф. Шлейермахера, Х.- Г. Гадамера, В. Дильтея Герменевтика - наука о понимании, изучает процессы передачи информации в познании, межсубъектные, междисциплинарные, межвременные. Герменевтика сложилась в ХХ в., ее основатель - Га...
9020. Позитивизм и этапы его развития (Б. Рассел, ранний Л. Витгенштейн) 38 KB
  Позитивизм и этапы его развития (Б. Рассел, ранний Л. Витгенштейн) Позитивизм в общем смысле - философское течение, основанное на принципе, что все подлинное, положительное (позитивное) знание может быть получено лишь как результат отдельных сп...
9021. Философия постмодернизма 35 KB
  Философия постмодернизма Постмодернизм - многозначный и динамически подвижный в зависимости от исторического, социального и национального контекста комплекс философских, научно-теоретических и эмоционально-эстетических представлений. Прежде все...
9022. Основные направления, школы и представители русской философии XIX - начала XX вв 40.5 KB
  Основные направления, школы и представители русской философии XIX - начала XX вв. П. Чаадаев первым поставил со всей остротой вопросы о роли России и русского народа в мировой истории. И его оценки были весьма неприглядны. Мы так странно движемся в...
9023. Отечественная философия XX в. (А. Лосев, Э. Ильенков, М. Мамардашвили) 36 KB
  Отечественная философия XX в. (А. Лосев, Э. Ильенков, М. Мамардашвили) Особенности русской философии состоят по крайней мере из нескольких элементов. Во-первых, это национальные идиомы, смыслы, коренящиеся в пословицах, поговорках, сказках, притчах,...
9024. Проблема бытия и различные ее трактовки в философии 44.5 KB
  Проблема бытия и различные ее трактовки в философии Онтология - учение о бытии как таковом раздел философии, изучающий фундаментальные принципы бытия, наиболее общие сущности и категории сущего. Онтология выделилась из учений о бытии тех или иных о...
9025. Философская антропология. Основные понятия и проблемы 43.5 KB
  Философская антропология. Основные понятия и проблемы Основные направления философской антропологии - принципы анализа человеческой сущности, сущность и существование человека. Сущность - внутреннее содержание объекта, выражающееся в единстве всех ф...
9026. Сознание, его генезис и структура. Сознательное и бессознательное. Философские идеи психоанализа 52 KB
  Сознание, его генезис и структура. Сознательное и бессознательное. Философские идеи психоанализа Под сознанием имеется в виду способность идеального (психического) отражения действительности, превращение объективного содержания предмета в субъективн...
9027. Познание, его виды и структура. Понимание и объяснение как парадигмы познания. Уровни научного познания 48 KB
  Познание, его виды и структура. Понимание и объяснение как парадигмы познания. Уровни научного познания Гносеология - раздел философии, в котором изучаются проблемы природы познания и его возможностей, отношения знания к реальности, исследуются...