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.

Tags: , , , , ,

14 Responses to “LED Blink! AT89 (AT89LS53) vs. AVR (ATMega32)”

  1. Tambahan informasi:
    sementara ini setahu saya dengan dukungan library yang mulai lengkap, BASCOM AVR bisa mengatasi berbagai antarmuka termasuk dengan MMC, I2C, SPI, dll…

  2. mas sy coba simulasikan kok lednya ga berubah ya??
    sy pake baskom 8051

  3. @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…

  4. mau nanya mas untuk menggerakkan motor brushless 3 phase bolehkah saya menggunakan AT 89C2051 series

    terima kasih

    djusuf

  5. 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….

  6. Hallo Mas,
    Artikel “LED Blink! AT89 (AT89LS53) vs. AVR (ATMega32)” koq gambar-gambarnya blank ?

  7. @tarry:
    gak kok, tetap muncul, cuman memang gambar2 tsb saya simpan di server berbeda…

  8. Tony Satria Permana
    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…

  9. @tomy
    wa’alaikum salam wr wb
    pake AVR atau AT89 bisa semua…

  10. biar lampu led nyala satu satu gemana programnya mas, untuk bascom avr.
    makasi

  11. 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.

  12. Kak,Saya siswa SMKN1NGAWI.. Boleh minta tolong gak…?
    gimna cra program untk membuat LED nyala dari tengah, Yaitu LED 4 N 5 DIAVRnya

  13. Minta sourcecode untuk aplikasi sirine beberapa suara dengan chip family 8051. trims atas jawabannya nanti. tolong kirim ke email saya.

  14. Pak, masih buka pesanan untuk modul min AVR enggak ya?

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>