KEYB |
Klávesnica |
Klávesnica
Klávesnica komunikuje s procesorom sériovým spôsobom
( 5 kolíkový konektor s logickými úrovňami signálu TTL ) a na identifikáciu
klávesov používa špeciálny polohový kód ( IBM Scan code od
01H po E0H ) Na identifikáciu stlačenia, resp. uvoľnenia klávesu sa používa
bit 7 scan kódu. Ak je Bit 7=1 t.j. hodnota kódu je vyššia o 80H, je procesor
informovaný, že kláves je stlačený. Napríklad prvým z hľadiska polohy na
klávesnicu je kláves ESC (v ľavom hornom rohu). a jeho scan kód je 01H,
resp 81H počas stlačenia. Kláves Q má scan kód 10H / 90H a pod. Vďaka polohovému
spôsobu kódovania kláves možno nadefinovať národné abecedy, napríklad azbuku.
Po stlačení klávesu žiada klávesnica o prerušenie
pomocou špeciálneho bitu, ktorý sa sériovo vysiela ako prvý. Napríklad
po stlačení klávesu R, ktorý má polohový kód 13H = 0001 0011B sa vyšle
sériová postupnosť bitov (v postupnosti bit žiadajúci o prerušenie, Lsb
a na konci Msb):
pri stlačení 0001 0011 1 ( bit pre INT9)
pri uvoľnení 1001 0011 1
Sériová postupnosť bitov sa na strane počítača prekonvertuje
pomocou posuvného registra na paralelný kód a prečíta sa (cez port PA na
adrese 60H) po vyvolaní
BIOS prerušenia INT9H do procesora.
Po prečítaní kódu z PA=60H sa volá ďalšia služba INT 15H/ ah=4FH, ktorá
umožňuje napríklad predefinovať polohu Y a Z na klávesnici. Po ukončení
INT 9H sa uložia do bufera klávesnice 2 bajty : ASCII kód klávesu (LSB
) a pomocný scan code (MSB) ak bol stlačený znakový kláves. V prípade,
že bol stlačený špeciálny kláves tak jeho LSB = 0 a MSB bude obsahovať
scan code klávesu.
Kódy klávesov sa ukladajú do RAM pamäte o dĺžke
32 bajt (KBD_buffer klávesnice na adrese 0:41EH v spolupráci
s počítadlami znakov pre začiatočnú polohu na adrese 0:41AH a poslednú
aktuálnu polohu znaku v buffere na adrese 0:41CH . Napr ak je KBD_buffer
prázdny je obsah (0:41AH ) a ( 0:41CH ) rovnaký.)
Túto komunikáciu ovplyvňujú ešte 2 stavové registre
( na adrese 0:417H a 0:418H), v ktorých je uložený stav pomocných klávesov
tzv. KB_Flags,
napríklad Shift, Alt, Ctrl, Num Lock, Caps
Lock a pod.
Adresa 0:417H |
Adresa 0:418H |
Bit |
Váha |
Význam |
Bit |
Váha |
Význam |
7 |
80H |
Insert aktívny |
7 |
80H |
Insert stlačený |
6 |
40H |
Caps Lock aktívny |
6 |
40H |
Caps Lock stlačený |
5 |
20H |
Num Lock aktívny |
5 |
20H |
Scroll Lock stlačený |
4 |
10H |
Scroll Lock aktívny |
4 |
10H |
Ctrl+NumLock stlačený |
3 |
08H |
Alt stlačený |
3 |
08H |
- |
2 |
04H |
Ctr stlačený |
2 |
04H |
- |
1 |
02H |
ľavý Shift aktívny |
1 |
02H |
ľavý-Ctrl stlačený |
0 |
01H |
pravý Shift aktívny |
0 |
01H |
ľavý Alt stlačený - |
Úlohou obsluhy prerušenia INT 9H je uložiť
kódy stlačených klávesov (resp. správne interpretované kódy v spolupráci
s pomocnými klávesmi ) do buffera a do tabuľky BIOS. Pre užívateľov je
určené BIOS prerušenie INT 16H, ktoré umožňuje vyzdvihnúť
si kódy pre potreby aplikácii.
`
 |
Win 1250 |
Návrat
na stránku |
HTML 4.0 |
 |
Back |
|
|
|
Next |
|