Anda di halaman 1dari 8

PENGUJIAN RANGKAIAN INPUT TESTER PORT PARALEL

 Gambar Rangkaian

VCC

STROBE
PC0

R0 1K 74LS05

AUTO LINE FEED


PC1

R1 1K 74LS05

PC2

R2 1K 74LS05 74LS05

SELECT PRINTER
PC3

R3 1K 74LS05

PS3

R4 1K

PS4

R5 1K

PS5

R6 1K

PS6

R7 1K
 Pembuatan Program
1. Jalankan program Borland Delphi 7
2. Buat sebuah proyek baru. Klik menu File  New  Application. Setelah
melakukan langkah 2 maka sebuah proyek baru telah dibuatkan oleh
Delphi
3. Simpan dahulu proyek Anda dengan cara klik menu File  Save Project
As
Ada dua bagian program yang harus disimpan, yaitu Unit dan Project :
a) Simpan Unit dengan nama U_TesterInput, klik Save, kemudian
b) Simpan Project dengan nama TesterInput, klik Save
4. Ubah properti Caption Form1 menjadi Program Tester Input

5. Tambahkan 2 komponen Button pada Form. Komponen Button terletak


pada jendela Component Pallete tab Standard.

6. Ubah properti Caption dari Button1 menjadi Baca Input


7. Ubah properti Caption dari Button2 menjadi Keluar
8. Tambahkan 1 komponen Label pada Form. Komponen Label terletak pada
jendela Component Pallete tab Standard.
9. Rancang tampilan Form seperti di bawah ini :

10. Setelah selesai membuat rancangan tampilan program, tuliskan


programnya.
11. Tekan F12 untuk menampilkan jendelan kode editor. Tuliskan program di
bawah ini (yang ada di dalam kotak).
Catatan :
a) Dalam pemrograman Delphi tidak semua kode harus diketikkan secara
manual. Delphi secara otomatis sudah menyediakan semacam
kerangka program untuk Anda.
b) Program yang dituliskan di bawah ini dapat langsung dijalankan jika
sistem operasi yang digunakan adalah Windows 16 bit (misal
Windows 95 atau Windows 98).
c) Jika sistem operasi yang digunakan adalah Windows 32 bit (misal
Windows 2000, NT, atau Windows XP, maka pada komputer Anda
perlu terlebih dahulu diinstal driver tambahan agar akses port dapat
dilakukan. Salah satu driver yang dapat digunakan adalah UserPort
1.0.
d) Download driver ini di http://wareseeker.com/download/userport-
1.0.rar/438025
e) Setelah di-download (dalam bentuk file Zip/Rar), buka file
UserPort.zip
f) Copy file dengan nama UserPort.sys ke direktori
C:\Windows\System32\Drivers
g) Jalankan file userport.exe

h) Pada listbox sebelah kanan dan kiri, pilih GrantInterval 200-37F


i) Klik Start.
unit U_TesterInput;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Public

function BacaPort : Byte;


Hasil : Byte;

