ANTARMUKA PORT PARALEL
(PORT PRINTER / LPT-n)
Download | Kembali ke Menu

Antarmuka (interface) merupakan jembatan yang menghubungkan komputer dengan dunia luar. Port paralel merupakan salah satu antarmuka yang mudah digunakan untuk menghubungkan suatu alat (elektronik digital) pada komputer IBM kompatibel. Pada catatan ini dijelaskan secara singkat bagaimana cara menggunakan antarmuka port paralel suatu komputer IBM kompatibel (PC).

1. Pendahuluan

Setiap port paralel PC memiliki delapan jalur data, empat jalur kontrol, dan lima jalur status. Pada PC original, jalur data Standard Parallel Port (SPP) hanya berfungsi sebagai jalur output. Namun kemudian IBM membuat jalur data "bidireksional" pada komputer PS/2 mereka, yang memungkinkan jalur data output di-"matikan" melalui perangkat lunak untuk kemudian difungsikan sebagai jalur input. Namun port paralel standar bidireksional ini hanya dapat dimanfaatkan oleh sebagian kecil pengguna saja, yaitu dari kalangan teknik elektro.

Pada pertengahan tahun 90-an muncul kebutuhan besar akan transfer data melalui port paralel, misalnya untuk mengirimkan data grafik dalam jumlah besar ke printer, hard-disk port paralel, CD-ROM, scanner, dll, sehingga dikembangkanlah Enhanced Parallel Port. Pada dasarnya, EPP masih memiliki spesifikasi SPP bidireksional. Namun penambahan sejumlah perangkat kontrol dan buffer data menyebabkan kecepatannya meningkat secara dramatis. Jika SPP memiliki kecepatan transfer sekitar 100 kB/detik, maka EPP memiliki kecepatan sebesar 1 - 2 MB/detik).

Enhanced Parallel Port dikembangkan dengan dua jenis protokol transmisi, yaitu EPP (Enhanced Parallel Port) dan ECP (Enhanced Capability Port). Dibandingkan dengan SPP, EPP hanya memiliki kelebihan pada kemampuannya menerima input pada jalur data serta proses handshaking yang otomatis dan dipercepat. Sementara itu ECP (tidak dibahas lebih lanjut) jauh lebih baik lagi, karena disamping memiliki kemampuan DMA (Direct Memory Access) untuk input/output data, padanya juga dihubungkan sejumlah alat sekaligus. Tetapi, agar bisa dihubungkan dengan ECP, sebuah rangkaian elektronik luar paling tidak memerlukan sedikit bantuan mikroprosesor (atau chip LSI).

 

2. Posisi Pin Antarmuka Port Paralel

Gambar 1 - Penomoran pin port paralel pada PC (DB 25)

 

Register
Bit

i/o (SPP)

i/o (EPP)

Pin DB25

Keterangan

Jalur Data

 

 

 

 

D0

i

i/o

2

LSB

D1

i

i/o

3

.

D2

i

i/o

4

.

D3

i

i/o

5

.

D4

i

i/o

6

.

D5

i

i/o

7

.

D6

i

i/o

8

.

D7

i

i/o

9

MSB

 

 

 

 

 

Jalur Status

 

 

 

 

S0

-

-

-

Tidak dipakai (berkondisi 1)

S1

-

-

-

Tidak dipakai (berkondisi 1)

S2

-

-

-

Tidak dipakai (berkondisi 1)

S3

i

i

15

 

S4

i

i

13

 

S5

i

i

12

 

S6

i

i

10

 

S7

i (-)

i (-)

11

Terinversi

 

 

 

 

 

Jalur Kontrol

 

 

 

 

C0

o (-)

o (-)

1

Terinversi

C1

o (-)

o (-)

14

Terinversi

C2

o

o

16

 

C3

o (-)

o (-)

17

Terinversi

C4

-

-

-

Tidak dipakai

C5

-

-

-

Tidak dipakai

C6

-

-

-

Tidak dipakai

C7

-

-

-

Tidak dipakai

 

 

 

 

 

Ground

 

 

18-25

Ground (GND)

Perhatikan pada tabel di atas terdapat beberapa pin yang menginversi kondisi masukan/keluarannya.

2. Cara Mengakses Antarmuka Port Paralel

Hal pertama yang harus diketahui sebelum mengakses port paralel adalah alamat port tersebut. Biasanya port paralel pada PC memiliki alamat (address) 378h (heksadesimal) untuk port paralel pertama (LPT1:) dan 278h untuk port paralel ke dua (LPT2:, kalau ada). Alamat ini (misalnya 378h) selanjutnya disebut base address.

