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