МПС

Периферийные устройства (Лекция)

ПЛАН ЛЕКЦИИ

– Клавиатура и управление клавиатурой

– Сводная таблица скан-кодов

– Сводная таблица кодов ASCII

– Сводная таблица расширенных кодов

 

Клавиатура и управление клавиатурой

Клавиатура содержит микропроцессор, который воспринимает каждое нажатие на клавишу и выдает скан-код в порт микросхемы интерфейса с периферией, расположенной на системной плате. Скан-код это однобайтное число, младшие 7 битов которого представляют идентификационный номер, присвоенный каждой клавише. На всех машинах, до АT, старший бит кода говорит о том, была ли клавиша нажата (бит = 1, код нажатия) или освобождена (бит = 0, код освобождения). Например, 7-битный скан-код клавиши B - 48, или 110000 в двоичной системе. Когда эта клавиша нажимается, то в порт А посылается код 10110000, а когда ее отпустили – код 00110000. Таким образом, каждое нажатие на клавишу дважды регистрируется в микросхеме 8255. И каждый раз микросхема 8255 выдает подтверждение микропроцессору клавиатуры. АT работает немного по-другому, посылая в обоих случаях один и тот же скан-код, но предваряя его кодом F0H, когда клавиша отпускается. Когда скан-код выдается в порт, то вызывается прерывание клавиатуры (INT 9). Процессор моментально прекращает свою работу и выполняет процедуру, анализирующую скан-код. Когда поступает код от клавиши сдвига или переключателя, то изменение статуса записывается в память. Во всех остальных случаях скан-код трансформируется в код символа, при условии, что он подается при нажатии клавиши (в противном случае, скан-код отбрасывается).

После этого введенный код помещается в буфер клавиатуры, который является областью памяти, способной запомнить до 15 вводимых символов, пока программа слишком занята, чтобы обработать их.

Имеется два типа кодов символов, коды АSСII и расширенные коды. Коды АSСII – это байтные числа, которые соответствуют расширенному набору кодов АSСII для IBM РС. Для IBM РС этот набор включает обычные символы пишущей машинки, а также ряд специальных букв и символов псевдографики. АSСII коды включают также 32 управляющих кода, которые обычно используются для передачи команд периферийным устройствам, а не выводятся как  символы на экране; однако каждый из них имеет соответствующий символ, который может быть выведен на дисплей с использованием прямой адресации дисплейной памяти

Второй набор кодов, расширенные коды, присвоен клавишам или комбинациям клавиш, которые не имеют представляющего их символа ASCII, таким как функциональные клавиши или комбинации с клавишей Alt. Расширенные коды имеют длину 2 байта, причем первый байт всегда ASCII 0. Второй байт – номер расширенного кода. Например, код 0:30 представляет Alt-A. Начальный ноль позволяет программе определить - принадлежит ли данный код набору АSСII или расширенному набору.

Имеется несколько комбинаций клавиш, которые выполняют специальные функции и не генерируют скан-коды. Эти комбинации включают <Ctrl-Break>, <Ctrl-Alt-Del> и <РrtSс>. Эти исключения приводят к заранее предопределенным результатам. Все остальные нажатия клавиш должны интерпретироваться программой.

 

Сводная таблица скан-кодов

Каждая клавиша генерирует два типа скан-кодов, "код нажатия" – когда клавиша нажимается, и "код освобождения" - когда клавиша отпускается. Используется одна и та же цепочка битов для кодов нажатия и освобождения, но коды освобождения состоят из двух байтов, первый из которых всегда равен 0F0H. Прерывание клавиатуры отбрасывает этот код и он не связывается ни с каким кодом АSСII или расширенным кодом.

Таблица. Клавиши пишущей машинки

Клавиша/Код нажатия

Клавиша/Код нажатия

Клавиша/Код нажатия

"1" 2

"T" 20

"L" 38

"2" 3

"Y" 21

";" 39

"3" 4

"U" 22

"'" 40

"4" 5

"I" 23

"`" 41

"5" 6

"O" 24

"\" 43

"6" 7

"P" 25

"Z" 44

"7" 8

"[" 26

"X" 45

"8" 9

"]" 27

"C" 46

"9" 10

"A" 30

"V" 47

"0" 11

"S" 31

"B" 48

"-" 12

"D" 32

"N" 49

"=" 13

"F" 33

"M" 50

"Q" 16

"G" 34

"," 51

"W" 17

"H" 35

"." 52

"E" 18

"J" 36

"/" 53

"R" 19

"K" 37

Пробел 57

 

 

Управляющие клавиши

Esc - 1

Ctrl – 29