Pada tabel berikut ini dapat dilihat bagaimana cara mengakses jalur data, status, dan kontrol port paralel untuk modus Standard Parallel Port (SPP) dan Enhanced Parallel Port (EPP) dalam bahasa Pascal, C (C++), dan QBasic. (Catatan : untuk dapat mengakses EPP, modus port paralel pada Setup Bios harus diset pada EPP).

Operasi

Instruksi Pascal

Mengeluarkan data (15) ke alat luar (SPP)

PORT[base_address] := 15;

Membaca data dari alat luar, yang kemudian disimpan dalam variabel A (SPP Bidireksional)

A := PORT[base_address];

Mengeluarkan data (15) ke alat luar (EPP)

PORT[base_address + 3] := 15;

Membaca data dari alat luar, yang kemudian disimpan dalam variabel A (EPP)

A := PORT[base_address + 3];

Membaca status, yang kemudian disimpan dalam variabel A.

A := PORT[base_address + 1];

Mengeluarkan sinyal kontrol (mis : 7, untuk C0 C1 C2 C3 = 0 0 1 1

PORT[base_address + 2] := 7;

Operasi

Instruksi QBasic

Mengeluarkan data (15) ke alat luar (SPP)

OUT base_address,15

Membaca data dari alat luar, yang kemudian disimpan dalam variabel A (SPP Bidireksional)

A = INP[base_address]

Mengeluarkan data (15) ke alat luar (EPP)

OUT (base_address + 3),15

Membaca data dari alat luar, yang kemudian disimpan dalam variabel A (EPP)

A = INP[base_address + 3]

Membaca status, yang kemudian disimpan dalam variabel A.

A = INP[base_address + 1]

Mengeluarkan sinyal kontrol (mis : 7, untuk C0 C1 C2 C3 =
0 0 1 1

OUT (base_address + 2),7

 

Operasi

Instruksi C / C++

Mengeluarkan data (15) ke alat luar (SPP)

OUTPORT(base_address,15);

Membaca data dari alat luar, yang kemudian disimpan dalam variabel A (SPP Bidireksional)

A := INPORT(base_address);

Mengeluarkan data (15) ke alat luar (EPP)

OUTPORT(base_address + 3,15);

Membaca data dari alat luar, yang kemudian disimpan dalam variabel A (EPP)

A := INPORT(base_address + 3);

Membaca status, yang kemudian disimpan dalam variabel A.

A := INPORT(base_address + 1);

Mengeluarkan sinyal kontrol (mis : 7, untuk C0 C1 C2 C3 = 0 0 1 1

OUTPORT(base_address+2,7);

3. Contoh Aplikasi

Berikut ini dapat dilihat contoh aplikasi sederhana port paralel, yang digunakan untuk mengendalikan 8 buah LED, yang terhubung pada jalur data. LED dan resistor (220 W ) dapat dipasang pada protoboard, kemudian dihubungkan pada port paralel PC melalui kabel serta konektor DB25 (male).

Untuk mengendalikan LED tersebut agar setiap kali terdapat dua LED yang hidup dan bergerak bolak-balik dari kiri ke kanan, dapat dibuat program sebagai berikut.

Program Paralel_Port;
uses Crt;
var
baseport : integer;
i,tunda : integer;
Begin
baseport := $378;
tunda := 100;
while not (keypressed) do
begin
port[baseport]:=192; {diperoleh dari 128 + 64}
delay(tunda);
port[baseport]:=96; {diperoleh dari 64 + 32}
delay(tunda);
port[baseport]:=48; {diperoleh dari 32 + 16}
delay(tunda);
port[baseport]:=24; {diperoleh dari 16 + 8}
delay(tunda);
port[baseport]:=12; {diperoleh dari 8 + 4}
delay(tunda);
port[baseport]:=6; {diperoleh dari 4 + 2}
delay(tunda);
port[baseport]:=3; {diperoleh dari 2 + 1}
delay(tunda);
port[baseport]:=6;
delay(tunda);
port[baseport]:=12;
delay(tunda);
port[baseport]:=24;
delay(tunda);
port[baseport]:=48;
delay(tunda);
port[baseport]:=96;
delay(tunda);
end ;
end.

Kecepatan gerakan lampu dapat diatur dengan mengubah nilai variabel tunda.

Download | Kembali ke Menu