ANTARMUKA PORT PARALEL
(PORT PRINTER / LPT-n)
Download
| Kembali ke Menu
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 |
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 = |
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.