Anda di halaman 1dari 14

2

MODUL PERKULIAHAN

PERANCANGAN
BERBASIS
MIKROPROSESSO
R
Studi kasus dancing LED

Abstrak Sub-CPMK

INPUT DAN OUTPUT Mampu menjelaskan dan memahami


MIKROKONTROLLER Studi kasus dancing LED

Fakultas Program Studi Tatap Muka Disusun Oleh

03
Baradista Dimas Leotman, ST, M.Pd
Fakultas Teknik Teknik Elektro
Definis
Cara mengakses Port
Karena prosesor 8051 memiliki internal Port, maka prosesor ini dapat digunakan
sendirian (single chip application) tanpa melibatkan external clock generator, external I/O
device, external Memory, address decoder atau chip digital lainnya. Prosesor ini sudah
dapat digunakan sebagai kontroler tanpa melibatkan chip digital lainnya.

Port pada 8051.


Untuk menghubungkan algoritma program dengan sistem atau alat yang akan
dikendalikannya, telah disediakan 32-pin yang dikelompokkan menjadi 4 port, yaitu Port 0,
Port 1, Port 2 dan Port 3. Setiap bit pada register port terkait langsung dengan kondisi pin
tertentu, misalnya jika bit pada P1.5 (baca: bit kelima pada Port 1) diberi nilai biner “1”,
maka pin yang terkait dengannya, yaitu pin nomor 6 (lihat gambar 3.1.) akan berkondisi
HIGH atau tegangan 5 volt. Jika pin 6 ini disambungkan ke sebuah LED, maka LED akan
menyala. Sebaliknya, jika pin 6 tsb disambungkan ke sebuah sensor dan sensor tsb dalam
kondisi HIGH, maka P1.5 akan bernilai “1”. Pada kasus LED, pin P1.5. berfungsi sebagai
pin output, sedangkan pada kasus sensor, pin tsb berfungsi sebagai pin input bagi prosesor.
Register P0, P1, P2 dan P3 merupakan register bit addressable, setiap bit dapat
diakses 2 arah (input atau output) secara terpisah tanpa mempengaruhi bit lainnya. Sebagai
contoh, saat P1.5 digunakan sebagai pin input, P1.4 dapat digunakan sebagai output atau
sebaliknya.

Gambar 3.1. Konfigurasi Pin Mikrokontroler AT89C51

Port 0

2021 Perancangan Berbasis Mikroprosesor


2 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Port 0 (nol) terdapat pada pin 32 s/d pin 39. Port 0 adalah port paralel 8-bit dua arah
yang belum dilengkapi dengan rangkaian pull-up internal, yaitu rangkaian untuk
mempertahankan harga tegangan pada saat kondisi HIGH maupun LOW. Output dari port
0 dapat mensuplai arus ke 8 buah pin TTL. Meskipun demikian, karena pin pada port 0
tidak dilengkapi dengan internal pull-up, biasanya pin-pin pada port ini digunakan sebagai
pin input.

Selain untuk paralel port, pin-pin pada port 0 juga dapat digunakan untuk pin
address (A0 – A7) maupun pin data (D0 – DA7) ketika prosesor menggunakan memory atau
I/O eksternal.

Port 1
Port 1 terdapat pada pin 1 s/d pin 8. Port 1 adalah port paralel 8-bit dua arah yang
telah dilengkapi dengan internal pull-up. Setiap pin pada port 1 dapat mensuplai arus ke 4
buah pin TTL. Seluruh pin dapat digunakan sebagai input maupun output.

Port 2
Port 2 terdapat pada pin 21 s/d pin 28. Port 2 adalah paralel port dua arah yang
dilengkapi dengan rangkaian pull-up. Output dari port 2 dapat mensuplai arus ke 4 buah
pin TTL. Selain sebagai paralel port. Port 2 juga dapat digunakan sebagai pin address (lihat
gambar 3.1.). Untuk fungsi ini port 2 mengunakan internal pull-up yang kuat.

Port 3
Port 3 terletak pada pin 10 s/d 17. Port 3 adalah port paralel dua arah yang dilengkapi
dengan rangkaian pull-up. Output dari port 3 dapat mensuplai arus ke 4 pin TTL. Selain itu
port 3 juga memiliki fungsi lain yang dapat dilihat pada tabel 3.1 berikut :

Tabel 3.1. Fungsi lain Port 3.

2021 Perancangan Berbasis Mikroprosesor


