Anda di halaman 1dari 14

Source Code

Percobaan 1 : Toggle Switch


unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
IbStat: TLabel;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Shape5: TShape;
Timer1: TTimer;
Timer2: TTimer;
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

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

else shape3.Brush.Color:=clwhite; //jika tidak maka shape3 akan berwarna putih


if (stat and 16)=16 then shape4.Brush.Color:=clred //bila data yang diinputkan sama dengan 16
maka shape4 akan berwarna merah
else shape4.Brush.Color:=clwhite; //jika tidak maka shape4 akan berwarna putih
if (stat and 32)=32 then shape5.Brush.Color:=clred //bila data yang diinputkan sama dengan 32
maka shape5 akan berwarna merah
else shape5.Brush.Color:=clwhite; //jika tidak maka shape5 akan berwarna putih
end;
end.

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

terdapat pada kolom ke-1.

Dan akan menampilkan B


if stat = 255-64 then keypad:='6'; //255-64= 191(10111111) ini terdapat pada kolom ke-2. Dan
akan menampilkan 6
if stat = 255-32 then keypad:='5'; //255-32= 223(11011111) ini terdapat pada kolom ke-3. Dan
akan menampilkan 5
if stat = 255-16 then keypad:='4'; //255-16= 239(11101111) ini terdapat pada kolom ke-4. Dan
akan menampilkan 1
end;
procedure baris3;
var

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

terdapat pada kolom ke-1.

Dan akan menampilkan C


if stat = 255-64 then keypad:='9'; //255-64= 191(10111111) ini terdapat pada kolom ke-2. Dan
akan menampilkan 9
if stat = 255-32 then keypad:='8'; //255-32= 223(11011111) ini terdapat pada kolom ke-3. Dan
akan menampilkan 8
if stat = 255-16 then keypad:='7'; //255-16= 239(11101111) ini terdapat pada kolom ke-4. Dan
akan menampilkan 7
end;
procedure baris4;
var
stat: integer;
begin
data:=$7;
Out32($378,Data);//8 //0111 // alamat out parallel terdapat pada alamat 378 dan memiliki data 7
(0111) yang artinya tombol aktif pada baris keempat.
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:='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 ke-2. Dan
akan menampilkan #
if stat = 255-32 then keypad:='0'; //255-32= 223(11011111) ini terdapat pada kolom ke-3. Dan
akan menampilkan 0

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;

// pengenalan register yang akan digunakan

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 untuk membaca pada alamat


mana yang akan di outputkan pada modul

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);

// 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.

Kemudian program selanjutnya adalah menggunakan fungsi ifelse..


if (stat and 2)=2 then shape1.Brush.Color:=clred
else shape1.Brush.Color:=clwhite;
if (stat and 4)=4 then shape2.Brush.Color:=clred
else shape2.Brush.Color:=clwhite;
if (stat and 8)=8 then shape3.Brush.Color:=clred
else shape3.Brush.Color:=clwhite;
if (stat and 16)=16 then shape4.Brush.Color:=clred
else shape4.Brush.Color:=clwhite;
if (stat and 32)=32 then shape5.Brush.Color:=clred
else shape5.Brush.Color:=clwhite;

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;

// pengenalan register yang akan digunakan

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 untuk membaca pada alamat


mana yang akan di outputkan pada modul

Program 4 :

Untuk baris ke-1 :


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;

//pemberhentian program

Untuk baris ke-2 :


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

terdapat pada kolom

ke-1. Dan akan menampilkan B


if stat = 255-64 then keypad:='6'; //255-64= 191(10111111) ini terdapat pada kolom ke-2.
Dan akan menampilkan 6
if stat = 255-32 then keypad:='5'; //255-32= 223(11011111) ini terdapat pada kolom ke-3.
Dan akan menampilkan 5
if stat = 255-16 then keypad:='4'; //255-16= 239(11101111) ini terdapat pada kolom ke-4.
Dan akan menampilkan 1
end;

Untuk baris ke-3 :


procedure baris3;
var
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

terdapat pada kolom

ke-1. Dan akan menampilkan C


if stat = 255-64 then keypad:='9'; //255-64= 191(10111111) ini terdapat pada kolom ke-2.
Dan akan menampilkan 9
if stat = 255-32 then keypad:='8'; //255-32= 223(11011111) ini terdapat pada kolom ke-3.
Dan akan menampilkan 8
if stat = 255-16 then keypad:='7'; //255-16= 239(11101111) ini terdapat pada kolom ke-4.
Dan akan menampilkan 7
end;

Untuk baris ke-4 :


procedure baris4;
var
stat: integer;
begin
data:=$7;
Out32($378,Data);//8 //0111

// alamat out parallel terdapat pada alamat


378 dan memiliki data 7 (0111) yang
artinya tombol aktif pada baris keempat.

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:='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;

Anda mungkin juga menyukai