{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.BacaPort : Byte;


var Temp1, Temp2 : Byte;
begin
{fungsi untuk membaca port status}
asm
mov dx,$37A
in ax,dx
mov Temp1,al
end;

{fungsi untuk membaca port control}


asm
mov dx,$379
in ax,dx
mov Temp2,al
end;

Temp2 := Temp2 shl 1;

{Temp1 di-OR-kan dengan Temp2


untuk menggabungkan port status dan port control
sehingga didapatkan data 8 bit
yang disimpan di variabel Hasil}

Hasil := Temp 1 or Temp2;


end;

end.

12. Tekan F12 untuk menampilkan kembali Jendela Form1


13. Pilihan komponen Button1, pilih tab Events pada Jendela Object
Inspector, lalu double click pada event OnClick sehingga muncul jendela
kode editor program untuk Event Button1OnClick.

14. Ketikkan kode program di bawah ini (yang ada di dalam kotak) :

procedure TForm1.Button1Click(Sender: TObject);


begin

{tampilkan nilai heksadesimal pada Label1}


Label1.Caption := IntToHex(BacaPort,2);

end;

15. Dengan cara yang sama pada langkah 13 dan 14, ketikkan kode program
di bawah ini (yang ada di dalam kotak) untuk komponen Button2:

procedure TForm1.Button2Click(Sender: TObject);


begin

{keluar dari progam}


Close;

end;

16. Sehingga kode program secara keseluruhan adalah sebagai berikut :


unit U_TesterInput;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
function BacaPort : Byte;
Hasil : Byte;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.BacaPort : Byte;


var Temp1, Temp2 : Byte;
begin
{fungsi untuk membaca port status}
asm
mov dx,$37A
in ax,dx
mov Temp1,al
end;

{fungsi untuk membaca port control}


asm
mov dx,$379
in ax,dx
mov Temp2,al
end;

Temp2 := Temp2 shl 1;


{Temp1 di-OR-kan dengan Temp2
untuk menggabungkan port status dan port control
sehingga didapatkan data 8 bit
yang disimpan di variabel Hasil}
Hasil := Temp 1 or Temp2;
end;

procedure TForm1.Button1Click(Sender: TObject);


begin
{tampilkan nilai heksadesimal pada Label1}
Label1.Caption := IntToHex(BacaPort,2);
end;

procedure TForm1.Button2Click(Sender: TObject);


begin
{keluar dari program}
Close;
end;

end.
Selain pemrogaman dengan menggunakan driver UserPort untuk Windows 32
bit, pemrograman port paralel juga dapat dilakuakan dengan menggunakan file
inpout32.dll yang dapat didownload di http://www.logix4u.net/. Setelah
didownload, file inpout32.dll disimpan di dalam folder tempat menyimpan
project/program delphi yang dibuat, dan di direktori C:/Windows/System32.
Program Delphi untuk akses port paralel dengan menggunakan file
inpout32.dll adalah sebagai berikut :

unit U_TesterInput;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
Temp1, Temp2 : Byte;
Hasil : Byte;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{fungsi untuk membaca port/baca data}


function Inp32(wAddr:word):integer; stdcall; external 'inpout32.dll'

{prosedur untuk tulis port/kirim data}


procedure Out32(wAddr:word;bOut:byte); stdcall; external 'inpout32.dll'

procedure TForm1.Button1Click(Sender: TObject);


begin
Temp1 := inp32($37A);
Temp2 := inp32($379);
Temp2 := Temp2 shl 1;
Temp1 := Temp1 AND $0F;
Temp2 := Temp2 AND $0F0;
Hasil := Temp1 or Temp2;
{tampilkan nilai heksadesimal pada Label1}
Label1.Caption := IntToHex(Hasil);
end;

procedure TForm1.Button2Click(Sender: TObject);


begin
{keluar dari program}
Close;
end;
end.
 Pengujian
1. Hubungkan rangkaian input tester dengan komputer menggunakan kabel
DB-25
2. Untuk pengujian program, klik menu Run  Run. Jika tidak kesalahan
atau exception yang muncul, maka akan muncul tampilan program seperti
gambar di bawah ini.

3. Biarkan switch pada rangkaian input tester dalam kondisi terbuka (tidak
ditekan). Klik button (tombol) Baca Data pada tampilan program. Jika
tidak permasalahan dalam rangkaian, maka tampilan komponen Label1
akan berubah menjadi 00. Hal ini berarti, program membaca data 00h
(00000000b) dari rangkaian melalui port control dan port status.
4. Jika pada program sudah tampil data 00, tekan semua switch input pada
rangkaian tester. Ketika switch input pada rangkaian tester dalam kondisi
tertutup, klik kembali button Baca Data pada tampilan program. Hal ini
akan mengakibatkan tampilan komponen Label1 berubah menjadi FF. Hal
ini berarti program membaca data FFh (11111111b) daro rangkaian.
5. Lakukan langkah yang sama untuk beberapa kombinasi kondisi switch.

Anda mungkin juga menyukai