4. AT89S51 dan Input Push-Button
4.1. Sekilas tentang Push-Button
Pada dasarnya, terdapat 2 jenis Push-Button di pasaran: Push-On dan Push-Off. Tetapi yang kita gunakan pada tutorial ini adalah yang berjenis Push-On, yaitu komponen yang terdiri atas dua kutub yang saling terpisah / tidak terhubung, dan sebuah tombol yang ketika ditekan akan menghubungkan kedua kutub tersebut sehingga akan mengalirkan arus listrik dari satu sisi kutub ke sisi kutub berikutnya (Lihat gambar 4.1).
Gambar 4.1. Komponen Push-Button .
4.2. Merangkai AT89S51 dan Push-Button
Seperti juga pada LED, setelah kita mengetahui cara kerja dari komponen yang kita gunakan, Push-Button , kita perlu mengetahui cara merangkainya dengan Mikrokontroler kita, AT89S51. Dapat dilihat pada gambar 4.2, ada 2 cara perangkaian Push-Button: (1) Active-Low, yang berarti ketika Push-Button ditekan, ia akan memberikan data “Low” atau logika “0”. (2) Active-High, yang berarti kebalikan dari yang pertama. Lalu mengapa pada gambar ada perbedaan rangkaian antara 2 jenis koneksi. Mengapa yang pertama, Active-Low, tidak perlu adanya resistor? Hal tersebut dikarenakan pin Mikrokontroler favorit kita, AT89S51, ini memiliki Default-High, yang artinya ketika tidak terkoneksi dengan divais apapun dan tidak dikondisikan oleh suatu program apapun atau dalam keadaan Reset, ia akan berkondisi “High” atau logika “1”. Itulah sebabnya pada tutorial ini kita akan menggunakan jenis koneksi yang pertama, Active-Low.
Gambar 4.2. Koneksi Push-Button dengan Mikrokontroler: a. Active-Low, b. Active-High.
4.3. Program Interaksi Nyala LED terhadap Rangsangan Input Push-Button
Setelah mengetahui cara merangkai Push-Button, maka selanjutnya adalah menentukan jumlah komponen yang akan kita gunakan dan pada Port AT89S51 mana akan kita rangkai Push-Button tersebut. Seperti dapat dilihat pada gambar 4.3, jumlah Push-Button yang kita gunakan adalah 8 buah dan dirangkaikan pada Port-3 dari AT89S51. Lalu mengapa pada gambar kita juga dapat melihat adanya rangkaian LED yang telah kita gunakan pada bab sebelumnya? Hal ini dikarenakan untuk mengetahui suatu program pengecekkan input tentu kita memerlukan suatu kondisi output yang ber-interaksi terhadap perubahan input. Dan untuk memudahkan perangkaian, maka kita gunakan rangkaian LED yang sebelumnya telah kita pelajari.
Gambar 4.3. Koneksi 8 buah Push-Button pada Port-3 dan 8 buah LED pada Port-0 AT89S51.
Oleh karena data yang diberikan oleh push-button ketika ditekan adalah logika “0”, maka program pengecekkan yang dibuat adalah program yang akan memeriksa kondisi logika “0” di Port-3 AT89S51.
Program 3:
org 0000h
sjmp awal
awal:
mov p0, #00h ; Menyalakan seluruh LED di Port-0
cek:
jnb p3.0, led0 ; Mengecek kondisi pin-0 dari port-3, jika = “0”, maka lompat ke label “led0”. Jika tidak, lanjutkan.
jnb p3.1, led1
jnb p3.2, led2
jnb p3.3, led3
jnb p3.4, led4
jnb p3.5, led5
jnb p3.6, led6
jnb p3.7, led7
sjmp cek
led0:
cpl p0.0 ; Membalik kondisi pin-0 dari port-0, jika awal = “0” menjadi “1” dan sebaliknya.
sjmp cek1 ; Lompat kembali ke label “cek”.
led1:
cpl p0.1
sjmp cek1
led2:
cpl p0.2
sjmp cek1
led3:
cpl p0.3
sjmp cek1
led4:
cpl p0.4
sjmp cek1
led5:
cpl p0.5
sjmp cek1
led6:
cpl p0.6
sjmp cek1
led7:
cpl p0.7
sjmp cek1
Cek1:
Mov a, p3 ; Accumulator (Acc) = Port-3
Cjne a, #0FFh, cek1 ; Jika Acc tidak = 0FFh, maka kembali ke label “Cek1”
Sjmp cek1
Pada “Program 3” di atas pengecekkan dilakukan per-pin dari Port-3 yang dihubungkan ke Push-Button. Program di atas akan mengubah kondisi pin dari Port-0 (Port LED) ke kondisi kebalikannya jika pin yang bersesuaian dari Port-3 (Port Push-Button) ditekan atau berkondisi “0”. Lalu program pada label “Cek1” adalah untuk memastikan penekan push-button telah selesai dilakukan. Selamat BERSENANG-SENANG!







thanks
a lg nyari bahan buat tugas.
sepertinya i9ni sangat membantu
tanya’ dunk!!!!
gimana listing program AT89s51 untuk mengirim data secara serial ke PC (Delphi) dengan inputan 2 port (P0.0 & P0.1).
thxs ya atas bantuannya
sepertinya ini sangat membantu buat saya
good luck