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 - кода і скан- кода.


 

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

61634. Вычитание в пределах 20 с переходом. Случаи (11-6-15-6-11-5-14-5) 20.03 KB
  Проверка домашнего задания.2 Выполнение задания на доске. Сперва пока они шли по тропинке на краю Дремучего Леса оба молчали; но когда они дошли до речки и стали помогать друг другу перебираться по камушкам им пришлось решить еще два задания.
61636. Музыкальные инструменты 28.51 KB
  Задачи урока: Образовательные: Научить ребят эмоционально осознанно целостно образно воспринимать выразительные возможности особенности тембровой окраски фортепиано: мир счастливого детства в интонациях темах и образах детских пьес...
61637. Диез. Бемоль. Бекар 17.08 KB
  Цель: Продолжить знакомство детей с музыкальной грамотой закрепить знания о знаках альтерации: диез бемоль бекар; Продолжить формировать умение внимательно слушать музыку рассказывать о содержании музыкального произведения...
61638. Темп как средство выразительности музыки 25.87 KB
  Цель: познакомить с таким средством музыкальной выразительности как темп. Задачи: Воспитывающая: на основе эмоционального восприятия музыки П.И. Чайковского «Неаполитанский танец», русский народный хороводная...
61639. Types of personalities 24.03 KB
  We’ll continue our topic “Character”. Today we will listen to the text about personalities, learn some new words and do several exercises. Мовленнєва зарядка 2хв T: Ok tell me please.
61641. Your Sweet Teeens 22.04 KB
  Who do you think are very talkative? Who are they? Do you feel anxious all the time and worried by things? Do you feel anxious if you don’t know how to cope with some problems?
61642. Фотосинтез 42.12 KB
  Цель урока: формирование знаний о воздушном питании растений. Воспитание нравственно-этических качеств личности школьника через умение слушать и слышать.