Klawiatura 601
Rozdział 13. Klawiatura
W ostatnim okresie nastąpił gwałtowny zalew rynku nowoczesnymi urządzeniami przeznaczonymi do wprowadzania danych i ułatwiającymi kontakt użytkownika z komputerem. Mowa tu o różnych wymyślnych modelach myszek, skanerach czy wręcz systemach rozpoznawania mowy. Mimo tego wszystkiego trudno sobie w dalszym ciągu wyobrazić obsługę komputera bez użycia klawiatury.
To poczciwe urządzenie również podlega z biegiem czasu pewnym mniej lub bardziej widocznym przekształceniom. Stosowane obecnie mikroprzełączniki są coraz lepszej jakości, a i producenci zaczynają przywiązywać coraz większą wagę do ergonomicznego kształtu klawiatury. Należy się spodziewać, że jeszcze przez dłuższy czas zmuszeni będziemy do korzystania z klawiatury, warto więc zaznajomić się z jej działaniem i budową.
Klawiatury XT, AT i PS/2
Klawiatura komputera, a zwłaszcza nowoczesne modele PS/2 (oznaczenie PS/2 odnosi się do modelu klawiatury 101- lub 102-klawiszowej, wprowadzonego na rynek przez firmę IBM w modelach IBM PC/RT i PS/2 - klawiatura ta znana jest też pod nazwą Enhanced A T lub MF-II, a żargonowo nazywana jest „klawiaturą 101"), stanowi układ dużo bardziej skomplikowany, niż mogłoby się to wydawać na pierwszy rzut oka.
Wbrew powszechnie panującej opinii, model XT, będący pierwowzorem dla późniejszych udoskonaleń, również wyposażony był we własny kontroler klawiatury. Idea działania klawiatury typu XT przedstawiona jest na rysunku 13.1.
602
Anatomia PC
Rysunek 13,1.
Schemat obsługi klawiatury typu XT
PC/XT
Mikrokomputer jednoukładowy (mikrokontroler) 8048 nadzoruje siatkę połączeń X i Y, w której węzłach umieszczone są poszczególne klawisze. Układ kontroluje odpowiednio często stan tej siatki, wysyłając impulsy kolejno wszystkimi liniami X i badając, czy nie pojawiły się one na którejś z linii Y. W ten sposób można w dowolnym momencie określić, które z klawiszy zostały wciśnięte i ewentualnie zwolnione. Informacja ta przekazywana jest w formie szeregowego strumienia danych przewodem połączeniowym do komputera. Dane przesyłane są w sposób synchroniczny (dodatkową linią transmitowany jest przebieg zegarowy), a ramka danych ma stałą budowę i zawiera jeden bit startu, osiem bitów danych, jeden bit kontroli parzystości (typu nieparzystego) i jeden bit stopu. Bit startu jest zawsze równy zero, zaś bit stopu -jeden. Przewód połączeniowy klawiatura - komputer jest pięciożyłowy i oprócz linii danych, synchronizacji i masy dostarcza napięcia zasilającego +5 V dla układów sterujących klawiatury oraz posiada nie zawsze wykorzystywaną linię Reset.
Napływające z klawiatury dane opracowywane są w komputerze PC/XT przez układ 8255, a odebranie kompletnego znaku sygnalizowane jest przerwaniem IRQl. Znak ten stoi do dyspozycji w porcie B układu 8255 (rejestr o adresie 60h).
Trochę inaczej przedstawia się sytuacja w przypadku klawiatur AT i PS/2. Jak widać z rysunku 13.2, między klawiaturą a komputerem PC/AT możliwa jest dwukierunkowa wymiana informacji (w synchronicznym trybie półdupleksowym). Za komunikację tę odpowiedzialny jest od strony komputera scalony kontroler 8741, 8742 lub 8042, a od strony klawiatury - mikrokontroler 8049, posiadający odpowiednio rozbudowany w stosunku do swego poprzednika mikrokod.
Procesor jest w stanie programować zarówno klawiaturę, jak i jej kontroler (ten od strony komputera). Wprowadzona została cała lista rozkazów, które mogą być przesyłane do klawiatury. Modele AT i PS/2 wzbogacone zostały również o dodatkowy rejestr sterujący o adresie 64h. Podstawowa funkcja portu 60h jako rejestru danych została oczywiście zachowana ze względu na konieczność utrzymania zgodności sprzętowej.
Klawiatura
603
Rysunek 13.2.
• Schemat obsługi : klawiatury typu AT
PC/AT
Mapa klawiatury
Każdemu przyciskowi klawiatury przyporządkowana jest na stałe liczba zwana kodem klawisza (ang. scan code). Nie ma tu absolutnie znaczenia, jakim znakiem lub funkcją opisany jest klawisz, ważne jest jedynie jego położenie na klawiaturze. Różnych kodów może być oczywiście nie więcej niż klawiszy, czyli maksymalnie 102, tak więc do ich opisania wystarczy l bajt. W przypadku pokazanej na rysunku 13.3. klawiatury XT klawisze zostały po prostu kolejno ponumerowane.
Naciśnięcie dowolnego klawisza powoduje przesłanie do komputera tzw. kodu naciśnięcia (ang. mąkę code), który równy jest kodowi naciśniętego klawisza. Kod ten mieści się w całości w 11 -bitowej ramce, za pomocą której transportowany jest do komputera. Nadejście dowolnego bajtu danych z klawiatury wyzwala przerwanie sprzętowe na linii IRQ1. Obsługująca to przerwanie procedura (wskazywana przez wektor 09h) przejmuje odebrany znak. Dalszy sposób postępowania procedury INT 09h zależy od tego, czy naciśnięto klawisz funkcyjny (np. F2), specjalny (np. Alt, Shift), czy klawisz ze zwykłym znakiem (np. B).
Pojedynczy kod naciśnięcia nie określa niestety w jednoznaczny sposób intencji użytkownika. Wiele klawiszy opisanych jest bowiem kilkoma symbolami, nawet zwykłe litery mogą występować w wersji dużej lub małej. Wybór znaczenia klawisza dokonywany jest za pomocą klawiszy specjalnych. Procedura obsługi przerwania 09h (zwana też sterownikiem klawiatury, ang. keyboard handler) musi więc brać pod uwagę stan całego pola zestyków i odpowiednio go interpretować.
604
Rysunek 13.3.
Mapa klawiatury typu XT
Klawiatura PC/XT
59
60
01 02
|03|04
os|oe
> 07(08
09J 10)11
12|13| 14
69
70
61
62
15 1
3 17 18
19 2
021(22
> 23 24 2
5 26| 27
28
71
72
73
74
63
64
29
30 31 32[33
34(35 3
63738
39 40 41
75
76
77
78
65
66
4243
4445
...
mgram