Alt - 56

BackSpace - 14

left shift - 42

CapsLock - 58

Tab - 15

right shift - 42

NumLock - 58

Enter - 28

PrtSc – 55

ScrollLock - 70

 

Функциональные клавиши

F1 - 59

F5 - 63

F9 - 67

F2 - 60

F6 - 64

F10 - 68

F3 - 61

F7 - 65

 

F4 - 62

F8 - 66

 

 

Сводная таблица кодов ASCII

Любой код АSCII от 1 до 255 может быть введен с клавиатуры, если держать нажатой клавишу Alt при наборе номера кода на дополнительной клавиатуре (с соответственно установленным режимом NumLock). Когда клавиша Alt затем освобождается, то код вводится.

 

Символ  10-ный  16-pичный  двоичный  Символ  10-ный  16-pичный  двоичный

 

(null)  0        00     00000000     0      48       30      00110000

           1        01     00000001     1      49       31      00110001

           2        02     00000010     2      50       32      00110010

           3        03     00000011     3      51       33      00110011

           4        04     00000100     4      52       34      00110100

           5        05     00000101     5      53       35      00110101

           6        06     00000110     6      54       36      00110110

           7        07     00000111     7      55       37      00110111

           8        08     00001000     8      56       38      00111000

           9        09     00001001     9      57       39      00111001

          10        0A     00001010     :      58       3A      00111010

          11        0B     00001011     ;      59       3B      00111011

          12        0C     00001100     <      60       3C      00111100

          13        0D     00001101     =      61       3D      00111101

          14        0E     00001110     >      62       3E      00111110

          15        0F     00001111     ?      63       3F      00111111

          16        10     00010000     @      64       40      01000000

          17        11     00010001     A      65       41      01000001

          18        12     00010010     B      66       42      01000010

          19        13     00010011     C      67       43      01000011

          20        14     00010100     D      68       44      01000100

          21        15     00010101     E      69       45      01000101

          22        16     00010110     F      70       46      01000110

          23        17     00010111     G      71       47      01000111

          24        18     00011000     H      72       48      01001000

          25        19     00011001     I      73       49      01001001

          26        1A     00011010     J      74       4A      01001010

          27        1B     00011011     K      75       4B      01001011

          28        1C     00011100     L      76       4C      01001100

          29        1D     00011101     M      77       4D      01001101

          30        1E     00011110     N      78       4E      01001110

          31        1F     00011111     O      79       4F      01001111