3 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Mengakses Port pada 8051.
Cara mengakses Port tertentu adalah dengan menuliskan nama port tsb dalam instruksi,
misalnya :
MOV P1,#10010110B atau MOV P1,#96H

Berarti Register Port 1 pada SFR diberi data 10110110 dalam bilangan biner. Karena
program menyebabkan Port 1 mendapat data, berarti pada saat tsb Port 1 digunakan
sebagai OUTPUT port. Akibatnya pin-pin pada Port 1 akan memberikan tegangan
sesuai dengan data yang dimasukkan tadi, yaitu P1.0 (baca: bit ke-nol pada Port 1) atau
pin 1 (lihat gambar 3.1.) akan bertegangan 0 volt karena diberi data “0”, sedangkan P1.1
atau pin 2 akan bertegangan 5 volt karena diberi data “1”, dst sampai P1.7.
Karena P0, P1, P2 dan P3 merupakan register bit addressable, maka cara
mengaksesnya juga dapat dilakukan bit per bit, tidak harus sekaligus 1-byte atau 8-bit.
Gambar 3.2. merupakan contoh 2 cara mengakses Port, yaitu dengan memberikan data
sekaligus 1-byte atau 8-bit (sebelah kiri tanda sama dengan), dan memberikan data bit
per bit (sebelah kanan tanda sama dengan). Sebuah instruksi :
MOV P1,#10010110B
untuk mengakses sekaligus seluruh bit pada register Port 1, setara dengan 8 instruksi
yang mengakses bit-bit pada Port 1 satu per satu, yaitu :
CLR P1.0
SETB P1.1
SETB P1.2
CLR P1.3
SETB P1.4
SETB P1.5
CLR P1.6

2021 Perancangan Berbasis Mikroprosesor


4 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
SETB P1.7

PORT = P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0


1

96H = 1 0 0 1 0 1 1 0

Gambar 3.2. Dua cara mengakses Port.

Jika kita ingin menjadikan Port 1 sebagai Port input, maka kita dapat mengambil
data dari Port 1 sekaligus 1-byte atau kita ambil dan cek setiap bit pada Port 1 satu per
satu.. Berikut ini adalah contoh koneksi P1.4 dengan sebuah tombol. Seperti tampak
pada gambar 3.3. di bawah ini, P1.4 dalam keadaan menggantung (floating). Jika
tombol ditekan, maka P1.4 akan terhubung dengan ground sehinggan keadaannya LOW
atau logika ‘0’. Ketika tombol dilepas, maka P1.4 akan berlogika HIGH, karena masing-
masing pin pada Port 1 dilengkapi dengan internal pull-up, yaitu sebuah resistor yang
menghubungkan Vcc dengan pin tersebut.

tombol

P1.4

Gambar 3.3. koneksi P1.4 dengan sebuah tombol.

Berdasarkan gambar 3.3, jika kita ingin memastikan apakah tombol sedang ditekan
atau tidak, kita cukup memeriksanya dengan instruksi JNB (Jump if No Bit) atau
instruksi JB (Jump if Bit). Perhatikan instruksi di bawah ini :
JB P1.4, $ ;tetap di sini selama P1.4 HIGH atau tombol dilepas
JNB P1.4, $ ;tetap di sini selama P1.4 LOW atau tombol ditekan
ADD A,#10 ;A = A + 10 dilakukan setelah tombol dilepas
kembali.

2021 Perancangan Berbasis Mikroprosesor


5 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Instruksi pertama dan kedua merupakan instruksi Conditional Jump. Jika mengeksekusi
instruksi ini, prosesor akan lompat ke lokasi memory tertentu untuk mengambil kode
instruksi tergantung dari kondisi bit yang akan diperiksanya, dalam hal ini P1.4. Jika
kondisi yang diharapkan terpenuhi, maka prosesor akan melompat ke lokasi instruksi
yang ditulis di sebelah kanan tanda koma. Tulisan $ berarti prosesor harus melompat ke
lokasi sekarang (current memory address), artinya prosesor tidak akan mengeksekusi
instruksi pada lokasi memory berikutnya, tetapi akan mengeksekusi kembali instruksi
yang sekarang sedang dieksekusinya.
Sedangkan instruksi ketiga merupakan instruksi penjumlahan yang melibatkan register
A. Persamaan A = A +10 bukan persamaan yang salah tulis. Pada bahasa pemrograman
tulisan ini dianggap legal. Simbol A di sebelah kiri tanda = berarti isi baru register A,
sedangkan simbo A di sebelah kanan tanda = berarti isi lama register A. Instruksi ketiga
ini dieksekusi setelah P1.4 tidak lagi dalam kondisi LOW, artinya instruksi ini
dieksekusi ketika tombol dilepas.

