Периферийные устройства
Периферийные устройства (Лекция 9)
Kлaвиaтуpa и управление клавиатурой
Клавиатура содержит микропроцессор, который воспринимает каждое нажатие на клавишу и выдает скан-код в порт микросхемы интерфейса с периферией, расположенной на системной плате. Скан-код это однобайтное число, младшие 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 | Пpoбeл 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 |
Cвoднaя тaблицa кoдoв 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