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


 

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

16950. Перевод ЭБ из состояния холодный останов в состояние горячий останов 207 KB
  Тема: Перевод ЭБ из состояния холодный останов в состояние горячий останов. План лекции Введение 1.Состояние систем и оборудования при состоянии ЭБ холодный останов при подготовке к разогреву первого контура. 2.Разогрев 1...
16951. Перевод ЭБ из состояния горячий останов в состояние реактор критичен 143 KB
  Тема: Перевод ЭБ из состояния горячий останов в состояние реактор критичен. План лекции Введение. Состояние систем и оборудования при нахождении ЭБ в состоянии горячий останов при подготовки к выходу на МКУ. Вывод реактора в критическое состояние...
16952. Перевод ЭБ из состояния реактор критичен в состояние «Работа на мощности» 78 KB
  Тема: Перевод ЭБ из состояния реактор критичен в состояние Работа на мощности. План лекции 1.Увеличение мощности реактора до 5 Nном. 2. Увеличение мощности реактора до 20 39 Nном. 3.Разворот ТГ и включение в сеть. 4.Увеличение мощности РУ до N = 7580Nном и до номин
16953. Работа ЭБ в состоянии «Работа на мощности» 165.5 KB
  Тема: Работа ЭБ в состоянии Работа на мощности. План лекции Введение 1. Состояние систем и оборудования при состоянии ЭБ Работа на мощности. 2. Эксплуатация и техническое обслуживание оборудования РУ в режиме Работа на мощности. 3. Эксплуатация и техническ...
16954. Работа ЭБ с неполным числом петель 1 контура 51 KB
  Тема: Работа ЭБ с неполным числом петель 1 контура. План лекции Введение 1.Последовательность операций при отключении петли в резерв. 2.Подготовка петли к работе. 3.Ввод петли в работу. 4.Эксплуатация ЭБ в режиме продления компании...
16955. Перевод ЭБ из состояния «Горячий останов» в состояние Холодный останов 147.5 KB
  Лекция № 15 Тема: Перевод ЭБ из состояния Горячий останов в состояние Холодный останов. План лекции Введение 1.Подготовка РУ к расхолаживанию. 2.Расхолаживание 1 контура. 3. Расхолаживание 1 контура системой TQ122232. 4.Окончательное расхолаживание 1 контура
16956. Перевод ЭБ из состояния «работа на мощности» в состояние «горячий останов» 81 KB
  Тема: Перевод ЭБ из состояния работа на мощности в состояние горячий останов. План лекции Введение 1. Подготовка к снижению мощности и снижение мощности реактора. 2. Останов турбогенератора. 3. Разгрузка реактор...
16957. Перевод ЭБ из режима «Холодный останов» в режим «останов для ремонта» и «останов для перегрузки» 83 KB
  Тема: Перевод ЭБ из режима Холодный останов в режим останов для ремонта и останов для перегрузки. План лекции Введение 1.Дренирование 1 контура и консервация ПГ. 2.Подготовка ЭБ к ремонту. 3.Подготовка РУ к перегрузке топлива. ...
16958. Задачи и организационная структура управления эксплуатацией АЭС 84.5 KB
  Тема: Задачи и организационная структура управления эксплуатацией АЭС. План лекции Введение 1.Задачи эксплуатации АЭС. 2.Типовая организационная структура управления эксплуатацией АС. Выводы по лекции. Литература: 1.Острековский В.А. Эксплуатация АС. Москв