Contoh 3.1 : Mengambil data dari DTMF.


Pada bagian ini akan dipaparkan salah satu contoh penggunaan Port pada 8051 ,
yaitu mengambil data dari IC DTMF, kemudian menampilkan data tersebut pada LED
7-segment.
DTMF (Dual Tone Multiple Frequency) merupakan standar yang dipakai untuk nada
panggil pada komunikasi via saluran telepon. Tekanan pada salah satu tombol angka
akan menghasilkan nada tertentu pada saluran telepon. Nada tersebut merupakan
kombinasi dari 2 sinyal yang berbeda frekuensi. Gambar 3.4. di bawah ini
memperlihatkan peta hubungan antara tekanan tombol angka dengan frekuensi yang
dihasilkannya. Misalnya, jika tombol ‘1’ ditekan, maka pada saluran telepon akan
keluar nada yang merupakan kombinasi dari frekuensi 697 Hz dan 1209 Hz. Kombinasi
nada ini merupakan standar untuk semua pesawat telepon nada yang ada saat ini.

2021 Perancangan Berbasis Mikroprosesor


6 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Gambar 3.4. Kaitan antara tombol angka dengan nada yang dihasilkan.

Karena prosesor hanya menerima sinyal digital sedangkan saluran telepon dilalui
oleh sinyal analog, maka untuk menghubungkan prosesor dengan saluran telepon
diperlukan komponen khusus. Jika kita ingin mengubah besaran analog ke besaran
digital, kita dapat menggunakan ADC (Analog to Digital Converter), sedangkan untuk
tujuan sebaliknya kita dapat menggunakan DAC (Digital to Analog Converter). Untuk
mengubah sinyal analog nada DTMF menjadi sinyal digital yang dapat dibaca oleh
prosesor cukup digunakan decoder DTMF. Input DTMF adalah sinyal analog berupa 1
di antara 16 kemungkinan nada yang dihasilkan oleh tekanan tombol pesawat telepon,
sedangkan outputnya berupa sinyal digital 4-bit. Gambar 3.5. memperlihatkan diagram
blok internal DTMF decoder MT8870, sedangkan Tabel 3.2. memperlihatkan hubungan
antara tombol yang ditekan untuk menghasilkan nada panggil dengan output yang
dihasilkan oleh decoder DTMF.

Gambar 3.5. Diagram blok internal DTMF decoder MT8870.


Tanda panah pada gambar 3.5. menandakan arah sinyal, misalnya, TOE merupakan pin
input sedangkan STD merupakan pin output. Sinyal nada yang akan dikonversi ke
bentuk biner diumpan ke pin IN+, IN- dan GS. Sedangkan 4-bit hasil konversinya
diberikan melalui pin Q4, Q3, Q2 dan Q1, dengan MSB pada Q4.
Pada tabel 3.2. terlihat, jika pin TOE dibuat LOW, maka Q4 – Q1 akan diputus
secara elektris dengan memberikan kondisi high impedance.

2021 Perancangan Berbasis Mikroprosesor


7 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Tabel 3.2 Tabel Kebenaran DTMF Dekoder

fLOW fHIGH tombol Q4 Q3 Q2 Q1


697 1209 1 0 0 0 1
697 1336 2 0 0 1 0
697 1477 3 0 0 1 1
770 1209 4 0 1 0 0
770 1336 5 0 1 0 1
770 1477 6 0 1 1 0
852 1209 7 0 1 1 1
852 1336 8 1 0 0 0
852 1477 9 1 0 0 1
941 1209 0 1 0 1 0
941 1336 * 1 0 1 1
941 1477 # 1 1 0 0
697 1633 A 1 1 0 1
770 1633 B 1 1 1 0
852 1633 C 1 1 1 1
941 1633 D 0 0 0 0
- - lainnya Z Z Z Z

Perlu ditekankan di sini, decoder DTMF bukan mengubah tekanan tombol menjadi
bilangan biner 4-bit, tetapi mengubah sinyal analog nada telepon menjadi bilangan biner
4-bit, di mana nada telepon tersebut berasal dari pesawat telepon yang salah satu tombol
angkanya ditekan. Gambar 3.6. berikut ini memperlihatkan contoh koneksi DTMF
decoder.

2021 Perancangan Berbasis Mikroprosesor


