LPT Port Switch
Presa franceză , pune întrebări incomode care ar putea face lumină în plandemia
Robotul ADN ar putea ucide celulele canceroase
SARS a fost o boală relativ rară; la sfârșitul epidemiei, în iunie 2003
Ttatăl fondator al Uniunii Europene.
This
is a very easy and fun to build project that will allow you to control
up to eight external devices through your computer's parallel port. You
may for instance control different appliances such as lamps, computers,
printers, tv sets, radios, music systems, air conditioners, air fans,
garden sprinklers and anything else you can think of, all through your
computer.
You can do a simple test by connecting a LED directly to a ground and any PINs 2 through 9 of your parallel port. The voltage on the parallel connectors is around 4.5V but it drops to around 2V once you connect the LED. You may use a 100 Ohm resistor if you want to, but it is not necessary since the current is very low. |
The Parallel Port Controller is
very easy to use and gives you a visual of which devices are turned ON
or OFF.
In the future versions you will be able to
program at what time a particular device should be turned on or off. If
you should have any suggestions for any additional features please let
us know. Portul paralelDescrierea portului. Portul paralel este proiectat pentru a conecta o imprimantă la computer. Este utilizat pentru CPU pentru a trimite date către imprimantă. În această interfaţă se regăsesc atât semnale de intrare cât şi de ieşire. Scopul acestor semnale este de a avertiza computerul asupra stării imprimantei şi de a o controla. Opt biţi de date transferă toate informaţiile trimise la fiecare impuls de ceas. Hardware-ul acestui port este format din 8 biţi de date ieşiri, 5 biţi de control intrări şi 5 biţi de control ieşiri. Semnalele de control sunt listate mai jos: Ieşiri: STROBE/: Comunică imprimantei când cei opt biţi de date sunt gata pentru a fi citiţi. Este trecut pe nivelul logic “0” când datele sunt pregătite. INIT/: Resetează imprimanta. SLCT IN/: Selectează imprimanta când acest semnal ajunge la nivelul logic “0”. AUTO FD/: Comunică imprimantei să imprime o linie goală urmată de revenirea pe poziţia de repaus a capului de printare. D0-D7: Biţi de date. Intrări: ACK/: Comunică CPU-ului faptul că datele au fost corect recepţionate. BUSY: Imprimanta setează acest semnal când buffer-ul de recepţie este plin. Computerul va înceta să mai transmită date. SLCT: Comunică computerului prezenţa imprimantei. ERROR/: A survenit o eroare. CPU nu mai transmite date. PE: Imprimanta nu mai are hârtie. Toate aceste semnale apar la un conector cu 25 pini. Toţi biţii prezintă nivele logice TTL. Adresarea portului (vezi Tabelul 1.1) BIT FUNCTION PIN D0 data 0 2 D1 data 1 3 D2 data 2 4 D3 data 3 5 D4 data 4 6 D5 data 5 7 D6 data 6 8 D7 data 7 9 Sub sistemul de operare MS-DOS se pot gestiona trei porturi paralele denumite LPT1, LPT2 şi LPT3. Deci, putem găsi trei adrese dedicate acestor porturi în memoria PC-ului. Vom studia pentru început adresele dedicate LPT1. Fiecare port paralel utilizează trei adrese ale listei I/O. Pentru LPT1 aceste adrese sunt 378H, 379H şi 37AH. Portul 378H: La această adresă CPU scrie datele care urmează a fi transmise către imprimantă. Portul este unul de ieşire. Cei opt biţi de date (D0-D7) apar în conectorul de ieşire. În tabelul 1.1 putem observa care pini ai conectorului sunt utilizaţi. Portul 379H: Acesta este un port de intrare. Semnalele conţinute sunt utilizate de către CPU pentru a afla starea imprimantei. Locaţia acestor biţi este listată în tabelul 1.2. Data Bits Table BIT FUNCTION PIN D0 not used D1 not used D2 not used D3 ERROR/ 15 D4 SLCT/ 17 D5 PE 12 D6 ACK/ 10 D7 BUSY/ 11 Portul 37AH: În acest port computerul scrie semnalele care controlează imprimanta. Prin urmare, acesta este un port de ieşire, vezi tabelul 1.3. Data Bits Table Control Bits Table BIT FUNCTION PIN D0 STROBE 1 D1 AUTO FD 14 D2 INIT/ 16 D3 SLCT IN/ 17 D4 Habilitation IRQ7 D5 not used D6 not used D7 not used Computerul are trei porturi LPT. Adresele semnalelor de control şi de date pentru fiecare port LPTn sunt listate mai jos. Fiecare port lucrează în acelaşi fel ca şi LPT1. După cum se poate observa, portul paralel este capabil să controleze canalul de întreruperi IRQ7l. Aceasta este o calitate de bază a portului. În continuare vom prezenta modul de utilizare a acestui semnal. Adresses of LPTn Tabelul 1.4 PORT DATA STATUS CONTROL LPT1 378H 379H 37AH LPT2 278H 279H 27AH LPT3 3BCH 2BDH 3BEH Programarea portului Programele de mai jos sunt exemple despre cum se poate programa portul paralel. Sunt toate compilate cu compilatorul Borland C++ 3.1. Primul program arată cum să transmiţi un octet către adresele de ieşire ale portului paralel. Este o operaţie foarte uşoară. Funcţia outportb(); trimite un octet către un port I/O specificat. Primul parametru al funcţiei este adresa portului în care se scrie un bit. Al doilea parametru este valoarea octetului ce se transmite. Ambii parametri pot fi definiţi ca variabile. În acest caz primul parametru trebuie să fie de tip unsigned int, iar cel de-al doilea de tip unsigned char. #include #include #include /********************************************/ /*This program set the parallel port outputs*/ /********************************************/ void main (void) { clrscr(); outportb(0x378,0xff); outportb(0x37a,0xff); getch();} Cel de-al doilea exemplu arată cum se poate efectua citirea unui octet de la adresa de intrare a portului paralel. Funcţia principală este utilizată pentru a arăta valoarea octetului pe ecran. Funcţia inportb(); citeşte un octet de la adresa I/O specificată de computer. Parametrul trebuie să fie de tip unsigned int. #include #include #include /***********************************/ /*This function read parallel port inputs*/ /***********************************/ int Read_Input() {int Byte; Byte=inportb(0x379); return Byte;} void main (void) {int PP_Input; clrscr(); PP_Input = Read_Input; printf("%d",var); getch();} |