пpoбeл    32        20     00100000     P      80       50      01010000

  !       33        21     00100001     Q      81       51      01010001

  "       34        22     00100010     R      82       52      01010010

  #       35        23     00100011     S      83       53      01010011

  $       36        24     00100100     T      84       54      01010100

  %       37        25     00100101     U      85       55      01010101

  &       38        26     00100110     V      86       56      01010110

  '       39        27     00100111     W      87       57      01010111

  (       40        28     00101000     X      88       58      01011000

  )       41        29     00101001     Y      89       59      01011001

  *       42        2A     00101010     Z      90       5A      01011010

  +       43        2B     00101011     [      91       5B      01011011

  ,       44        2C     00101100     \      92       5C      01011100

  -       45        2D     00101101     ]      93       5D      01011101

  .       46        2E     00101110     ^      94       5E      01011110

  /       47        2F     00101111     _      95       5F      01011111

  `       96        60     01100000     Щ     153       99      10011001

  a       97        61     01100001     Ъ     154       9A      10011010

  b       98        62     01100010     Ы     155       9B      10011011

  c       99        63     01100011     Ь     156       9C      10011100

  d      100        64     01100100     Э     157       9D      10011101

  e      101        65     01100101     Ю     158       9E      10011110

  f      102        66     01100110     Я     159       9F      10011111

  g      103        67     01100111     a     160       A0      10100000

  h      104        68     01101000     б     161       A1      10100001

  i      105        69     01101001     в     162       A2      10100010

  j      106        6A     01101010     г     163       A3      10100011

  k      107        6B     01101011     д     164       A4      10100100

  l      108        6C     01101100     e     165       A5      10100101

  m      109        6D     01101101     ж     166       A6      10100110

  n      110        6E     01101110     з     167       A7      10100111

  o      111        6F     01101111     и     168       A8      10101000

  p      112        70     01110000     й     169       A9      10101001

  q      113        71     01110001     к     170       AA      10101010

  r      114        72     01110010     л     171       AB      10101011

  s      115        73     01110011     м     172       AC      10101100

  t      116        74     01110100     н     173       AD      10101101

  u      117        75     01110101     o     174       AE      10101110

  v      118        76     01110110     п     175       AF      10101111

  w      119        77     01110111          176       B0      10110000

  x      120        78     01111000          177       B1      10110001

  y      121        79     01111001     Љ     178       B2      10110010

  z      122        7A     01111010          179       B3      10110011

  {      123        7B     01111011     Њ     180       B4      10110100

  |      124        7C     01111100     Ќ     181       B5      10110101

  }      125        7D     01111101     Ћ     182       B6      10110110

  ~      126        7E     01111110     Џ     183       B7      10110111

         127        7F     01111111     ђ     184       B8      10111000

  A      128        80     10000000          185       B9      10111001

  Б      129        81     10000001          186       BA      10111010

  B      130        82     10000010          187       BB      10111011

  Г      131        83     10000011          188       BC      10111100

  Д      132        84     10000100          189       BD      10111101

  E      133        85     10000101          190       BE      10111110

  Ж      134        86     10000110          191       BF      10111111

  З      135        87     10000111     ѕ     192       C0      11000000

  И      136        88     10001000          193       C1      11000001

  Й      137        89     10001001     љ     194       C2      11000010

  K      138        8A     10001010     Ѓ     195       C3      11000011

  Л      139        8B     10001011     њ     196       C4      11000100

  M      140        8C     10001100     ќ     197       C5      11000101

  H      141        8D     10001101     ћ     198       C6      11000110

  O      142        8E     10001110     џ     199       C7      11000111

  П      143        8F     10001111          200       C8      11001000

  P      144        90     10010000     ѓ     201       C9      11001001

  C      145        91     10010001          202       CA      11001010

  T      146        92     10010010     Ј     203       CB      11001011

  У      147        93     10010011     Ѕ     204       CC      11001100

  Ф      148        94     10010100     Ґ     205       CD      11001101

  X      149        95     10010101     ¦     206       CE      11001110

  Ц      150        96     10010110     §     207       CF      11001111

  Ч      151        97     10010111          208       D0      11010000

  Ш      152        98     10011000          209       D1      11010001

        210        D2     11010010     щ     233       E9      11101001

  «      211        D3     11010011     ъ     234       EA      11101010

  ¬      212        D4     11010100     ы     235       EB      11101011

  ­      213        D5     11010101     ь     236       EC      11101100

  ®      214        D6     11010110     э     237       ED      11101101

  Ђ      215        D7     11010111     ю     238       EE      11101110

  ©      216        D8     11011000     я     239       EF      11101111

  ±      217        D9     11011001     E     240       F0      11110000

  І      218        DA     11011010     e     241       F1      11110001

  і      219        DB     11011011     Є     242       F2      11110010

  ґ      220        DC     11011100     є     243       F3      11110011

  µ      221        DD     11011101     Ї     244       F4      11110100

        222        DE     11011110     ї     245       F5      11110101

  ј      223        DF     11011111     Ў     246       F6      11110110

  p      224        E0     11100000     ў     247       F7      11110111

  c      225        E1     11100001     °     248       F8      11111000

  т      226        E2     11100010          249       F9      11111001

  у      227        E3     11100011     ·     250       FA      11111010

  ф      228        E4     11100100     »     251       FB      11111011

  x      229        E5     11100101          252       FC      11111100

  ц      230        E6     11100110     ¤     253       FD      11111101

  ч      231        E7     11100111     ˜     254       FE      11111110

  ш      232        E8     11101000           255       FF      11111111

 

Сводная таблица расширенных кодов

Значение 2-гo байта    Соответствующие клавиши

   15                   Shift + Tab ("back-tab")

   16-25                Alt-Q - Alt-P (верхний pяд букв)

   30-38                Alt-A - Alt-L (средний pяд букв)

   44-50                Alt-Z - Alt-M (нижний pяд букв)

   59-68                Функциональные клавиши F1 - F10

   71                   Home

   72                   Cursor-up (стрелка вверх)

   73                   PgUp

   75                   Cursor-left (стрелка влево)

   77                   Cursor-right (стрелка вправо)

   79                   End

   80                   Cursor-down (стрелка вниз)

   81                   PgDn

   82                   Ins

   83                   Del

   84-93                F1-F10 + Shift

   94-103               F1-F10 + Ctrl

   104-113              F1-F10 + Alt

   114                  Ctrl + PrtSc

   115                  Ctrl + Cursor-left

   116                  Ctrl + Cursor-right

   117                  Ctrl + End

   118                  Ctrl + PgDn

   119                  Ctrl + Home

   120-131              Alt + 1 - Alt + = (верхний pяд)

   132                  Ctrl + PgUp