8 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Gambar 3.6. DTMF Dekoder
Pada Gambar 3.6. tersebut terlihat input DTMF berasal dari saluran telepon,
sedangkan outputnya berupa 4-bit sinyal biner dan 1-bit sinyal indikator StD. Cara kerja
DTMF decoder dipaparkan pada gambar 3.7.
Seperti tampak pada gambar 3.7., pin ESt akan HIGH selama nada yang masuk dari
saluran telepon merupakan nada valid yang berupa salah satu dari 16 jenis nada DTMF.
Jika nada tidak valid, termasuk keadaan tanpa nada, maka pin ESt akan kembali LOW.
Pada gambar 3.6. terlihat bahwa pin ESt ini diumpan balik ke pin St/GT.
Ketika ada nada baru yang valid, pin StD bernilai LOW sampai nada baru tersebut
selesai dikodekan atau dikonversi ke biner dan di-latch atau dikunci pada register
output. Pin StD akan HIGH saat nada baru selesai dikonversi, pin ini tetap HIGH
sampai datang nada baru yang valid. Selama nada yang masuk pada pin input DTMF
masih sama, atau selama tidak ada nada baru, maka pin StD akan tetap HIGH. Ini
berguna agar prosesor tidak mengambil nada saat 4-bit data yang ada pada register
output DTMF belum valid atau mantap.
Pin StD ini juga berguna sebagai indikator untuk menghindari pengambilan data yang
sama dilakukan berulang kali. Ketika kita, manusia, menekan salah satu tombol angka
pada telepon, biasanya tombol tersebut tertekan selama 100 ms atau lebih. Sedangkan
prosesor 8051 yang dilengkapi kristal 12 MHz hanya membutuhkan waktu 2 s untuk
mengambil data tersebut dari DTMF. Ini berarti, jika prosesor dibiarkan terus menerus
mengambil data dari DTMF selama tombol ditekan, maka prosesor akan mengambil
data yang sama sebanyak 50 ribu kali. Untuk membatasi prosesor dari aksi salah ini,
maka DTMF perlu dilengkapi dengan indikator, sehingga prosesor cukup melakukan 1
kali pengambilan saja, yaitu ketika StD dalam keadaan HIGH, setelah itu prosesor
menunggu sampai pin StD LOW kembali, atau menunda pengambilan berikutnya
selama 100 ms.

2021 Perancangan Berbasis Mikroprosesor


9 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Gambar 3.7. Operasi DTMF decoder MT8870
Berikut ini adalah contoh potongan program untuk mengambil 3 nada yang datang
berurutan melalui DTMF kemudian menyimpannya pada RAM internal mulai alamat

2021 Perancangan Berbasis Mikroprosesor


10 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
50H. Pin StD pada Output DTMF dihubungkan dengan P1.4, sedangkan masing-masing
pin Q4, Q3, Q2 dan Q1 pada output DTMF dihubungkan dengan P1.3, P1.2, P1.1 dan
P1.0.
JNB P1.4, $ ;tunggu di sini selama StD LOW
MOV 50H,P1 ;ambil data dari Port1 kemudian copy ke RAM
internal
JB P1.4, $ ;tunggu sampai StD LOW kembali
JNB P1.4, $ ;ulangi lagi untuk kedua kalinya
MOV 51H,P1 ;ambil data nada kedua
JB P1.4, $ ;tunggu sampai StD LOW kembali
JNB P1.4, $
MOV 52H,P1 ;ambil data nada ketiga
JB P1.4, $
Meskipun cara pengambilan data di atas benar, cara tsb tidak lazim dalam
pemrograman, sebaiknya digunakan teknik LOOP, yaitu eksekusi program kembali
berulang seperti berikut ini :
MOV B,#3 ;B sebagai Counter diisi angka 3
MOV R0,#50H ;R0 diisi angka 50H
AmbilLagi: JNB P1.4, $
MOV A,P1
JB P1.4, $
ANL A,#0FH ;ambil 4-bit LSB saja
MOV @R0,A ;copy data nada ke RAM yang alamatnya berada di
R0
INC R0 ;isi R0 ditambah satu
DJNZ B,AmbilLagi ;Isi B dikurangi 1, lompat balik jika B belum nol.

Dengan cara penulisan program seperti ini, modifikasi program lebih mudah dilakukan,
misalnya jika data yang ingin diambil berjumlah 30, maka perubahan yang dilakukan
cukup dengan mengganti instruksi pertama menjadi :
MOV B,#30

Contoh 3.2 : menulis angka pada LED 7-segment.

2021 Perancangan Berbasis Mikroprosesor


