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


 

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

39219. Динамика науки как процесс порождения нового знания 131 KB
  Философия и методология научного познания Тема 2 Лекция 3 Динамика науки как процесс порождения нового знания Сущность и движущие силы развития научного знания. Концепция исторической динамики науки Т. Этот процесс можно рассматривать как движение от мифа к логосу от логоса к преднауке от преднауки к науке от классической науки к неклассической и далее к постнеклассической и т. В философии науки вопрос о сущности и движущих силах развития научного знания сводится к следующим аспектам: Сущность динамики науки это просто...
39220. ЭКОНОМИКА СТРОИТЕЛЬСТВА 668.5 KB
  Все они используют одни и те же методические документы по составлению смет и нормативные базы ЭСН84 ЕРЕР84 СниР91 ЕРС99 ГЭСН2001 ТЕР2001 и др. Затраты труда рабочих и машинистов на единицу определяются по сборникам ГЭСН2001. ГЭСН отражают среднеотраслевые затраты на эксплуатацию строительных машин и механизмов в зависимости от видов работ. 2004 N п п Виды строительных и монтажных работ Нормативы накладных расходов в к фонду оплаты труда рабочих строителей и механизаторов Область применения номера сборников ГЭСН ГЭСНм...
39221. Социология права 16.28 KB
  Социология права (юридическая социология) – отрасль общей социологии (наряду с такими ее отраслями, как социология культуры, социология политики, социология религии и т. д.)
39223. Социальный конфликт: причины, структура и функции. Управление конфликтом 17.4 KB
  Социальный конфликт — это социальное явление, содержанием которого является процесс развития и разрешения противоречивости отношений и действий людей, детерминируемый прежде всего объективными закономерностями развития общества.
39224. Изучение явления термоэдс 163 KB
  Зеебек обнаружил что замкнутой цепи состоящей из двух разнородных проводников возникает электродвижущая сила термоэдс если контакты находятся при различных температурах рис. Явление возникновения термоэдс наблюдается и в одном проводнике если его концы находятся при разных температурах рис. Величина термоэдс прямо пропорциональна разности температур.
39225. Изучение эффекта Пельтье 259 KB
  При прохождении тока в цепи состоящей из различных проводников в местах контакта в дополнение к теплоте ДжоуляЛенца выделяется или поглощается в зависимости от направления тока некоторое количество тепла теплота Пельтье пропорциональное прошедшему через контакт электрическому заряду. В переносе тока будут участвовать электроны в узкой полосе размытия 2kT вблизи уровня Ферми. При противоположном направлении тока электроны переходя в полупроводник поглощают энергию охлаждая контакт. При пропускании тока в прямом направлении от p...
39226. Измерение коэффициента теплопроводности сыпучего материала 114 KB
  Ознакомление с методикой измерения коэффициента теплопроводности сыпучих материалов измерение коэффициента теплопроводности песка. Коэффициент теплопроводности В феноменологической теории теплопроводности перенос тепловой энергии рассматривается подобно течению жидкости. Согласно закону Фурье 1 где  коэффициент теплопроводности.
39227. Изучение сегнетоэлектриков 202 KB
  Основная кривая поляризации сегнетоэлектрика представлена на рис. Диэлектрическая проницаемость зависит от напряженности внешнего поля рис. На рис. Механизм спонтанной поляризации сегнетоэлектриков По типу химической связи и физическим свойствам сегнетоэлектрики принято подразделять на две группы: 1 ионные кристаллы; 2 дипольные кристаллы.