Descrierea portului
Portul pentru joystick este proiectat ca o interfaţă cu două joystick-uri analogice. Fiecare joystick are două butoane.
În mod frecvent, portul joystick nu este integrat ca o componentă a plăcii de bază. Portul joystick este implementat în plăcile multi-I/O sau în plăcile de sunet. Conectorul portului permite controlul a două joystick-uri în acelaşi timp. Este foarte uşor de remarcat dacă portul joystick este prezent în PC-ul dumneavoastră. El este singurul conector cu 15 pini care se găseşte la PC în spatele acestuia.
La joystick sunt ataşaţi doi potenţiometri de 100 kohmi. Unul dintre aceştia îşi schimbă valoarea cu schimbarea poziţiei stick-ului de-a lungul axei X. Celălalt potenţiometru execută acelaşi lucru pe axa Y. Orice schimbare a valorii potenţiometrului schimbă frecvenţa semnalului digital generat. Pentru conversia rezistenţă – frecvenţă, se foloseşte un circuit NE558. Această componentă este similară cu binecunoscutul NE555, însă NE558 conţine patru timeri integraţi în acelaşi circuit integrat. Câte doi timeri sunt utilizaţi pentru fiecare joystick. Un semnal indică coordonata X a joystick-ului, iar un al doilea coordonata Y.
Perioada semnalelor poate fi calculată prin formula de mai jos:
T = 10 x R + 24.2
unde R este valoarea rezistenţei în kW şi T este perioada în microsecunde.
Valoarea potenţiometrilor este de 100 kW astfel, perioada maximă este de 1024 microsec., iar perioada minimă este de 24.2 microsec.
Locaţia portului
Joystick-ul este poziţionat la adresa 201 H în spaţiul de adrese al porturilor I/O.
Prin scrierea oricărei valori la adresa portului joystick, timer-ele încep să genereze pulsuri.
Citind acest port obţinem un octet. Nivelul mai puţin semnificativ indică starea ultimelor patru impulsuri primite.
Semnificaţia fiecărui bit al portului este arătată în tabelul următor:
Pentru a citi poziţia joystick-ului se poate folosi funcţia 84H a întreruperii 15H în BIOS.
Programarea portului
Programul din pagina WEB exemplifică o modalitate de citire a stării butoanelor şi a poziţiei joystick-ului. Funcţia principală este utilizată pentru afişarea poziţiei joystick-ului şi a stării butoanelor. Funcţiile: GetJoyButton(); şi GetJoy Pos(); funcţionează în acelaşi fel. Acestea recurg la funcţia 84H din BIOS.