Budowa, 9 Komputer


1. CEL ĆWICZENIA .

Celem ćwiczenia jest zapoznanie się z budową myszki, z jej zasadą działania oraz programowaniem za pomocą wybranych funkcji przerwania 33h BIOS'u .

2. WSTĘP TEORETYCZNY .

0x08 graphic
Mysz, urządzenie, które służy do komunikacji użytkownika z komputerem. W wielu przypadkach pozwala zastąpić klawiaturę, często jego użycie jest znacznie wygodniejsze. Myszy rozpowszechniły się wraz z powstaniem graficznych interfejsów w systemach operacyjnych. Urządzenie składa się z plastikowej obudowy, wewnątrz której znajduje się kulka obracająca się wraz z przesuwaniem myszy po powierzchni biurka. Na obudowie znajdują się dwa lub trzy przyciski, nowoczesne myszy są również wyposażone w pokrętło (jedno lub więcej) służące do przewijania długich dokumentów (np. stron WWW).

Myszka komunikuje się z komputerem za pomocą portu szeregowego. Znane są co prawda myszki współpracujące z kartą dedykowaną do ich obsługi (jest to rozwiązanie archaiczne), ewentualnie z kartami sterowników graficznych (rozwiązanie firmy ATI), jednak przeważająca większość myszek używa portu szeregowego.

Starsze wersje korzystały dodatkowo z przewodu klawiatury, ale wyłącznie dla zasilania swoich układów elektronicznych. Obecnie technologia CMOS pozwala na zastosowanie układów pobierających tak małą moc, że możliwe jest zasilanie myszki z wyjść portu szeregowego (napięciami ± 12 V).

2.1. SCHEMAT BLOKOWY PRZEDSTAWIAJĄCY PRZEPŁYW INFORMACJI Z URZĄDZENIA WSKAŹNIKOWEGO DO KOMPUTERA .

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

0x08 graphic

0x08 graphic
0x08 graphic

0x08 graphic

2.2. PRZETWORNIK RUCHU NA IMPULSY ELEKTRYCZNE .

0x08 graphic
Konstrukcja większości myszek oparta jest o kulkę wprawioną w ruch po przez przesunięcie myszki po stole. Do kulki przylegają dwa wałki odpowiedzialne za przenoszenie ruchu jej obrotu. Na wałkach tych umieszczone są specjalne tarcze posiadające na swym obwodzie otworki, zaś po bokach każdej tarczy znajdują się pary dioda świecąca -fotoelement. Kulka wprawiając w ruch wałki równocześnie wprawia w ruch tarczę z otworami, które teraz wraz z układami diod świecących i fotoelementów tworzą optomechaniczny przetwornik ruchu po stole na impulsy elektryczne. Każdy wałek z umieszczoną na nim tarczą odpowiada za jeden z kierunków : lewo-prawo i góra-dół. Tarcza ma szereg otworów na obwodzie, które podczas obrotu zasłaniają i odsłaniają światło z diody świecącej padające na fotoelement. Powoduje to generowanie ciągu impulsów elektrycznych o długości zależnej od przesunięcia myszki.

2.3. STEROWNIK MYSZKI (DRIVER) .

Za obsługę sygnałów przychodzących od myszki odpowiedzialny jest specjalny program obsługi zwany sterownikiem myszki.

Obsługa programowa myszek jest podobna. Możliwe jest wykorzystanie standardowego sterownika - programu obsługi myszki (ang. driver), dostarczonego razem z systemem operacyjnym DOS, o nazwie MOUSE.SYS, lub MOUSE.COM. Jednak zasadniczo różnią się dwa podstawowe standardy myszki : pierwszy nosi nazwę Mouse System Mouse (myszka trzyklawiszowa), zaś drugi Microsoft Mouse (myszka dwuklawiszowa). Istnieją jeszcze rozwiązania niezgodne z powyższymi standardami, ale są one coraz rzadziej stosowane.

Do obsługi myszki należy raczej stosować programy dostarczone razem z nią, ewentualnie z jej standardem. Niemniej jednak, niezależnie od samego sprzętu i sposobu porozumiewania się myszki z pracującym dla niej sterownikiem, sposób jej obsługi programowej jest identyczny (sterownik myszki pełni rolę taką jak BIOS, tzn. pośredniczy pomiędzy różnymi rozwiązaniami sprzętowymi, a programami). Ponieważ większość myszek komunikuje się ze sterownikiem w taki sam sposób, może być obsługiwana przez taki sam sterownik. Większość z nich może pracować w obu standardach.

2.4. KLAWIATURA MYSZKI .

