Anda di halaman 1dari 13

201

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

APLIKASI PORT UNTUK MASUKAN/KELUARAN PENGGERAK LED


Tujuan
Kembali ke aplikasi LED, kali ini akan menggabungkan dengan aplikasi masukan
berupa 2 buah push button yang dihubungkan ke Port 3 (P3.0 dan P3.1).
Rangkaian Aplikasi

Rangkaian Aplikasi Untuk Masukan/Keluaran Penggerak LED

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

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

sebagai logika “1” karena adanya internal. Dengan demikian akan lebih baik jika
masukan tombol-tekan disambung ke ground.
Program Pertama

Program BAB3_09.ASM digunakan untuk menghidupkan LED melalui tombol-tekan


di P3.0 dan mematikan LED melalui tombol-tekan di P3.1. Dengan demikian akan
dilakukan proses potling (pengecekan terus menerus) pada Port 3 apakah ada
tombol yang ditekan atau tidak ? jika ada, yang mana ? appakah tombol-tekan di
P3.0 atau P3.1 ?

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

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

Program kedua

Program kedua (BAB3_10.ASM) ini mirip dengan program pertama (BAB3_09.ASM)


hanya saja kita hanya menggunakan tombol-tekan di P3.0 untuk menghidupkan dan
sekaligus mematikan LED secara bergantian (sebagai Toggle Switch). Sehingga
perlu dipersiapkan suatu register (dalam hal ini digunakan RC dan tentu saja anda
juga bias menggunakan register lainnya) untuk menyimpan status LED apakah
sedang menyala (R0=1) atau tidak (R0=0), dengan kata lain register ini akan
digunakan sebagai “mata” intuk mikrokontroler AT89C51/52/55 untuk melihat
apakah LED “menyala” atau tidak. Diagram alirnya ditunjukan pada gambar berikut
ini.

Awalnya status Port 3 dibaca terlebih dahulu kemudian disimpan ke akumulator


(baris-10), kemudian dilakukan pengecekan apakah tombol di P3.0 ditekan atau
Page6

tidak (baris-11), jika tidak maka ulangi pengecekan status Port 3 dari awal,

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

demikian seterusnya. Program akan memeriksa status P3 selama tidak akan


ditekan, jika P3.0 ditekan, maka dilakukan pemeriksaaan status lampu LED apakah
sedang menyala atau mati 9baris-13). Jika LED dalam kondisi menyala (R0=1),
maka melompat dan mengerjakan instruksi dibaris-22 untuk mematikan LED, status
LED di R0 diubah ke 0 (baris-23) dan lampu dimatikan (baris-24), selanjutnya
lompat ke label TUNGGU (baris-18) untuk antisipasi efek bouncing pada tombol-
tekan. Sedangkan jika LED dalam kondisi mati (R0=0), maka dikerjakan baris 16
untuk mengubah status R0 menjadi 1 dan menyalakan LED (baris-17), proses
selanjutnya adalah antisipasi efek bouncing, dengan cara menunggu hingga P3.0
dilepas.
Sebuah program lain yang mengambil ide dari program pertama (BAB3_09.ASM)
dan kedua (BAB3_10.ASM) digunakan untuk menghidupkan lampu berjalan dengan
ketentuan saklar (yang terhubung ke P3) digunakan untuk menghentikan dan
sekaligus untuk meneruskan jalannya lampu, programnya ditunjukan untuk
program ketiga (BAB3_11.ASM).

Program Ketiga

Page6

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

Program BAB3_11.ASM ini pada dasarnya merupakan gabungan antara program


menggeser LED dan program toggle switch yang telah dibahas sebelumnya. Sama
seperti program sebelumnya (BAB3_10.ASM), perlu digunakan sebuah register,
dalm hal ini register R4, yang digunakan sebagai status apakah LED sedang
menyala bergantian (berjalan) atau tidak, sehingga penekan tombol di P3.0 akan
mempengaruhi proses yang akan dikerjakan selanjutnya, apakah meneruskan
proses penyalaan LED atau menghetikannya.

Pertama data tampilan LED disimpan di register R5 (baris-9), demikian juga dengan
Page6

status LED yang sedang menyala bergantian dianggap sedang menyala bergantian

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

atau R4=1 (baris-10). Proses selanjutnya adalah mengecek status di register R4


(baris-19), jika ternyata lampu LED sedang dalam proses menyala bergantian
(R4=1), maka R4 akan diisi dengan 0 (nol) atau dengan kata lain proses LED
menyala bergantian dihentikan (baris-21), sebaliknya jika ternyata LED sedang
berhenti menyala bergantian (R4=0), maka R4 akan diisi dengan 1 (satu) atau
dengan kata lain proses LED menyala bergantian dilanjutkan (baris-24).

Dengan demikian, sebenarnya program ini hanya melakukan pengubahan status


register R4, menjadi 0 (nol) atau 1 (satu) sesuai dengan status sebelumnya (proses
toggle). Sedngkan subrutin LED_JALAN tetap akan jalan, hanya saja proses
penyalaan LED bergantian tersebut bergantung dari isi register R4 (baris-27), jika
isinya saat itu tidak sama dengan 1 (satu) atau R4=0, maka hanya dilakukan proses
pengiriman data register R5 ke Port 1, tanpa mengubah apapun yang ada di
register R5 atau LED berhenti berjalan-geser. Akan tetapi jika R4 saat itu isinya
sama dengan 1 (proses LED berjalan harus dilanjutkan), maka isi register R5 akan
diubah sesuai dengan proses penggeseran penyalaan (baris 29-33), demikian
seterusnya.

HASIL PERCOBAAN

Program 1
Page6

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

Program 2

ANALISA:
Program 1:
Page6

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

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

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

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

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

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

selama sekitar 30ms.

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

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

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D


APLIKASI PORT UNTUK MASUKAN/KELUARANPENGGERAK LED 2010

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

POLITEKNIK NEGERI JAKARTA _kelompok 1.TT 4D

Anda mungkin juga menyukai