APLIKASI PORT
UNTUK
MASUKAN/KELUA
RANPENGGERAK
LED
PRAKTEK ANTAR MUKA DAN
MIKROKONTROLER
KELOMPOK 1 T.TELEKOMUNIKASI 4D:
BILAL AKHMAD
FATIMAH RANGKUTI
PRIHAMBADA PRIMADI
WIBBY ALDRYANI A.P
TEKNIK TELEKOMUNIKASI 4D
KELOMPOK 1
3/10/2010
APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010
Rangkaian untuk LED sama dengan rangkaian pada gambar sebelumnya sedangkan
pada P3.0 dan P3.1 kita pasang tombol-tekan (push button) yang dihubungkan ke
ground. Sebagaimana penjelasannya saat AT89C51/52/55 dihidupkan pertama kali,
fungsi reset akan menuliskan logika “1” ke semua Port sehingga Port 0, 1, 2 dan 3
secara otomatis akan terkonfigurasikan sebagai masukan yang berimpedansi tinggi.
Jika tidak dihubungkan kemana-mana (floating) program akan membaca kaki Port
Page6
sebagai logika “1” karena adanya internal. Dengan demikian akan lebih baik jika
masukan tombol-tekan disambung ke ground.
Program Pertama
Jika tombol-tekan di P3.0 ditekan maka akan terbaca P3=11111111B atau FEh,
sedangkan jika P3.1=11111101B atau FDh. Baris 10 berisi instruksi untuk
memebaca Port 3 yang kemudian disimpan di akumulator. Kemudian isi akumulator
tersebut diperiksa apakah sama dengan FEh (tombol diP3.0 ditekan), jika sama
maka LED dinyalakan (baris-13), jika tidak sama 9tombol di P3.0 tidak ditekan)
maka dilanjutkan dengan memeriksa tombol di P3.1 atau lompat ke label
TERUS(baris-15), dengan memeriksa akumulator apakah isinya sama dengan FDh
(baris-16), jika sama maka LED dimatikan (baris-18), jika tidak proses diulangi dari
awal lagi (baris-19, label MULAI). Selanjutnya jika tidak satupun tombol ditekan
(baik yang P3.0 maupun di P3.1) maka proses diulangi lagi (baris-19).
Page6
Program kedua
tidak (baris-11), jika tidak maka ulangi pengecekan status Port 3 dari awal,
Program Ketiga
Page6
Pertama data tampilan LED disimpan di register R5 (baris-9), demikian juga dengan
Page6
status LED yang sedang menyala bergantian dianggap sedang menyala bergantian
HASIL PERCOBAAN
Program 1
Page6
Program 2
ANALISA:
Program 1:
Page6
Menurut kelompok kami, dengan memperhatikan program di atas bahwa status dari
pin input sama dengan Pin Output yaitu bila saklar tidak ditekan (TINGGI) Output
pin juga HIGH (LED OFF) & ketika saklar ditekan (RENDAH ) Output pin juga RENDAH
(LED ON) menggunakan logika ini kita dapat menulis dengan cara lain.
Program 2:
Menurut kelompok kami, Dalam program-program di atas LED akan berkedip pada
awalnya ketika saklar ditekan karena AKTIFKAN memantul tapi karena yang
berkedip-kedip akan sangat cepat & tidak akan terdeteksi oleh mata manusia.
Meskipun waktu sangat singkat dalam istilah manusia untuk mikrokontroler itu
adalah waktu yang sangat lama. Tanpa SWITCH DEBOUNCING controller akan
berpikir bahwa saklar ditekan berkali-kali.
Program 3:
Menurut kelompok kami, Dalam hal ini program diubah controller menunggu pada
input pin yaitu P3.0 kemudian beban R7 dengan 255 sekarang akan memeriksa
apakah input PIN .cek controller LOGIC ini 0 sampai nilai R7 menjadi 0 yang dalam
hal ini adalah 255 kali. Jika sekali pun mendeteksi controller LOGIC 1 maka itu
keluar dari loop & debouncing kembali ke loop utama (loop1) menunjukkan
kesalahan dalam beralih tekan.
DJNZ digunakan untuk beralih debouncing jika Anda pikir periode menghilangkan
bounce kurang kemudian gunakan DALAM LOOP LOOP TEKNIK untuk memeriksa
input pin untuk lebih dari 255 kali.
Page6
REFERENSI
Dalam 8.051 PORT 1, PORT 2 & PORT 3 memiliki 10k internal Pull-up resistor
sedangkan ini Pull-up resistor tidak hadir dalam PORT 0. Oleh karena PORT 1, 2 & 3
dapat langsung digunakan untuk antarmuka sebuah saklar sedangkan kita harus
menggunakan 10k eksternal pull-up resistor untuk PELABUHAN 0 hingga dapat
digunakan untuk beralih mencampuri atau input lainnya. Gambar 1 menunjukkan
antarmuka saklar untuk PORT 1 , 2 & 3. Gambar 2 menunjukkan antarmuka beralih
ke PORT 0
Untuk setiap pin yang akan digunakan sebagai INPUT PIN yang TINGGI (1) harus
ditulis ke pin jika Anda tidak melakukan hal ini pin akan selalu dibaca sebagai
RENDAH. Pada gambar di atas saat saklar tidak menekan 10k resistor menyediakan
arus yang dibutuhkan untuk LOGIC 1 penutupan saklar LOGIC 0 untuk menyediakan
controller PIN. Mari kita menulis sebuah program kecil dimana setiap kali tombol
ditekan LED ON diaktifkan. Pertimbangkan bahwa saklar terhubung ke P2.0 & LED
terhubung ke P2 .1.
PROGRAM 1
ORG 0000H
SETB P2.0
Page6
SETB P2.1
loop1:
JB P2.0, loop1
CLR P2.1
loop2:
JNB P2.0, loop2
SETB P2.1
AJMP loop1
Pertama, kita menginisialisasi Port Pins yang kita gunakan. Karena kita
menggunakan P2.0 sebagai Input Pin kita menulis logika 1 untuk itu (SETB P2.0).
Kami menggunakan PIN P2.1 untuk LED. Awalnya LED OFF diaktifkan ini dilakukan
dengan menarik HIGH PIN (cek LED interfacing Bagian). Sekarang kita memeriksa
apakah Switch ditekan atau tidak. Jadi kita menunggu sampai saklar ditekan (loop1:
JB P2.0, loop1) segera setelah menekan saklar LED dihidupkan (CLR P2.1).
Kemudian kita menunggu sampai beralih ke dibebaskan (loop2: JNB P2.0, loop2) &
kemudian kita MAU MATI LED (SETB P2.1). Anda harus telah memperhatikan
program di atas bahwa status dari pin input sama dengan Pin Output yaitu bila
saklar tidak ditekan (TINGGI) Output pin juga HIGH (LED OFF) & ketika saklar
ditekan (RENDAH ) Output pin juga RENDAH (LED ON) menggunakan logika ini kita
dapat menulis dengan cara lain.
PROGRAM 2
ORG 0000H
SETB P2.1
SETB P2.0
loop:
MOV C, P2.0
MOV P2.1, C
AJMP loop
Output dari kedua program akan menjadi sama. Sekarang Anda tahu konsep dasar
saklar interfacing. Ada masalah dalam mencampuri praktis saklar ini ke controller.
Dalam kasus di atas Anda telah mempertimbangkan beralih menjadi IDEAL
AKTIFKAN di mana ketika saklar ditekan controller langsung mendapatkan LOGIC 0.
Tetapi praktis ketika sebuah saklar menutup kontak terbuka & dekat dengan cepat
Page6
Hal ini disebut sebagai SWITCH bouncing. Gambar 3 menunjukkan dalam bentuk
gelombang.
Seperti yang anda lihat saklar rilis tersebut bersih tanpa memantul. Ketika sebuah
tombol ditekan kontak terbuka & tutup selama sekitar 20ms. Dalam program-
program di atas LED akan berkedip pada awalnya ketika saklar ditekan karena
AKTIFKAN memantul tapi karena yang berkedip-kedip akan sangat cepat & tidak
akan terdeteksi oleh mata manusia. 20ms Meskipun waktu sangat singkat dalam
istilah manusia untuk mikrokontroler itu adalah waktu yang sangat lama. Tanpa
SWITCH DEBOUNCING controller akan berpikir bahwa saklar ditekan berkali-kali.
PROGRAM 3
ORG 0000H
SETB P2.0
SETB P2.1
loop1:
JB P2.0, loop1
mov R7, # 255
deb1_loop1:
JB P2.0, loop1
djnz R7, deb1_loop1
CLR P2.1
loop2:
JNB P2.0, loop2
SETB P2.1
AJMP loop1
Dalam hal ini program diubah controller menunggu untuk LOGIC 0 (loop1: JB P2.0,
loop1) pada input pin yaitu P2.0 kemudian beban R7 dengan 255 sekarang akan
Page6
memeriksa apakah input PIN masih memiliki LOGIC 0 (JB P2.0, loop1 ) cek controller
LOGIC ini 0 sampai nilai R7 menjadi 0 yang dalam hal ini adalah 255 kali. Jika sekali
pun mendeteksi controller LOGIC 1 maka itu keluar dari loop & debouncing kembali
ke loop utama (loop1) menunjukkan kesalahan dalam beralih tekan.
Pada dasarnya kode: --
mov R7, # 255
deb1_loop1:
JB P2.0, loop1
djnz R7, deb1_loop1 digunakan untuk beralih debouncing jika Anda pikir
periode menghilangkan bounce kurang kemudian gunakan DALAM LOOP LOOP
TEKNIK untuk memeriksa input pin untuk lebih dari 255 kali.
Page6