Poza układem przeniesienia ruchu ręki myszka posiada jeszcze dwa lub trzy przyciski, którym przyporządkowana jest funkcja “klawiaturowa”. Lewy przycisk odpowiada najczęściej za klawiszowi ENTER, zaś prawy klawiszowi ESC.

Klawisze te wykonane są z elastycznego tworzywa, przez co możliwe jest ich dociskanie do znajdujących się pod nimi mikroprzełączników. Po wciśnięciu klawisza myszki (mikroprzełącznika) generowany jest niskonapięciowy sygnał, który przesyłany jest do mikrokontrolera.

0x08 graphic

2.5. INTERFEJS SZEREGOWY .

Przetworzone w mikrokontrolerze sygnały z przetwornika ruchu i układu klawiatury przesyłane są do komputera poprzez port szeregowy. W porcie tym wykorzystywana jest jedynie linia danych tego portu, a pozostałe połączenia służą jedynie do zasilania układów myszki.

  1. DCD - sygnalizacja przesyłu danych

  2. RXD - odbiór danych

  3. TXD - transmisja danych

  4. DTR - sygnał gotowości do nadawania

  5. GND - masa

  6. DSR - wstawienie sygnału gotowości do odbioru danych

  7. RTS - żądanie transmisji

  8. CTS - sygnał kasowania transmisji

  9. RI - wskaźnik pierścieniowy

0x08 graphic
0x08 graphic

2.6. MIKROKONTROLER - DEKODER IMPULSÓW ELEKTRYCZNYCH.

Umieszczone na obwodzie każdej z tarcz otworki podczas obrotu tarczy zasłaniają i odsłaniają światło z diody padające na fotoelement. Powoduje to generowanie ciągu impulsów elektrycznych o długości zależnej od przesunięcia myszki. Za dekodowanie tych impulsów odpowiedzialny jest mikrokontroler, którym zwykle jest układ Intel 80C48. Przetwarza on uprzednio wzmocnione sygnały z fotoelementów na postać cyfrową, które następnie przesyłane są do komputera poprzez port szeregowy. Do mikrokontrolera dociera również niskonapięciowy sygnał generowany po wciśnięciu klawisza myszki.

0x08 graphic

2.7. OBSŁUGA MYSZKI.

Przerwanie 33h.

Programowa obsługa myszki odbywa się poprzez przerwanie 33h (Mouse Support). Warunkiem działania tego przerwania jest załadowanie sterownika myszki. Program sterujący dostarczony do myszy instaluje własną procedurę obsługi przerwania 33h procedura ta dostarcza programiście wszystkie usługi potrzebne do wykorzystania myszki zawarte w 30 funkcjach obejmujących wszystkie możliwe opcje obsługi tego urządzenia wskazującego.

Parametry tej procedury umieszcza się podobnie jak przy przerwaniach DOS i BIOS, w odpowiednich rejestrach. Następnie wykonuje się procedurę i w razie potrzeby odczytuje się zwracane wartości z poszczególnych rejestrów.

2.8. FUNKCJE PRZERWANIA 33h MYSZKI.

FUNKCJA

OPIS

00h

Inicjalizacja myszki i sprawdzenie obecności jej sterowania

01h

Wyświetlanie kursora myszki

02h

Ukrycie kursora myszki

03h

Określenie pozycji i stanów przycisków myszki

04h

Określenie pozycji kursora

05h

Określenie liczby naciśnięć przycisków

06h

Określenie liczby zwolnień przycisków

07h

Ustawienie zasięgu poziomego

08h

Ustawienie zasięgu pionowego

09h

Zdefiniowanie kształtu kursora graficznego myszki

0Ah

Zdefiniowanie maski kursora tekstowego myszki

0Bh

Określenie odległości ostatniego przesunięcia

0Ch

Instalacja filtru zdarzeń generowanych przez myszkę

0Dh

Włączenie emulacji pióra świetlnego

0Eh

Wyłączenie emulacji pióra świetlnego

0Fh

Ustawienie prędkości ruchu kursora myszki

10h

Ustawienie granic obszaru ukrycia myszki

13h

Ustawienie maksymalnej prędkości

14h

Zmiana filtru zdarzeń

15h

Określenie rozmiaru bufora statusu myszki

16h

Zapamiętanie statusu myszki

17h

Odtworzenie statusu myszki

18h

Instalacja dodatkowego filtru zdarzeń

19h

Określenie adresu dodatkowego filtru zdarzeń

1Ah

Ustawienie czułości myszki

1Bh

Pobranie czułości myszki

1Ch

Ustawienie częstotliwości przerwań pochodzących od myszki

1Dh

Ustawienie wyświetlanej strony pamięci obrazu

