Párhuzamos port vezérlése



Párhuzamos port lábkiosztása:

  1. vezérlőreg. bit 0
  2. adatreg. bit 0
  3. adatreg. bit 1
  4. adatreg. bit 2
  5. adatreg. bit 3
  6. adatreg. bit 4
  7. adatreg. bit 5
  8. adatreg. bit 6
  9. adatreg. bit 7
  10. állapotreg. bit 6
  11. állapotreg. bit 7
  12. állapotreg. bit 5
  13. állapotreg. bit 4
  14. vezérlőreg. bit 1
  15. állapotreg. bit 3
  16. vezérlőreg. bit 2
  17. vezérlőreg. bit 3
  18. GND
  19. GND
  20. GND
  21. GND
  22. GND
  23. GND
  24. GND
  25. GND
25 pólusú SUB-D csatlakozó



A párhuzamos port TTL szinteket használ:
A szabványos TTL feszültségszintek
Ut L be H be L ki H ki
5V ± 10% 0-0,8V 2-5V 0-0,4V 2,4-5V



Adatport: (Báziscím+0)

Regiszter bitjei:

B7

B6

B5

B4

B3

B2

B1

B0

Csatlakozószám:

9

8

7

6

5

4

3

2



Nyomtatóstátusz: (Báziscím+1)

Regiszter bitjei:

B7

B6

B5

B4

B3

B2

B1

B0

Csatlakozószám:

11

10

12

13

15

L

L

L


Az alsó 3 bit nulla állapotot ad fixen, ha kiolvassuk, a maradék öt bit bemenetként szolgál.


Nyomtatóstátusz/vezérlés: (Báziscím+2)

Regiszter bitjei:

B7

B6

B5

B4

B3

B2

B1

B0

Csatlakozószám:

L

L

L

IRQ-eng

17

16

14

1


B0-B3 kimenetek, B4 egy vezérlőjel, mely a porton nem jelenik meg.



A port programozása:

A port vezérlésehez egy kicsit érteni kell valamilyen programnyelven, ez a minimum, de aki az elektronikával foglalkozik, annek ez nem probléma. A portot legegyszerűbben Assembly nyelven vezérelhetjük, magyarul közvetlen utasításokat adunk a processzornak. A legtöbb programozási nyelvben van beépített assembler. A port programozásakor volt egy kis gondom, mert Window$XP-ben eleinte nem működött. Régebben W'98-ban probáltam, ott ment normálisan. Akinek XP-je van, és hasonló problémái, annak ajánlom az UserPort programot.


Bitek kiküldése a portra:

Ahol az [adat] a kiküldendő értéket jelenti, decimálisan, 0..255-ig, a [port címe] ahová küldjük. Ez általában $378 hexában, decimálisan 888.

mov al, [adat]
mov dx, [port címe]
out dx, al


Bitek beolvasása a portról:

A [port címe] ahonnan olvasunk(általában $379(h), 889(d)), a bejövő adat (decimális változó).

mov dx, [port címe]
in al, dx
mov [adat], al



A kimenetek leválasztása

Leválasztásra azért van szükség, hogy nehogy túlterheljük a portot. A port ledsor közvetlen vezérlésére alkalmas, de nagy terhelést nem bír. Ezért ha nagyobb áramfelvételű eszközt akarunk vezérelni, leválasztást kell alkalmazni. Ez lehet:

- Relés: viszonylag egyszerű megoldás, de mivel a port 5V-ot ad le, nem tud minden relét meghúzni, ezért tranziszor(ok)kal erősíteni kell a feszültséget. A relé tekercsének 2 kivezetésére célszerű diódát kötni (polaritáshelyesen), mert a tekercsben nagy áram indukálódhat, ami tönkreteheti a portot.

- Optocsatolós: ez a legbiztonságosabb módszer. Az optocsatoló fénnyé alakítja a bemenő feszültséget, és vissza elektromos jellé. Egy LED és egy fototranzisztor található benne, és a fototranzisztor a LED világításakor kapcsol.


- Tirosztoros: Nagyobb feszültségű eszközöket is lehet vele vezérelni. A tirisztor tulajdonképpen egy dióda. Az áramot akkor vezeti, ha vezérlő elektródájára feszültséget kapcsolunk. Ilyenkor a tirosztor "be van kapcsolva". A tirisztor vezetése akkor szűnik meg, ha az anód és a katód között nem folyik áram.