Microsoft Word - Programarea Portului Paralel - IBM-PC. .doc

Documente similare
Interfețe și Protocoale de Comunicații Arduino-Port Paralel Arduino. Laborator 1- Portul Paralel 1 Caracteristici generale Arduino UNO este o placă de

Microsoft Word - 4-Interfete paralele.doc

Lucrarea 10

Cartelele telefonice

PowerPoint Presentation

Kein Folientitel

1

PowerPoint-Präsentation

Ch

PowerPoint-Präsentation

Controlerul LCD

Modul Modbus ASCII SISTEME DE COMUNICATIE CURS 5 - Constantinescu Catalin Atunci cand se foloseste modul MODBUS ASCII fiecare octet din mesaj

fm

Universitatea Transilvania Braşov Facultatea de Inginerie Electrică şi Ştiinţa Calculatoarelor Catera de Electronică şi Calculatoare Construcţia şi de

Microsoft Word - Laboratorul 3.doc

untitled

PowerPoint Presentation

Cuprins

PowerPoint-Präsentation

Microsoft Word - intro_msp430.doc

Ghid de referinţă rapidă pentru Seria ZT400™

TM200 Live Tour guide Sistem audio mobil Sistemul de comunicare audio Tour guide este util in cel putin 3 situatii si vine cu avantaje clare: 1) Cand

Limbaje de Programare Curs 8 – Fisiere


Operatorii in C Expresii Operatori aritmetici Operatori de asignare Operatori de incrementare si decrementare Operatori relationali Operatori logici O


Microsoft PowerPoint - TDRC_II-10-TCP.ppt

EW-7416APn v2 & EW-7415PDn Ghid de instalare Macintosh / v2.0 0

SEKA GPRS BUS Modul GPRS BUS nativ S.C. SECPRAL COM SRL Mihai Limbăşan Revizie manual: v iulie 2009 Rezumat Documentul de faţă descrie instalare

Gestionarea I/E

Limbaje de Programare Curs 6 – Functii de intrare-iesire

Lucrarea nr

MIdland CT210 manual

Microsoft Word - CarteC.doc

Distribuitor Ethernet

AVS5010.indd

Print

Ghid de Referință Explicații sumare ale operațiunilor de rutină HL-L2312D HL-L2357DW HL-L2352DW HL-L2372DN HL-L2375DW Brother recomandă să păstrați ac

WorkCentre M123/M128, WorkCentre Pro 123/128, CopyCentre C123/128 Ghid de Configurare Rapidă pentru Reţea

LUMINIŢA SCRIPCARIU

PROCESOARE NUMERICE DE SEMNAL

VLT® AQUA Cascade Contr. Manual SW1.00

Lab6LCD

BC-2000 Control Acces

Laborator - Configurarea Rutelor IPv4 Statice și Implicite Topologie Tabela de Adresare Echipame nt Interfață Adresă IP Masca de subreţea Default Gate

BDV-EF1100

SUBPROGRAME

Senzor inductiv de deplasare liniară

Laborator 2: Instrucţiuni Java şi lucru cu şiruri de caractere Întocmit de: Adina Neculai Îndrumător: Asist. Drd. Gabriel Danciu 18 octombrie 2011

Programarea şi utilizarea calculatoarelor

Clemă de alimentare Ethernet

Microsoft Word - Caiet sarcini statii de lucru - nov 2015.doc

LABORATOR I

RECEIVER DIGITAL HD CU FUNCŢIE DE ÎNREGISTRARE Manualul utilizatorului

Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Pu

Laborator 2 - Încapsularea Programare Orientată pe Obiecte Tema 2.1 Să se analizeze programul EX2.C Indicatii 2.1 A nu se uita de fisierul EX2.H Tema

Sisteme cu FPGA şi Soft Processors

L7

Prezentarea PC-ului portabil Ghidul pentru utilizator

Înregistraţi produsul achiziţionat şi veţi putea beneficia de suport pe pagina CD250 CD255 SE250 SE255 Ghid de iniţiere rapidă

Microsoft Word - PCLP2_Curs_4_2019.doc

Ghidul pentru utilizatorul computerului Compaq Mini

Microsoft PowerPoint - ARI_R_c9-10_IP_part2 [Compatibility Mode]

PowerPoint-Präsentation

Minicurs CCS C / Aplicatia1 1.Programul CCS C Compiler. Instalare.Creare proiect. Descarcati ultima versiune a programului de