1Eh

Pobranie numeru strony pamięci zawierającej kursor myszki

24h

Pobranie wersji, typu myszki i numeru przerwań (IRQ)

2.9. OPIS WYBRANYCH FUNKCJI PRZERWANIA 33h .

Funkcja 00h - Inicjalizacja myszki i sprawdzenie obecności jej sterowania

Wejście: - AX = 0

Wyjście: - AX <> 0 - mysz zainstalowana

- AX = 0 - mysz nie zainstalowana

- BX - liczba przycisków

Funkcja 01h - wyświetlenie kursora myszki

Wejście: - AX = 1

Wyjście: - brak

Funkcja 02h - ukrycie kursora myszki

Wejście: - AX = 2

Wyjście: - brak

Funkcja 03h - określenie pozycji stanów przycisków myszki

Wejście: - AX = 3

Wyjście: - BX - stan przycisków

- CX - położenie poziome

- DX - położenie pionowe

W BX funkcja zwraca stan przycisków myszy. Informacje o stanie każdego z nich odczytać można testując poszczególne bity otrzymanej wartości:

bit 0 - gdy ustawiony, lewy przycisk wciśnięty,

bit 1 - przycisk prawy,

bit 2 - przycisk środkowy (w trybie PCMouse).

Funkcja 04h - określenie pozycji kursora

Wejście: - AX = 4

- CX = położenie poziome,

- DX = położenie pionowe,

Wyjście: - brak

Funkcja 05h - określenie liczby naciśnięć przycisków

Wejście: - AX = 5

- BX = numer badanego przycisku

(0-lewy, 1-prawy, 2-žrodkowy)

Wyjście: - AX - stan przycisków (jak w usłudze 3h),

- BX - liczba wciśnięć zadanego przycisku od czasu

ostatniego wywołania funkcji,

- CX - położenie poziome kursora podczas ostatniego

wciśnięcia,

-DX - położenie pionowe podczas ostatniego wciśnięcia.

Funkcja 06 - określenie liczby zwolnień przycisków

Wejście: - AX = 6

- BX = numer przycisku.

Wyjście: - AX - stan przycisków (jak w usłudze 3h),

- BX - liczba zwolnień zadanego przycisku od czasu

ostatniego wywołania funkcji,

- CX - położenie poziome kursora podczas ostatniego

zwolnienia,

- DX - położenie pionowe kursora podczas ostatniego

zwolnienia.

Funkcja 07h - ustawienie zasięgu poziomego

Wejście: - AX = 7

- CX = minimalne położenie poziome,

- DX = maksymalne położenie poziome,

Wyjście: - brak

W połączeniu z funkcją 8h pozwala na zdefiniowanie obszaru, w jakim może się poruszać kursor myszy.

Funkcja 08h - ustawienie zasięgu pionowego

Wejście: - AX = 8

- CX = minimalne położenie pionowe,

- DX = maksymalne położenie pionowe.

Wyjście: - brak

W połączeniu z funkcją 7h pozwala na zdefiniowanie obszaru, w jakim może się poruszać kursor myszy.

Funkcja 09h - zdefiniowanie kształtu kursora graficznego myszki

Wejście: - AX = 9

- BX = współrzędna pozioma punktu centralnego,

- CX = współrzędna pionowa punktu centralnego,

- ES:DX = adres obszaru definiującego.

Wyjście: - brak

Funkcja ta pozwala na zdefiniowanie dowolnego kształtu kursora graficznego. Kursor graficzny myszy można opisać dwoma tablicami o wymiarach 16*16 bitów.

Pierwsza tablica to tablica maski, druga to tablica wzorca. Tablica wzorca określa, który z 256 (16*16) punktów kursora ma być zapalony

a który zgaszony.

Funkcja 0Ah - zdefiniowanie maski kursora tekstowego myszki

Wejście: - AX = Ah

- BX = typ kursora

- CX = maska AND lub linia startowa

- DX = maska XOR lub linia końcowa

Wyjście: - brak

W BX umieszcza się wartość odpowiadającą typowi kursora (1 oznacza kursor sprzętowy, 0 oznacza kursor programowy). Dla kursora sprzętowego w parze rejestrów CX i DX umieszcza się odpowiednio początkową i końcową linię kursora (analogicznie jak przy ustawianiu kursora CRT za pomocą usługi BIOS). Inaczej ma się sprawa dla kursora programowego. Wtedy do rejestrów CX i DX wprowadza się maski obrazu i kursora. Znaczenie poszczególnych bitów obu masek przedstawia się następująco:

bit 15 - miganie (1-włączone)

bity 14-12 - kolor tła