11 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Untuk menulis angka ke LED 7-segment kita cukup mengatur pemadaman atau
penyalaan beberapa LED atau segment. Jika kita menggunakan LED common anoda,
maka LED yang ingin kita padamkan harus diberi kondisi HIGH. Misalnya, jika kita
ingin menulis angka ‘0’, maka semua LED kita nyalakan kecuali LED atau segment g,
sehingga semua pin kita beri kondisi LOW kecuali pin g.

Gambar 3.8. Contoh LED 7-segment.

Misalkan masing-masing pin g, f, e, d, c, b dan a pada LED 7-segment


dihubungkan dengan P2.6, P2.5, P2.4, P2.3, P2.2, P2.1 dan P2.0. Jika kita ingin
menampilkan data yang diambil dari DTMF tadi, maka penulisan potongan programnya
adalah sebagai berikut :

MOV B,#3 ;B sebagai Counter diisi angka 3


MOV R0,#50H ;R0 diisi angka 50H
MOV DPTR,#Segment ;DPTR = alamat ROM yang diberi label Segment
AmbilLagi: JNB P1.4, $
MOV A,P1 ;ambil nada dari port 1
JB P1.4, $ ;tunggu sampai nada tsb berlalu
ANL A,#0FH ;ambil 4-bit LSB saja dengan cara masking
MOV @R0,A ;copy data nada ke RAM yang alamatnya berada di
R0
INC R0 ;isi R0 ditambah satu
MOVC A,@A+DPTR ;ambil data dari ROM sesuai isi A.
MOV P2,A ;kirim ke 7-segment
DJNZ B,AmbilLagi ;Isi B dikurangi 1, lompat balik jika B belum nol

2021 Perancangan Berbasis Mikroprosesor


12 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
SJMP $

; gfedcba
Segment: DB 11000000B ; angka 0
DB 11111001B ; angka 1
DB 10100100B ; angka 2
DB 10110000B ; angka 3
DB 10011001B ; angka 4
DB 10010010B ; angka 5
DB 10000010B ; angka 6
DB 11111000B ; angka 7
DB 10000000B ; angka 8
DB 10010000B ; angka 9
DB 11111111B ;Blank, padam semua

Perhatikan kode instruksi berikut ini,


Segment: DB 11000000B ; angka 0
Kode tsb ditujukan untuk menuliskan data pada ROM dimulai dengan alamat yang
diberi label Segment. DB merupakan singkatan dari Define Byte, yaitu data yang akan
ditulis berukuran 1-byte, dalam hal ini 11000000. Data tsb akan dicopy ke Port 2 untuk
memadamkan dan menyalakan beberapa LED. Karena yang dipakai hanya P1.6 sampai
P1.0, maka bit ke-7 atau bit paling kiri tidak mempengaruhi LED 7-segment. Sedangkan
7-bit berikutnya dipakai untuk menentukan angka yang tampil pada 7-segment, dalam
hal ini data 100 000 akan diumpan ke pin gfe dcba. Sehingga semua segment menyala,
kecuali segment g yang mendapatkan logika ‘1’ atau kondisi HIGH. Jika disesuaikan
dengan gambar 3.5, maka angka yang ditampilkan oleh 7-segment tsb adalah angka ‘0’.
Pola untuk angka lainnya dapat kita cocokkan dengan gambar 3.8.
Penjelasan tentang cara mengambil data dari ROM internal insya ALLAH akan
dijelaskan pada modul berikutnya, yaitu modul akses memory.

2021 Perancangan Berbasis Mikroprosesor


13 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/
Daftar Pustaka
1. Pitowarno,Endra. mikroprosesor & interfacing. penerbit andi, Yogyakarta,2005

2. Haryanto,Agus. Memebuat aplikasi sederhana dengan microsoft access. Kuliah

umum ilmu komputer.com

3. Wahana komputer. Panduan praktis pemrograman borland delphi 7.0. penerbit

andi,yogyakarta,2003.

4. Prasetia,Retna. Teori dan praktek interfacing port paralel dan port serial komputer

dengan visual basic 6.0 ,penerbit andi yogyakarta,2004.

5. Budhi,Widodo.interfacing komputer dan mikrokontroler. Penerbit PT elex media

komputindo,jakarta,2004.

2021 Perancangan Berbasis Mikroprosesor


14 Baradista Dimas Leotman, ST, M.Pd
Biro Bahan Ajar E-learning dan MKCU
http://pbael.mercubuana.ac.id/

Anda mungkin juga menyukai