Setelah Anda mengikuti artikel saya tentang belajar membuat program atau aplikasi mikrokontroler AT89/AVR (Membuat Aplikasi Mikrokontroler AVR/AT89: Khusus Pemula!), rasanya tidak afdol jika saya tidak atau belum memberikan contoh kasus sangat sederhana, untuk memberikan gambaran begitu mudahnya kita membuat aplikasi mikrokontroler!
Kasus!
Di sebuah kampung Ngebut Benjut ternyata masih banyak orang-orang mengendari sepeda motornya dengan ngebut, untuk itu pak RW mengundang mas Yusi untuk menyelesaikan masalah ini, yaitu membuatkan sebuah tanda yang berupa LAMPU BERKEDIP DENGAN SELANG WAKTU SETENGAH DETIK-an.
Solusi: Diagram Alir!
Sebenarnya solusi tanpa Mikrokontroler sangat mudah dilakukan, lha wong cuman lampu berkedip (LED) dengan durasi setengah detik-an, cuman karena diminta menggunakan mikrokontroler maka dengan segera mas Yusi membuat sebuah diagram alir untuk solusi kasus tersebut, berikut diagram alir yang telah dibuat oleh mas Yusi, perhatikan bahwa diagram alir tidak boleh menunjukkan suatu bahasa pemrograman tertentu…
Gambar 1
Nah, begitu kata mas Yusi, sekarang aku mau mengimplementasikan-nya dengan mikrokontroler, namun pake mikrokontroler yang mana ya? Keluarga AT89 atau AVR?
Solusi: Menentukan mikrokontroler!
Sebelum membuat rangkaian dasar, mas Yusi berpikir sejenak untuk menentukan mikrokontroler apa yang akan digunakan, apakah menggunakan mikrokontroler keluarga AT89 atau keluarga AVR, semuanya berasal dari pabrik yang sama yaitu Atmel Corporation, dan di Indonesia dua-duanya sudah cukup populer, apalagi sudah lumayan banyak buku-buku yang mengulas kedua mikrokontroler tersebut.
Mmmm… Pake yang mana ya?
Fitur AT89LS53 (yang pokok-pokok saja, detilnya lihat datasheet):
- Three 16-bit Timer/Counters
- Nine Interrupt Sources
- Programmable UART Serial Channel
- SPI Serial Interface
- Low Power Idle and Power Down Modes
- Interrupt Recovery From Power Down
- Programmable Watchdog Timer
Fitur ATMega32 (yang pokok-pokok saja, detilnya lihat datasheet):
- Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes
- One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode
- Real Time Counter with Separate Oscillator
- Four PWM Channels
- 8-channel, 10-bit ADC
- 8 Single-ended Channels
- 7 Differential Channels in TQFP Package Only
- 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x
- Byte-oriented Two-wire Serial Interface
- Programmable Serial USART
- Master/Slave SPI Serial Interface
- Programmable Watchdog Timer with Separate On-chip Oscillator
- On-chip Analog Comparator
Wah, lumayan juga fitur-fitur si ATMega32, kelihatannya cocok pake AT89LS53 nich, begitu pikir mas Yusi. Memang benar untuk aplikasi yang sangat sederhana ini, hanya cukup diperlukan mikrokontroler yang sederhana juga, Anda bisa membandingkan semua mikrokontroler dari Atmel di websitenya. Namun kali ini, dengan kebaikan mas Yusi, beliau akan berikan contoh dua-duanya. Oya, masih ada mikrokontroler mini lainnya yang bisa digunakan termasuk ATTiny dan yang sejenisnya.
Solusi: Membuat Rangkaian Minimal
Rangkaian minimal berdasarkan kasus dan diagram alir yang telah dijelaskan sebelumnya mengikuti gambar 2, untuk penggunaan AT89LS53, dan gambar 3, untuk penggunaan ATMega32.
Gambar 2
Gambar 3
Membuat Program-nya!
Sekarang, berdasarkan diagram alir atau flowchart yang sudah dibuat sebelumnya dan mengikuti rangkaian Gambar 2 atau Gambar 3, mas Yusi mulai membuat program, cuman pake bahasa apa ya? Apakah pake assembly aja atau C perawan (belum ada pustaka macem-macem seperti Native C di winAVR atau GCC), Codevision (c plus pustaka macem-macem), Basic (dengan varian BASCOM 8051 dan BASCOM AVR)…??
Oke dach pake BASCOM 8051 dan BASCOM AVR aja lach biar pembaca juga bisa mengikuti dengan mudah…
Menggunakan BASCOM 8051, instruksi di awal program adalah deklarasi pustaka dan besar frekuensi kristal yang digunakan (lihat Gambar 2 dan Gambar 3):
$regfile = “reg51.dat”
$crystal = 12000000
Sedangkan untuk BASCOM AVR deklarasinya sebagai berikut:
$regfile = “m32def.dat”
$crystal = 8000000
Langkah selanjutnya adalah mengimplementasikan diagram alir ke masing-masing mikrokontroler, untuk AT89 menggunakan BASCOM 8051 diperoleh hasil (listing program) sebagai berikut:
Do
P1 = &H00
Waitms 250
Waitms 250
P1 = &HFF
Waitms 250
Waitms 250
Loop
Sedangkan menggunakan ATMega32 berbasis BASCOM AVR diperoleh listing berikut:
Config Portb = Output
Do
Portb = &H00
Waitms 500
Portb = &HFF
Waitms 500
Loop
Penjelasan program:
- Awal program sama semua, memberitahukan compiler BASCOM 8051 atau BASCOM AVR agar menggunakan pustakanya masing-masing ($regfile) dan memberitahukan besarnya frekuensi kristal yang digunakan ($crystal);
- Penggunaan ATMega32 atau keluarga AVR mengharuskan pendefinisian port dilakukan terlebih dahulu, apakah suatu PORT atau PIN akan dijadikan sebagai masukan atau luaran, untuk itu digunakan instruksi atau deklarasi CONFIG PORTB = OUTPUT yang artinya mendeklarasikan bahwa PORTB pada ATMega32 digunakan sebagai luaran, dihubungkan ke LED. Namun untuk AT89, deklarasi semacam ini tidak perlu dilakukan;
- Jika Anda perhatikan program utama untuk AT89LS53 dan ATMega32 semuanya hampir sama:
- DO..LOOP digunakan untuk melakukan pengulangan terus menerus tanpa henti, kecuali catu daya dimatikan;
- P1=&H00 atau PORTB=&H00 dua-duanya digunakan untuk menghidupkan LED, mengapa diberi logika “0″, karena rangkaiannya menggunakan konfigurasi active low. Untuk ATmega32 atau AVR, Anda bisa mengkonfigurasi active low atau active high tidak masalah semua bisa berjalan dengan baik, cuman hati-hati dengan AT89LS53 atau AT89, karena yang paling cocok dan sederhana adalah active low (hal ini saya jelaskan secara gamblang di buku saya “Belajar Mikrokontroler AT89C51/52/55: Teori dan Aplikasi, Edisi 2“);
- Untuk melakukan penundaan digunakan instruksi WAITMS (menunggu dalam satuan milidetik), mengapa di BASCOM 8051 dituliskan WAITMS 250 (menunggu 250 milidetik) dua kali sedangkan di BASCOM AVR cukup hanya satu kali WAITMS 500. Hal ini disebabkan fasilitas WAITMS di BASCOM 8051 hanya menerima maksimum angka 255, sedangkan pada BASCOM AVR bisa maksimum 65.535;
Saatnya Uji coba…
Langkah berikutnya adalah menjalankan atau menguji coba program dengan cara (1) menggunakan simulator, atau (2) langsung download ke rangkaian minimal sesuai Gambar 2 dan/atau Gambar 3. Penggunaan simulator sangat bermanfaat sebelum membuat rangkaian dalam PCB-nya.
Demikianlah solusi dari masalah pak RW oleh mas Yusi, monggo saja jika ada pertanyaan atau komentar bisa dituliskan dan disharingkan, semoga bermanfaat.
December 16th, 2009 at 11:51 am
Tambahan informasi:
sementara ini setahu saya dengan dukungan library yang mulai lengkap, BASCOM AVR bisa mengatasi berbagai antarmuka termasuk dengan MMC, I2C, SPI, dll…
January 24th, 2010 at 7:11 pm
mas sy coba simulasikan kok lednya ga berubah ya??
sy pake baskom 8051
January 25th, 2010 at 9:12 am
@fathnan:
bisa jadi LED-nya yang bukan tipe simulasi tapi komponen biasa, juga cek program BASCOM 8051-nya sudah bener atao belum dari segi logika tentunya…
January 26th, 2010 at 4:33 pm
mau nanya mas untuk menggerakkan motor brushless 3 phase bolehkah saya menggunakan AT 89C2051 series
terima kasih
djusuf
March 5th, 2010 at 8:43 pm
aswb………
mas mau nanya juga ni
saya biasa pake bhs C,
tapi karna satu dan lain hal sekarang sedang belajar bascom
saya pake bascom AVR
untuk scan keypad ko ga bisa2 y???
say pake librarinya bascom (getkbd)
tapi tetep gak bisa
selalu muncul angka 16…
kira2 kenapa y???
kalo boleh minta tolong ada subroutin baca keypad’na g???
saya pake 8535
trimakasih….
May 11th, 2010 at 7:54 am
Hallo Mas,
Artikel “LED Blink! AT89 (AT89LS53) vs. AVR (ATMega32)” koq gambar-gambarnya blank ?
May 11th, 2010 at 9:26 am
@tarry:
gak kok, tetap muncul, cuman memang gambar2 tsb saya simpan di server berbeda…
July 4th, 2010 at 10:21 am
ass wr wb
mas eko, saya mau tanya saya lagi proses TA saya bingung menentukan mikrokontroler apa ? yang bisa digunakan pada sistem keamanan kendaraan ON/OFF menggunakan HP & bisa juga dipakai GPS (menentukan titik koordinat). saya punya rekomendasinya AT89S51/52, apa saya bisa pake itu ? makasih yah mas eko, kalau bisa secepatnya he…
July 5th, 2010 at 12:24 pm
@tomy
wa’alaikum salam wr wb
pake AVR atau AT89 bisa semua…
August 25th, 2010 at 12:18 pm
biar lampu led nyala satu satu gemana programnya mas, untuk bascom avr.
makasi
January 28th, 2012 at 4:41 pm
Pak Agfi yg terhormat, bagaimana cara memrogram dengan asembler AT89sxx, P0 sebagai output led display, dinyalakan dengan penekanan tombol P1.0 (nyala led dari kiri/LSB ke kanan/MSB), P1.1 (nyala led kanan ke kiri), P1.2 led mati.
April 26th, 2013 at 7:55 pm
Kak,Saya siswa SMKN1NGAWI.. Boleh minta tolong gak…?
gimna cra program untk membuat LED nyala dari tengah, Yaitu LED 4 N 5 DIAVRnya
May 13th, 2013 at 1:47 pm
Minta sourcecode untuk aplikasi sirine beberapa suara dengan chip family 8051. trims atas jawabannya nanti. tolong kirim ke email saya.
May 20th, 2013 at 12:13 pm
Pak, masih buka pesanan untuk modul min AVR enggak ya?
March 29th, 2018 at 9:41 am
Ini yang saya cari-cari pak
April 18th, 2018 at 9:58 am
thank u for sharing
May 16th, 2018 at 2:13 pm
thank you for sharing it’s so helpful
December 9th, 2018 at 12:09 am
thank you for sharing, im so interested.
January 8th, 2020 at 5:45 pm
Pak, masih buka pesanan untuk modul min AVR enggak ya?