bit 11 - rozjaśnienie (1-wąłączone)

bity 10-8 - kolor znaku

bity 7-0 - kod znaku

Przy wyświetlaniu kursora programowego obie maski stanowią o atrybutach znaku znajdującego się pod kursorem. Maska obrazu wyznacza atrybuty nie zmienione, maska kursora - atrybuty do zmiany i sposób ich modyfikacji.

Funkcja0Bh - określenie odległości ostatniego przesunięcia

Wejście: - AX = Bh

Wyjście: - CX - przemieszczenie poziome

- DX - przemieszczenie pionowe

Wartości zwracane w CX i DX są typu Integer. Określają, o ile przemieścił się kursor myszki od ostatniego wywołania tej funkcji.

Funkcja 0Ch - instalacja filtru zdarzeń generowanych przez myszkę

Wejście: - AX = Ch

- CX = maska zdarzeń

- ES:DX = adres procedury obsługi

Wyjście: - brak

Handler myszy udostępnia możliwość programowania asynchronicznej obsługi związanych z nią zdarzeń. Zdarzenia te wywołują przerwanie - program jego obsługi może wykonać skok do zdefiniowanej procedury. Maska (CX) określa, w wyniku jakich zdarzeń procedura ma być wykonywana. Każdy bit jest związany z jednym z nich. Bity odpowiadające interesującym nas zdarzeniom ustawiamy. A oto znaczenie każdego z nich:

bit 0 - zmiana położenia kursora

bit 1 - wciśnięcie lewego przycisku

bit 2 - zwolnienie lewego przycisku

bit 3 - wciśnięcie prawego przycisku

bit 4 - zwolnienie prawego przycisku

bit 5 - wciśnięcie środkowego przycisku

bit 6 - zwolnienie środkowego przycisku

bity 7-15 - nie używane

Funkcja 0Dh - włączenie emulacji pióra świetlnego

Wejście: - AX = Dh

Wyjście: - brak

Funkcja ta nie jest raczej używana, ponieważ niemal wszystkie programy mogące korzystać z pióra świetlnego mogą także obsługiwać mysz.

Funkcja0Eh - wyłączenie emulacji pióra świetlnego

Wejście: - AX = Eh

Wyjście: - brak

Funkcja 0Fh - ustawienie prędkości ruchu kursora myszki

Wejście: - AX = Fh

- CX = współczynnik dla ruchu poziomego

- DX = współczynnik dla ruchu pionowego

Wyjście: - brak

Wielkość współczynników określa stosunek odległości przebytej przez mysz do drogi kursora na ekranie. Im ich wartość jest niższa, tym szybciej porusza się kursor.

Funkcja 10h - ustawienie granic obszaru ukrycia myszki

Wejście: - AX = 10h

- CX = pozioma współrzędna lewego górnego rogu

- DX = pionowa współrzędna lewego górnego rogu

- SI = pozioma współrzędna prawego dolnego rogu

- DI = pionowa współrzędna prawego dolnego rogu

Wyjście: - brak

Funkcja ta pozwala użytkownikowi na zdefiniowanie fragmentu ekranu, wewnątrz którego kursor myszy będzie niewidoczny. W odpowiednich rejestrach podaje się współrzędne dwóch naprzeciwległych rogów tego obszaru.

Funkcja 13h - ustawienie maksymalnej prędkości

Wejście: - AX = 13h

- DX = szybkość przesuwu wyrażona w wielokrotnościach

1/200 cala na sekund

Wyjście: - brak

Funkcja14h - zmiana filtru zdarzeń

Wejście: - AX = 14h

- CX = nowa maska zdarzeń

- ES:DX = adres nowej procedury

Wyjście: - CX - poprzednia wartość maski

- ES:DX - adres poprzedniej procedury asynchronicznej

obsługi zdarzeń

Funkcja 15h - określenie rozmiaru bufora statusu myszki

Wejście: - AX = 15h

Wyjście: - BX - rozmiar pamięci wyrażony w bajtach potrzebny

do zapamiętania aktualnej konfiguracji myszy

Funkcja 16h - zapamiętanie statusu myszki

Wejście: - AX = 16h

- ES:DX = adres bufora, w którym zapamiętana zostanie

aktualna konfiguracja myszy (jego niezbędny

rozmiar można odczytać używając funkcji 15h)

Wyjście: - brak

Funkcja 17h - odtworzenie statusu myszki

Wejście: - AX = 17h

- ES:DX = adres bufora

Wyjście: - brak

Funkcja przywraca ustawienia myszy zapamiętane z pomocą funkcji 16h

Funkcja 18h - instalacja dodatkowego filtru zdarzeń

