Sterowanie portem LPT

Stronę tą wyświetlono już: 1266 razy

Z pomocą biblioteki inpout32.dll można sterować ustawieniem ośmiu pinów portu LPT1, co też i uczyniłem tworząc program do sterowania ustawieniami tego portu. Oczywistym jest fakt, że aby możliwe było sterowanie portem LPT1 trzeba posiadać komputer weń wyposażony, a jako że mam starego grata, który jest wyposażony w ów port więc postanowiłem się nim troszeczkę pobawić w włączanie i wyłączanie diod przeze mnie tam wlutowanych.

Wewnątrz biblioteki znajdują się dwie funkcje, które wykorzystuję perfidnie w programie, a są to funkcje:

Listing 1
  1. short Inp32(short PortAddress);
  2. void Out32(short PortAddress, short data);

Pierwsza funkcja zwraca ustawienie rejestru danych portu LPT1, zaś druga ustawia rejestr danych portu LPT1. Zmienna PortAddress to oczywiście adres rejestru danych portu LPT1, który został przeze mnie ustawiony na sztywno na wartość 0x378, albowiem w znacznej części przypadków ów port ma właśnie taki adres, jeżeli u Ciebie jest inaczej, to zapytaj wujka Google jak zdobyć adres Twojego portu LPT1.

Na rysunku 1 przyciski od 1 do 8 służą do załączania pinów portu LPT1 od 2 do 9. Przycisk symulacja włącza i wyłącza zegar symulacji, zaś przycisk dodawanie ustawia symulację w trybie dodawania wartości. Z kolei przycisk bitowe przemieszczenie ustawia symulację w tryb przesuwania bitowego.

Screen programu sterującego portem LPT1.
Rys. 1
Screen programu sterującego portem LPT1.

Port LPT1 posiada trzy ośmiobitowe rejestry:

  1. Rejestr danych - do którego się odwołuję w programie i którego ustawieniami w nim steruję;
  2. Rejestr statusowy - przeznaczony tylko do odczytu;
  3. Rejestr kontrolny - można zapisywać i odczytywać ustawienia.

Rejestry i przypisanie ich bitów do pinów kabla LPT zostały rozrysowane na rysunku 2, gdzie również można odczytać przesunięcie adresu dla danego rejestru względem adresu bazowego, który zazwyczaj ma adres 0x378.

Rejestr danych portu <b>LPT</b>.
Rys. 2
Rejestr danych portu LPT.

W rejestrze kontrolnym bit 5 jest bitem przełączającym w stan wysyłania/odbierania informacji. A więc, gdy RK & 64 == 0, to port jest ustawiony na wysyłanie informacji, w przeciwnym przypadku na odbiór. Niestety tylko porty zgodne z IBM są dwukierunkowe.

Wideo prezentacja programu

Załączniki:

Sterowanie portem LPT

Komentarze