Modul multiprotocol I/O compact pentru Ethernet

LUCRAREA NR

Slide 1

Produkt-Datenblatt

Microsoft Word - Prezentare - A4 - cernavoda.doc

PowerPoint Presentation

Laborator 1 suport teoretic Mediul de dezvoltare Eclipse GLOSAR - Aplicaţie: program obţinut în urma aplicării operației BUILD asupra unui proiect (ve

Midland 278 manual

PPSD

Limbaje de programare Pointeri. Alocare dinamică (continuare) 26 noiembrie 2012

PowerPoint Presentation

Dot Matrix Display Module and

ep0149

în Tabletă convertibilă GHID DE UTILIZARE 8085 LKB001X CJB1FH002AZA

Ghid de instalare Powerline 500, model XAVB5221

BOXA PORTABILA cu Bluetooth si FM-radio MANUALUL UTILIZATORULUI PS-460 PS-470

Microsoft Word - Plus TV Analog Pro Stick Installation _Rom V1.3_.doc

FOV03R Senzori fotoelectric reglabil tip furca. ro

Slide 1

Microsoft Word - Controller pt 32cp0123,140,160-manual_ro .docx

Analiză statică Analiza fluxului de date 23 octombrie 2014

Microsoft Word - IngineriF_A.DOC

Gateway Cloud Turck

ALGORITMII ŞI REPREZENTAREA LOR Noţiunea de algoritm Noţiunea de algoritm este foarte veche. Ea a fost introdusă în secolele VIII-IX de către Abu Ja f

Adresarea memoriei Modurile de adresare constituie un instrument principal pentru reprezentarea în memorie a imaginii datelor, aşa cum este ace

Student: Mădălina-Maria Mitricioaei Titlul proiectului: IOT Sensor Hub Rezumat

DCP330C_540CN_QSG_ROM.book

Microsoft Word - RECEPTOR CD 202E

D6300 WiFi ADSL Modem Router Installation Guide Cover

Guardian2012_RO3

Modulul 1 M1-2.3 Protocoale şi servicii în reţea În acest capitol ne propunem să abordăm următoarele: Protocoalele şi aplicaţiile folosite în reţelele

Lucrarea 11. IoT Internet of Things - Accesul prin Internet la obiecte sau dispozitive simple 1. Obiectivul lucrarii Lucrarea isi propune sa studieze

Paradigme de Programare

Slide 1

Modul multiprotocol I/O compact pentru Ethernet

Transcriere:

Lucrarea 1. Programarea Portului Paralel - IBM-PC. 1. Introducere. Lucrea are ca scop familiarizarea cu portul paralel al PC-ului, descriindu-se structura portului parelel, configuraţia acestuia, regimurile de funcţionare şi modalitaţi de programare, precum şi exemple de utilizare. Pentru programarea portului paralel se va utiliza un limbaj de programare avansat ( C++) rulând în modul MS_DOS. Compania IBM, începâd cu IBM-PC, a introdus portul paralel de imprimare standard SPP (Standard Parallel Port), în prezent mai putin utilizat ca atare. Acest port utilizează un conector standard DB-25S mamă (female) ataşat PC-ului, care prin intermediul unui "IBM printer cable" (ce realizează o conexiune între un conector tata (male) DB-25P şi un conector tata cu 36 pini tip CENTRONICS), se conectează la o imprimantă Centronics standard. În prezent Portul Parelel este standardizat prin standardul IEEE 1284, standard ce defineşte următoarele moduri de funcţionare: 1. Compatibility Mode(SPP) 2. Nibble Mode 3. Byte Mode (Bi-directional) 4. EPP Mode (Enhanced Parallel Port) 5. ECP Mode (Enhanced Capabilites Port) Idea de bază a acestui standard a fost de a utiliza noi dispozitive şi drivere, compatibile unul cu celălalt si de asemenea compatibile cu SPP (Standard Parallel Port). Modurile Compatibility, Nibble & Byte pot fi implementate utilizând suportulul hardware disponbil pe placile aferente SPP. În schimb, modurile EPP şi ECP necesită un suport hardware adiţional care să asigure viteze mai mari de funcţionare şi care să asigure şi compatibiltatea cu SPP. Modul Compatibilty (sau Centronics) permite transmiterea datelor într-o sigură direcţie, de la PC catre exterior, la o viteză standard de 50KByte/sec. Pentru a realiza recepţia datelor din exterior modul de funcţionare trebuie schimbat fie în modul Nibble fie în modul Byte. În modul Nibble portul poate receptiona/transmite un "nibble" (4 biţi) de la/la un dispozitiv extern. Pentru a realiza acest lucru, modul Nibble va utiliza 4 din cele 5 pini de stare ai portului pentru recepţie şi 4 pini ai portului control pentru transmisie. Modul Byte utilizează caracteristica de bidirecţionalitate a portului paralel, realizând transmisia/receptia datelor la nivel de octet (8 biti). Observaţie: Activarea(selectarea) modului de funcţionare al portului paralel se realizează prin configurarea corespunzătoare a BIOS-ului(Setup). 2. Descrierea Portului Paralel 2.1. Caracteristici Hardware Tabelul 1 prezintă desrierea pinilor unui conector D-SUB25 (25 pini) şi a unui conector cu 34 pini tip Centronics. 0

Tabelul 1. Pin No (D-Type25) Pin No (Centronics) Semnale SPP Directie In/out Registru Inversare Hardware 1 1 nstrobe In/Out Control Yes 2 2 Data0 Out Data 3 3 Data1 Out Data 4 4 Data2 Out Data 5 5 Data3 Out Data 6 6 Data4 Out Data 7 7 Data5 Out Data 8 8 Data6 Out Data 9 9 Data7 Out Data 10 10 nack (Confirmare) In Stare 11 11 Busy (Ocupat) In Stare Yes 12 12 Paper Out In Stare 13 13 Select (Selecţie) In Stare 14 14 nautofeed (Salt la rind nou- automat) In/Out Control Yes 15 32 nerror In Stare 16 31 ninitialize (Iniţializare printer) In/Out Control 17 36 nselect-in In/Out Control Yes 18-25 36 Ground GND Observaţii: 1. Litera "n" din faţa numelui semnalelor semnifică faptul că semnalul respectiv este activ LOW (în "0L"). 2. Prin "Inversare Hardware" se înţelege că semnalul respectiv este inversat intern de catre portul paralel. (Ex.: Linia Busy. Dacă se aplică 5V (1L) pe acest pin şi apoi este citit Registrul de Stare, bitul 7 al acestuia, ce corespunde semnalului Busy va fi 0.) 3. Ieşirile portului parelel se încadrează în standardul TTL (0V-0.8V=Low; 2.4V- 5V=High). Curentul absorbit sau debitat (Sink & Source Current) variază de la un port la altul. Cel mai adesea un port paralel poate debita/absorbi in jur de 15mA(I OH /I OL ). 2.2. Adresele porturilor Fiecare port paralel este definit prin: - Adresa de bază I/O ( I/O Base Adress); - Numar specific LPTx; Portul paralel are trei adrese de bază uzual folosite. Acestea sunt prezentate în Tabelul2. Adresa 3BCh a fost prima introdusă, fiind utilizată de porturile paralele ale vechilor placi video. În prezent ea a aparut ca o opţiune pt. porturile paralele integrate pe plăcile de bază şi controlate de BIOS. LPT1 este în mod normal asignat la adresa 378h, iar LPT2 la 278h. (Pot exista situaţii care se abat de la aceasta regulă - caz explicat în paragrafele următoare) 1

Tabelul 2: Adresă 3BCh - 3BFh 378h - 37Fh 278h - 27Fh Comentarii: Utilizată de porturile paralele incorporate în vechile placile video. În prezent reprez. o opţiune pentru porturile controlate de BIOS. Adresa uzuală pt. LPT1 Adresa uzuală pt. LPT2 Când un calculator este pornit (la reset), BIOS-ul (Basic Input/Output System) va determina numărul de porturi paralele existente şi le va asigna un număr specific (etichetă) LPT1, LPT2 & LPT3. La inceput, BIOS-ul se va "uita" la adresa 3BCh. Dacă la această adresă este găsit un port paralel el este asignat ca LPT1; apoi BIOS-ul analizează adresa 378h. Daca un port paralel a fost gasit la aceasta adresa, el îi va asigna urmatoarea etichetă care poate fi LPT1 dacă la adresa 3BCh nu exista un port paralel sau LPT2 daca la adresa 3BCh se găseşte un port. Ultima adresa verificată este 278h, urmându-se aceeaşi procedură ca în cazul celorlalte 2 porturi. BIOS-ul IBM defineste o zonă de memorie în RAM-ul intern, începînd cu adresa 0000:0408, folosită pentru memorarea adreselor de bază a maxim patru porturi paralele. Fiecare adresă de bază a porturilor este memorată folosind 2 octeţi. Locaţiile de memorie aferente porturilor neutilizate vor fi completate cu 0. Tabelul 3 prezintă adresa în zona de date BIOS unde poat fi gasite adresele de bază ale porturilor paralele. Tabelul3: Adresă de start Descriere 0000:0408 Adresa de bază LPT1 0000:040A Adresa de bază LPT2 0000:040C Adresa de bază LPT3 0000:040E Adresa de bază LPT4 Notă: Aplicaţia 1 prezintă modul de scanare a zonei de date BIOS şi identificarea porturilor paralele prezente. 2.3. Registrele aferente portului paralel (modelul programator) Fiecare port de imprimare este alcătuit din trei adrese de port, numite generic: de date, de stare şi de control. Aceste porturi se afla la adrese de memorie consecutive. Structura registrelor aferente portului precum şi distribuţia semnalelor este prezentată în figura următoare: Registrul de date Adresa de bază, denumită uzual Port de Date sau Registru de Date, este utilizată în general pentru transmiterea datelor pe liniile de date ale portului paralel (Pinii 2-9). În mod normal acest port este un port de iesire(scriere). În urma citirii acestui port se va obţine ultimul octet înscris. Observaţie: Portul de date poate fi configurat ca fiind şi bi-direcţional (Bit5 - Registrul de Control), mod prin care se pot recepţiona date din exterior. 2

Tabelul 4. Registrul de date Offset Nume Read/Write Bit No. Proprietăţi Bit 7 Data 7(Pin 9) BASE+0 Data Port Write (*) Bit 6 Data 6 (Pin 8) Bit 5 Data 5 (Pin 7) Bit 4 Data 4 (Pin 6) Bit 3 Data 3 (Pin 5) Bit 2 Data 2 (Pin 4) Bit 1 Data 1 (Pin 3) Bit 0 Data 0 (Pin 2) (*) Dacă portul este bi-direcţional atunci sunt permise şi operaţii de citire. Registrul de stare Portul de Stare (Adresă Bază +1) este un port de intrare( citire). Orice data scrisă în acest port va fi ignorată. Portul de stare este compus din 5 biţi corespunzători pinilor 10,11,12,13 &15, un bit IRQ pentru intreruperi (fără corespondenţă pe pinii portului) şi 2 biţi rezervaţi. Dacă bitul IRQ este 1 atunci nu s-a semnalat nici o întrerupere. Tabel 5. Registrul de stare Offset Nume Read/Write Bit No. Proprietăţi Bit 7 Busy BASE+1 State Port Read Bit 6 Ack Bit 5 Paper Out Bit 4 Select In Bit 3 Error Bit 2 IRQ (Not) Bit 1 Reserved Bit 0 Reserved Registrul de control Portul de control (Adresă de bază+2) a fost planificat să fie un port de scriere. Cînd o imprimantă este ataşată unui PC, sunt necesare 4 semnale pentru a o controla (comanda). Acestea sunt: Strobe, Auto Linefeed, Initialize şi Select Printer (exceptând Initialize toate sunt "Inversate hardware"). În mod normal imprimanta nu ar trebui să trimită semnale pentru a controla un PC. Totuşi aceste 4 ieşiri pot fi utilizate şi ca intrări. Acest lucru este posibil datorită faptului că aceste linii au ieşirile tip "open colector" (colector în gol). In mod normal o placă de I/O are rezistenţele de "pull-up" conectate intern. 3

Configurarea pinilor ca intrari se realizează prin scrierea registrului cu xxxx0100, rezultând un nivel de 1 (+5V) la ieşirile acestora, astfel încât un dispozitiv extern să-l poată "coborî" (pull down) în 0. Biţii 4&5 sunt biţi de control intern. Bitul 4 va activa IRQ; bitul 5 va activa caracteristica de bidirecţionalitate a portului de date. Biţii 6&7 sunt rezervaţi. Orice scriere a acestora va fi ignorată. Tabelul6. Registrul de control Offset Nume Read/Write Bit No. Proprietăţi Bit 7 Rezervat BASE + 2 Control Port Read/Write Bit 6 Rezervat Bit 5 Enable bi-directional Port Bit 4 Enable IRQ Via Ack Line Bit 3 Select Printer Bit 2 Initialize Printer (Reset) Bit 1 Auto Linefeed Bit 0 Strobe 3. Aplicaţii ale portului parallel. Aplicaţia 1: Identificarea porturilor paralele prezente într-un PC. Următorul program scris în C, prezintă modul în care pot fi citite aceste locaţii de memorie ale BIOS-ului pentru a obţine adresele porturilor paralele. //IDENTIFICARE PORTURI PARALELE #include <stdio.h> #include <dos.h> void main(void) unsigned int far *ptraddr; /*Pointer locatia Adresei Porturilor*/ unsigned int address; /* Adresa porturilor */ int a; ptraddr=(unsigned int far *)0x00000408; for (a = 0; a < 3; a++) address = *ptraddr; /* se testează existenta portului */ if (address == 0) printf(" Nici un port asignat pt. LPT%d \n",a+1); else printf("adresa asignata pt. LPT%d este %Xh\n",a+1,address); ptraddr++; Aplicaţia 2: Testarea portului parelel de imprimare. Figura următoare prezintă un circuit de test foarte simplu care are rolul de a pune în evidenţă o parte din caracteristicile portului paralel (nivelul de activare al semnalelor, inversiunile hardware). Programul TEST_PTR.C realizează o comutare secvenţială On/Off a celor 12 LED-uri, iar apoi într-o buclă afişează starea celor 5 comutatoare de intrare. 4

/* TEST_LPT.C ** ** Program pentru testarea a 12 iesiri si 5 intrari. ** ** Programul comuta secvential LED-urile Off utilizind bitii 7,6,5,..0 ** ai Portului de Date si apoi Bitii 3,2,1 and 0 ai Portului de Control ** Fiecare LED este mentinut stins aprox. 1sec. De notat că un LED este ** stins cu 1L. ** ** Programul apoi intra intr-o bucla unde scaneaza cei mai semnificativi ** 5 biti ai portului de stare afisiand continutul acestuia in HEX. */ #include <stdio.h> #include <conio.h> #include <dos.h> /* necesar pt. functia de intirziere */ #define DATA 0x03bc /* poata sa difere de la PC la PC */ #define STATUS DATA+1 #define CONTROL DATA+2 void main(void) int in, n; clrscr(); outportb(data,0x00); /* Aprinde LED-urile Portului de Date */ outportb(control, 0x00^0x0b);/*Aprinde LED-urile Portului de CTRL */ 5

/* stinge LED-urile Portului de Date prin setarea fiecarui Bit în 1L */ for (n=7; n>=0; n--) outportb(data, 0x01 << n); printf( \n Data port:%02x,inportb(data)); outportb(data, 0x00); /* Se comuta Off LED-urile Portului de Control ** Se executa exclusive-or pentru a compensa inversiunile hardware */ outportb(control, 0x08^0x0b); /* bit 3 */ printf( \n Control port:%02x,0x08^0x0b); outportb(control, 0x04^0x0b); /* bit 2 */ printf( \n Control port:%02x,0x04^0x0b); outportb(control, 0x02^0x0b); /* bit 1 */ printf( \n Control port:%02x,0x02^0x0b); outportb(control, 0x01^0x0b); /* bit 0 */ printf( \n Control port:%02x,0x01^0x0b); outportb(control, 0x00); /* Se scaneaza comutatoarele si se afiseaza starea acestora */ clrscr(); printf( STATUS PORT: ); while(1) in = (inportb(status)^0x80)&0xf8; /* BUSY (MSB) este inversat hardware.sunt afisati cei mai semnificativi 5 biti ai portului de stare. */ gotoxy(15,1); printf("%02x\n", in); if (in==0xf8) // daca toate comutatoarele ON sfîrşit printf( \npress ANY KEY TO EXIT!!! ); break; MODUL DE LUCRU. 1. Se vor identifica adresele porturilor paralele instalate şi modurile de configurare ale acestora folosind BIOS-ul fiecărui PC. 2. Se va testa Aplicaţia 1 şi se vor compara rezultatele cu cele obţinute la punctul 1. 3. Folosind sistemul de test, a cărui schemă a fost prezentată în figura anterioară, să se ruleze / modifice Aplicaţia 2, sintetizându-se caracteristicile portului paralel. 6