Klávesnica PP 01
Zdroj: www.sapi.cz

Klávesnica

Klávesnica PP 01 je umiestnená na samostatnej doske SM 2257. Tá okrem obvodov klávesnice obsahuje aj indikačné LED žiadostí o prerušenie a RUN LED, zvukový výstup (akustický menič - reproduktor) a obvody pre tlačidlá pre vyvolanie prerušení INT0 a INT3.

Klávesnica je riešená ako matica spínačov s organizáciou 16 stĺpcov a 6 riadkov. Je pripojená na systémový (služobný) PIO, kde sa výber stĺpca klávesnice robí prostredníctvom dekodéra 74154 zápisom na port PC (0C2h). Zapisované číslo stĺpca musí byť zvýšené o 16, čo vypne akustický výstup. Stav klávesov pre vybraný stĺpec sa testuje čítaním portu PB (0C1h) - ak je nejaký kláves stlačený, je príslušný bit vynulovaný. Klávesy SHIFT a CTRL sú pripojené samostatne na bity PB7 a PB6, takže nezáleží na vybranom stĺpci klávesnice. Špeciálne klávesy [-] a [\] sa musia stláčať spolu s klávesom LOCK.

Výber stĺpca
(OUT 0C2h)
Čítanie stavu zvoleného stĺpca (IN 0C1h)
PB7 PB6 PB5 PB4 PB3 PB2 PB1 PB0
16+0=16 SHIFT CTRL P ` @ 0 NUM0 F0 SPACE
16+1=17 SHIFT CTRL Q A 1 NUM1 F1 F2
16+2=18 SHIFT CTRL R B 2 NUM2 F3 F4
16+3=19 SHIFT CTRL S C 3 NUM3 F5 F6
16+4=20 SHIFT CTRL T D 4 NUM4 F7 F8
16+5=21 SHIFT CTRL U E 5 NUM5 F9 F10
16+6=22 SHIFT CTRL V F 6 NUM6 F11 F12
16+7=23 SHIFT CTRL W G 7 NUM7 F13 F14
16+8=24 SHIFT CTRL X H 8 NUM8 RIGHT LEFT
16+9=25 SHIFT CTRL Y I 9 NUM9 NUM+ TAB
16+10=26 SHIFT CTRL Z J : *   UP LF
16+11=27 SHIFT CTRL [ { K ; +   ADR DOWN
16+12=28 SHIFT CTRL | \ L , <   NUM- NUM*
16+13=29 SHIFT CTRL ] } M - =   HOME CR
16+14=30 SHIFT CTRL ^ ~ N . > NUM. LOCK + [-] NUM/
16+15=31 SHIFT CTRL _ O / ?   LOCK + [\] DEL

Pár príkladov testu klávesov:

; test klávesu CTRL in 0C1h ; prečítaj stav klávesnice ani 40h ; odmaskuj bit PB6, kde je kláves CTRL jz IS_KBD_CTRL ; keď je v nule, kláves CTRL je stlačený ... ; kláves CTRL nie je stlačený ; test klávesu SHIFT in 0C1h ; prečítaj stav klávesnice rlc ; posuň bit PB7, kde je kláves SHIFT, do CY jnc IS_KBD_SHIFT ; keď je CY v nule, kláves SHIFT je stlačený ... ; kláves SHIFT nie je stlačený ; test klávesu R mvi a,16+2 ; kláves R je v 2. stĺpci out 0C2h ; zapíš číslo stĺpca in 0C1h ; prečítaj stav klávesnice ani 20h ; odmaskuj bit PB5, kde je kláves R jz IS_KBD_R ; keď je v nule, kláves R je stlačený ... ; kláves R nie je stlačený ; ak je nutné nezmeniť horné bity portu C, je potrebné prečítať ; pôvodnú hodnotu portu a pridať požadovaný stĺpec ; test klávesu CR in 0C2h ; prečítaj stav portu C ani 0E0h ; ponechaj horné bity ori 16+13 ; kláves CR je v 13. stĺpci out 0C2h ; zapíš nové číslo stĺpca in 0C1h ; prečítaj stav klávesnice rrc ; posuň bit PB0 do CY, kde je kláves CR jnc IS_KBD_INS ; keď je v nule, kláves CR je stlačený ... ; kláves CR nie je stlačený

PP 01 ROM poskytuje rutinu pre test klávesnice bez čakania na adrese 0C05Eh (E_InKeyV). Rutina vráti CY=1, ak nebol stlačený žiaden kláves. V opačnom prípade je CY=0 a v akumulátore je kód stlačeného klávesu. Písmená, číslice a symboly majú obvyklý kód podľa ASCII. Kláves CTRL stlačený s písmenom AZ vráti kód 01h1Ah. Riadiace a funkčné klávesy majú kódy podľa nasledujúcej tabuľky:

Kláves Kód
LEFT 08h
TAB 09h
LF 0Ah
DOWN 0Bh
CR 0Dh
RIGHT 18h
UP 1Ah
ADR 1Bh
HOME 1Dh
LOCK + RIGHT 1Eh
LOCK + RIGHT-DOWN 1Fh
DEL 7Fh
F0 81h
F1 0F1h
F2 0F2h
F3 0F3h
F4 0F4h
F5 0F5h
F6 0F6h
F7 0F7h
F8 0F8h
F9 0F9h
F10 0FAh
F11 0FBh
F12 0FCh
F13 0FDh
F14 0FEh
SHIFT + F1 0E1h
SHIFT + F2 0E2h
SHIFT + F3 0E3h
SHIFT + F4 0E4h
SHIFT + F5 0E5h
SHIFT + F6 0E6h
SHIFT + F7 0E7h
SHIFT + F8 0E8h
SHIFT + F9 0E9h
SHIFT + F10 0EAh
SHIFT + F11 0EBh
SHIFT + F12 0ECh
SHIFT + F13 0EDh
SHIFT + F14 0EEh