var
Form1: TForm1;
ctrl, data, stat: integer; //pendeklarasian bahwa ctrl,data dan stat bertype integer
implementation
{$R *.dfm}
procedure
Out32(PortAddress:smallint;Value:smallint);
stdcall; external 'inpout32.dll';
function
Inp32(PortAddress:smallint):smallint;stdcall;
external 'inpout32.dll';
procedure TForm1.Timer1Timer(Sender: TObject);
begin
stat:=(inp32($379) xor $80); // program tersebut memuat data pada register status (input) dan
pada alamat 379 (899), kemudian nilai yang dimasukkan pada
alamat 379 akan di XOR dengan 80 (1000 0000).
lbData.Caption:=IntToStr(data);
Out32($378,data); // program tersebut merupakan perintah untuk mengouputkan data yang
berada pada alamat 378 (888), pada alamat tersebut berisi mengenai data
inputan yang sudah diproses sebelunya yang selanjutnya akan di teruskan
pada modul outputan.
if (stat and 2)=2 then shape1.Brush.Color:=clred //bila data yang diinputkan sama dengan 2
maka shape1 akan berwarna merah
else shape1.Brush.Color:=clwhite; //jika tidak maka shape1 akan berwarna putih
if (stat and 4)=4 then shape2.Brush.Color:=clred //bila data yang diinputkan sama dengan 4 maka
shape2 akan berwarna merah
else shape2.Brush.Color:=clwhite; //jika tidak maka shape2 akan berwarna putih
if (stat and 8)=8 then shape3.Brush.Color:=clred //bila data yang diinputkan sama dengan 8 maka
shape3 akan berwarna merah
Percobaan 2 : Keypad
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants,
Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer1: TTimer;
Label1: TLabel;
lbData: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
lbKeypad: TLabel;
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ctrl, data, stat, i: integer; //pendeklarasian bahwa ctrl,data,stat dan i adalah bertype integer
keypad : String; //pendeklarasian bahwa keypad adalah bertype string
implementation
{$R *.dfm}
procedure
Out32(PortAddress:smallint;Value:smallint);
stdcall; external 'inpout32.dll';
function
Inp32(PortAddress:smallint):smallint;stdcall;
external 'inpout32.dll';
procedure baris1;
var
stat: integer;
begin
data:=$E;
Out32($378,data);//1 //1110 // alamat out parallel terdapat pada alamat 378 dan memiliki data E
(1110) yang artinya tombol aktif pada baris pertama.
stat:=(inp32($379) xor $80); //register status dari alamat 379 datanya akan di xor kan dengan
80(1000 0000)
if stat = 255-128 then keypad:='A'; //255-128= 127(01111111) ini terdapat pada kolom ke-1. Dan
akan menampilkan A
if stat = 255-64 then keypad:='3'; //255-64= 191(10111111) ini terdapat pada kolom ke-2. Dan
akan menampilkan 3
if stat = 255-32 then keypad:='2'; //255-32= 223(11011111) ini terdapat pada kolom ke-3. Dan
akan menampilkan 2
if stat = 255-16 then keypad:='1'; //255-16= 239(11101111) ini terdapat pada kolom ke-4. Dan
akan menampilkan 1
end;
procedure baris2;
var
stat: integer;
begin
data:=$D;
Out32($378,Data);//2 //1101
// alamat out parallel terdapat pada alamat 378 dan memiliki data
D (1101) yang artinya tombol aktif pada baris kedua.
stat:=(inp32($379) xor $80); //register status dari alamat 379 datanya akan di xor kan dengan
80(1000 0000)
if stat = 255-128 then keypad:='B'; //255-128= 127(01111111) ini
stat: integer;
begin
data:=$B;
Out32($378,Data);//4 //1011 // alamat out parallel terdapat pada alamat 378 dan memiliki data B
(1011) yang artinya tombol aktif pada baris ketiga.
stat:=(inp32($379) xor $80); //register status dari alamat 379 datanya akan di xor kan dengan
80(1000 0000)
if stat = 255-128 then keypad:='C'; //255-128= 127(01111111) ini
if stat = 255-16 then keypad:='*'; //255-16= 239(11101111) ini terdapat pada kolom ke-4. Dan
akan menampilkan *
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Out32($378,0);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
i:=i+1;
if i=1 then baris1();
if i=2 then baris2();
if i=3 then baris3();
if i=4 then begin
baris4();
i:=0;
end;
lbKeypad.Caption:=keypad;
lbData.Caption:=IntToStr(data);
lbStatus.Caption:=IntToStr(stat);
end;
end.
Analisa :
Percobaan 1 : Toggle Switch
Program ke-1
Pada program pertama merupakan program bawaan dari Delphi itu sendiri.
Program ke-2
Pada program kedua adalah maca-macam komponen yang sudah kita gunakan pada jendela
form, komponen tersebut diantaranya adalah :
-Label
-Shapes
-Timer
Untuk dapat mengatur fungsi dari masing-masing komponen kita gunakan event dan properties
pada kiri jendela Delphi.
Setelah itu adalah pendeklarasian variabel.
Program ke-3
Pada awal program ketiga ini ada variabel yang dikenalkan pada alamat register
tersebut,diantaranya adalah : Data,Status,dan Control.
Var
Form1: TForm1;
ctrl, data, stat: integer;
Out32(PortAddress:smallint;Value:smallint);
stdcall; external 'inpout32.dll'; // program untuk mengeluarkan function
data yang akanditampilkan pada
modul sesuai dengan program yang
kita inginkan
Inp32(PortAddress:smallint):smallint;stdcall;
external 'inpout32.dll';
Program ke-4
Dalam program keempat ini memuat bagaimana cara membaca data pada alamat yang sudah ada
dan memproses bagaimana data dapat di outpukan oleh modul.
stat:=(inp32($379) xor $80); // program tersebut memuat data pada register status (input)
dan pada alamat 379 (899), kemudian nilai yang
dimasukkan pada alamat 379 akan di XOR
dengan 80 (1000 0000).
Selanjunya inputan yang berupa data akan dikeluarkan melalui out32.
Out32($378,data);
Analisa :
Apabila data masukkan yang diberikan nilai sama dengan yang ditentukan ( 2,4,8,16,32) maka
shape akan bewarna merah seperti yang ditentukan pada program.
Jika masukan nilai yang diberikan pada data (status) selain nilai dari yang ditentukan di
atas,maka shape yang menyala merah sesuai biner yang telah ditentukan.
Misalnya :
Data yang dimasukkan 5, maka binernya 0000 0101
Dari biner tersebut dapat dilihat bahwa shape yang menyala adalah 1 dan 4 bewarna merah.
Shape yang lain bewarna putih.
Percobaan 2 : Keypad
Program ke-1
Pada program pertama merupakan program bawaan dari Delphi itu sendiri.
Program ke-2
Pada program kedua adalah maca-macam komponen yang sudah kita gunakan pada jendela
form, komponen tersebut diantaranya adalah :
-Label
-Timer
Untuk dapat mengatur fungsi dari masing-masing komponen kita gunakan event dan properties
pada kiri jendela Delphi.
Setelah itu adalah pendeklarasian variabel.
Program ke-3
Pada awal program ketiga ini ada variabel yang dikenalkan pada alamat register
tersebut,diantaranya adalah : Data,Status,dan Control.
Var
Form1: TForm1;
ctrl, data, stat: integer;
Out32(PortAddress:smallint;Value:smallint);
stdcall; external 'inpout32.dll'; // program untuk mengeluarkan function
data yang akanditampilkan pada
modul sesuai dengan program yang
kita inginkan
Inp32(PortAddress:smallint):smallint;stdcall;
external 'inpout32.dll';
Program 4 :
if stat = 255-128 then keypad:='A'; //255-128= 127(01111111) ini terdapat pada kolom
ke-1. Dan akan menampilkan A
if stat = 255-64 then keypad:='3'; //255-64= 191(10111111) ini terdapat pada kolom ke-2.
Dan akan menampilkan 3
if stat = 255-32 then keypad:='2'; //255-32= 223(11011111) ini terdapat pada kolom ke-3.
Dan akan menampilkan 2
if stat = 255-16 then keypad:='1'; //255-16= 239(11101111) ini terdapat pada kolom ke-4.
Dan akan menampilkan 1
end;
//pemberhentian program
if stat = 255-128 then keypad:='D'; //255-128= 127(01111111) ini terdapat pada kolom
ke-1. Dan akan menampilkan D
if stat = 255-64 then keypad:='#'; //255-64= 191(10111111) ini terdapat pada kolom ke2. Dan akan menampilkan #
if stat = 255-32 then keypad:='0'; //255-32= 223(11011111) ini terdapat pada kolom ke3. Dan akan menampilkan 0
if stat = 255-16 then keypad:='*'; //255-16= 239(11101111) ini terdapat pada kolom ke4. Dan akan menampilkan *
end;
Pemrograman untuk Timer :
Pada program timer tersebut menggunakan program perulangan, apabila timer (i)
mengalami penjumlahan,misalkan i=2 maka program tersebut akan mengaktifkan baris
no.2 begitu juga yang lainnya sesuai pada program.
procedure TForm1.Timer1Timer(Sender: TObject);
begin
i:=i+1;
if i=1 then baris1();
if i=2 then baris2();
if i=3 then baris3();
if i=4 then begin
baris4();
i:=0;
end;