Wejście: - AX = 18h

- CX = maska zdarzeń dla dodatkowej procedury

- ES:DX = adres dodatkowej procedury

Wyjście: - AX = 0FFFFh oznacza wystąpienie błędu przy instalacji,

nie zmieniona wartość AX sygnalizuje poprawne wykonanie funkcji

Funkcja umożliwia instalację procedur obsługi różnych zdarzeń. W procedurach deklarowanych z pomocą tej funkcji można wykorzystywać przerwania systemowe.

Funkcja 19h - określenie adresu dodatkowego filtru zdarzeń

Wejście: - AX = 19h

- CX = maska identyfikująca dodatkową procedurę

Wyjście: - CX - maska, wartość 0 oznacza, że nie znaleziono

żadnej procedury

- ES:DX - adres znalezionej procedury

Funkcja 1Ah - ustawienie czułości myszki

Wejście: - AX = 1Ah

- BX = pionowa czułość

- CX = pozioma czułość

- DX = szybkość myszy

Wyjście: - brak

Funkcja realizuje "w jednym ruchu" funkcje 0Fh i 13h.

.

Funkcja 1Bh - pobranie czułości myszki

Wejście: - AX = 1Bh

Wyjście: - BX - czułość pozioma

- CX - czułość pionowa

- DX - szybkość przesuwu

Funkcja 1Ch - ustawienie częstotliwości przerwań pochodzących od myszki

Wejście: - AX = 1Ch

- BX = częstość (w przerwaniach na sekund`):

0 - przerwanie myszy nie jest wywoływane

1 - 30 przerwań w ciągu sekundy

2 - 50

3 - 100

4 - 200

Wyjście: - brak

Funkcja 1Dh - ustawienie wyświetlanej strony pamięci obrazu

Wejście: - AX = 1Dh

- BX = numer strony

Wyjście: - brak

Funkcja 1Eh - pobranie numeru strony pamięci zawierającej kursor myszki

Wejście: - AX = 1Eh

Wyjście: - BX - numer strony

Funkcja 24h - pobranie wersji, typu myszki i numeru przerwań (IRQ)

Wejście: - AX = 24h

Wyjście: - BX - numer wersji sterownika

(BH zawiera numer główny, BL - numer dodatkowy)

- CH - typ myszy

- CL - poziom przerwania sprzętowego myszy (0 dla PS/2)

3. PRZEBIEG ĆWICZENIA .

Przykładowe programy wykorzystujące przerwanie 33h.

3.1. Program sprawdzający zainstalowanie sterownika myszki.

procedure inicjacja;

var r:register;

begin

clrscr;

r.ax:=0;

intr($33,r);

if r,ax<>then

writeln('Mysz zainstalowana');

else

write('Mysz nie została zainstalowana');

readkey;

end;

3.2. Program wyświetlający kursor myszy w dowolnej pozycji ekranu.

procedure inicjacja;

var r:register;

a,b:integer;

begin

repeat

begin

readln(a);

readln(b);

clrscr;

r.ah:=$01;

r.ax:=1;

intr($33,r);

r.ah:=$04;

r.ax:=4;

r.cx:=a;

r.dx:=b;

writeln(r.cx);

writeln(r.dx);

delay(100);

end;

until keypressed;

end;

3.3. Ustalenie szybkości przesuwania myszki

procedure MouseSpeed (x : integer);

var

regs:registers;

begin

regs.ax:=$13;

regs.dx:=x;

intr($33,regs);

end;

MINIKONTROLER /

DEKODER IMPULSÓW LELKTRYCZNYCH

KLAWIATURA

MYSZKI

UKŁAD

WZM.

OPTOMECHANICZNY PRZETWORNIK RUCHU NA IMPULSY ELEKTRYCZNE

INTERFEJS SZEREGOWY

STEROWNIK MYSZKI

/DRIVER/



Wyszukiwarka

Podobne podstrony:
pptnr 1 budowa komputera
BUDOWA KOMPUTERA PC
INFORMATYKA - budowa komputera itp, Szkoła, Informatyka
ogolna budowa komputera
budowa komputera, Informatyka
Budowa komputera na 6
Budowa komputera test
Budowa komputera, Płyta główna
Jednostki budowa komputera
Praca końcowa-Budowa komputera, Informatyka -all, INFORMATYKA-all
Budowa komputera 2
Budowa komputera, Obudowa
Budowa komputera, Urządzenia wejścia
budowa komputera notka
Budowa komputera 1
Budowa komputera(1)
Budowa komputera-1, Studia - Materiały, notatki, Zarządzanie, Urządzenia techniki kopmputerowej

więcej podobnych podstron