Minggu, 03 Agustus 2008

Dasar:Menerima masukkan (INPUT) dari paralel Port.

Sebelumnya kita sudah mempelajari bagaimana komputer mengendalikan LED=Komputer memberikan OUTPUT ke sistem lain. Sekarang mari kita pelajari bagaimana komputer dapat menerima masukkan=INPUT dari luar. Dalam posting ini, kita akan menggunakan switch/saklar sebagai input devices.

Untuk mencobanya, anda membutuhkan sumber tegangan 5 volt, bisa juga dibuat dengan 3 buah batere 1.5 Volt x 3 = 4.5 Volt.

Silahkan buat rangkaian dibawah ini:



Pada percobaan ini, kita akan mencoba 1 BIT input agar bisa dibaca oleh komputer. Pin 10 pada DB 25 dihubungkan dengan saklar dan 5 volt melewati resistor 1k ohm. Resistor 1k dan batere menjaga Pin 10 pada DB 25 tidak jatuh pada ‘UNKNOWN STATE’ apabila posisi saklar pada kondisi OFF. Sekarang, apabila saklar pada kondisi ON, maka Pin 10 DB 25 akan menjadi 0 Volt karena dihubungkan langsung ke GROUND (pin 25). Tetapi saklar pada posisi OFF, tegangan pada pin 10 akan 5 Volt (tidak percaya? coba ukur memakai Avo meter).

Software

Softwarenya kita tambahkan saja pada software sebelumnya, tambahkan 2 buah Label dan Timer.



Sedangkan code untuk Timer1 adalah:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
label1.Caption:=inttostr(inb and 64);
end;

Software akan terus menerus menampilkan isi dari Port Input.

Sekarang jalankan software tersebut (jangan lupa, tidak boleh dengan Run dari Delphi, tetapi compile dulu dan jalankan file Project1.bat.

Lihat angka yang berubah pada Label1, bandingkan angkanya apabila saklar ditekan atau dilepaskan. Angkanya pasti kalau tidak 64, ya 0 (tergantung posisi saklar).

Nah... kenapa pada software harus ada “and 64”? Ini adalah metoda ‘masking’ untuk mengecek apakah suatu BIT bernilai HIGH atau LOW.

Bit masking

Misal isi variable A adalah 217 desimal = 11011001 biner kita ‘AND’ dengan 64 desimal = 01000000 biner

11011001
01000000
------------- &
01000000 biner = 64 desimal

Perlu diingat bahwa 1 AND 1 = 1, 1 AND 0 = 0, 0 AND 1 = 0, 0 AND 0 = 0

Sekarang, apabila variable A adalah 129 desimal = 10000001 biner di AND kan dengan 64 maka hasilnya:

10000001
01000000
------------- &
00000000 = 0 desimal

Coba lagi dengan A = 197 desimal = 11000101

11000101
01000000
------------- &
01000000 = 64 desimal


Artinya, apabila BIT ke 6 (hitung dari kanan, mulai 0) bernilai HIGH, maka hasil AND dengan 64 adalah HIGH, dan tidak tergantung nilai BIT lainnya.

Dengan kata lain, untuk menguji nilai individual BIT, kita bisa menggunakan metoda di AND kan dengan nilai BIT tersebut. Kalau mau mengecek bit ke-0, maka harus di AND kan dengan 1 (00000001), bit ke-1 di AND kan dengan 2 (00000010), bit ke-2 dengan 4 (00000100), bit ke-3 dengan 8 (00001000), dan seterusnya.

Angka 1, 2, 4, 8 dan seterusnya adalah hasil perhitungan 2 pangkat (posisi bit). AND 8 adalah untuk mengecek bit ke-3 karena 2 pangkat 3 = 8.

Metoda ini harus dipahami betul apabila anda bermaksud mendalami PC interfacing atau pemrograman mikrokontroller. Untuk lebih mendalaminya, silahkan lanjutkan membaca posting Bit operation.

1 komentar:

boik mengatakan...

semua langkah udah saya ikutin, tapi ketika project.bat saya jalankan, form nya sih keluar tapi kemudian muncul message box berulang-ulang (tumpang tindih) "Previledge Instruction"

solusinya bagaimana mas