Pembuatan program mikrokontroler dalam bahasa tingkat-tinggi (high-level language, disingkat HLL), misalnya bahasa ‘C’ atau ‘BASIC’, memungkinkan kita mengurangi waktu pengembangan secara signifikan jika dibandingkan dengan Bahasa Assembly. Ada juga yang mengatakan, seorang perancang yang sudah beperngalaman bisa menuliskan sejumlah baris kode-kode yang sama per hari baik dalam C dan Assembly. Namun perlu diingat bahwa, sebaris kode dalam C sama dengan sejumlah kode atau baris dalam Assembly.

Biasanya, sebuah program yang ditulis dalam HLL akan lebih terstruktur dibandingkan program yang sama yang ditulis dalam Assembly. Dengan demikian, akan lebih mudah melakukan pelacakan (debugging) dalam HLL.

Kebanyakan arsitektur mikrokontroler 8-bit dilengkapi dengan sebuah kompailer. Bagaimanapun juga, ada perbedaan besar dalam bagaimana efisiensi arsitektur untuk HLL, dan bagaimana kode-kode C disusun agar efisien untuk suatu arsitektur mikrokontroler tertentu. Ada yang mengatakan bahwa arsitektur berbasis akumulator, seperti 8051 dari Intel, bekerja dengan baik menggunakan variabel-variabel global, sedangkan arsitektur berbasis register, seperti AVR-nya Atmel, bekerja dengan baik menggunakan variabel-variabel lokal.

Keuntungan menggunakan variabel-variabel lokal adalah kode-kode menjadi lebih terstruktur, dan portabilitas serta pemeliharaan kode menjadi lebih sederhana dibandingkan penulisan kode/program yang melibatkan banyak variabel global. Selain itu, penggunaan kembali kode akan menjadi lebih mudah jika ditulis dengan melibatkan variabel-variabel lokal. Jika semua parameter yang keluar masuk suatu subrutin didefinisikan didalam pemanggilan fungsi, maka akan sangat mudah untuk menggunakan subrutin tersebut untuk proyek baru lainnya.

Kelemahan utama penulisan program dalam HLL adalah programnya menjadi lebih besar dan lambat dibandingkan jika ditulis dalam Bahasa Assembly. Bagaimanapun juga, seiring dengan jumlah baris program yang bertambah, gap ukuran antara kode yang ditulis dalam HLL dan yang ditulis dalam Assembly menjadi mengecil. Untuk para pengguna AVR, titik temu (antara HLL dan Assembly) kesamaan ukuran sekitar 4K. Program yang ditulis dalam HLL umumnya tidak akan lebih cepat dibandingkan dituliskan dalam Assembly. Jika kecepatan eksekusi pada beberapa bagian program menjadi bagian yang kritis, solusinya (biasanya) adalah menuliskan bagian kritis tersebut dalam Assembly, sisanya (kerangka program dan bagian-bagian yang tidak kritis) dalam HLL.

Oya… menurut Anda, sebaiknya yang mana akan gunakan? HLL atau Bahasa Tingkat Tinggi atau kembali ke selera asal yaitu Assembly? Silahkan berkomentar/diskusi… Terima kasih.

Sumber:

  • Svendlsi, O.J., 2005, Designing for Efficient Production with In-System Re-programmable Flash µCs, Atmel Applications Journal, Number 4 - Spring 2005

Tags: , , ,

48 Responses to “Pemrograman Mikrokontroler dalam Bahasa Tingkat-Tinggi”

  1. Kalau menurut saya, kalau ingin benar-benar memahami mikrokontroler, bahasa assembler merupakan pilihan yang ideal. Pemahaman bahasa assembler harus seiring dengan pemahaman arsitektur mikrokontroler. Tanpa pemahaman yang baik tentang seluk-beluk hardware mikrokontroler, mustahil bisa membuat program assembler dengan baik.

    Tapi kalau ingin bisa segera praktek membuat aplikasi berbasis mikrokontroler, baik untuk tujuan belajar maupun komersil, tidak ada salahnya menggunakan bahasa tingkat tinggi. Development Time-nya pendek. Saya sendiri selama ini selalu menggunakan bahasa C untuk proyek2 mikrokontroler. Tapi pada awal belajar, saya menggunakan assembler. Setelah mahir, baru pindah ke C.

    Setidaknya, bahasa assembler harus dikuasai, karena pada sistem yang kritis, assembler adalah yang terbaik. Saran: kalau masih kuliah, genjot saja assemblernya, belajar HLL relatif lebih mudah kok.

    Pengen nulis lebih banyak, tapi ini kan bukan tempat untuk posting.
    :)

  2. Memang untuk membuat suatu source code dalam C language, development time yang dibutuhkan lebih singkat daripada menggunakan assembler, tetapi memory space yang dihabiskan di microcontroller tsb lebih banyak yang menggunakan C dibanding Assemb.

    salam
    sony sodikin
    http://www.sodikinsony.blogspot.com

  3. Untuk informasi tambahan…

    Silahkan mencermati artikel Technline dari salah satu staff Atmel di postingan saya Migrating from Assembly to C for 8-bit Microcontrollers, mulai 1 Februari 2009 (jam 4.00 pagi), karena memang sudah terjadwal postingannya…

  4. Maaf Mas Agfianto saya langsung To the point aja.
    Mas tolong di dibahas mengenai program ADC/DAC,Port PS/2, Port VGA serta fungsi2xnya untuk Xilinx sPARTAN 3E.
    saya bingung buat mengembangkan dan menggunakan Spartan 3E.trus berikan jg teori-teorinya kalo bisa, ya….
    Saya sangat berharap sekali dengan pencerahan dari tulisan2x mas agfianto.
    terima kasih banyak sebelumnya.
    mohon maaf kalo saya salah posting.

  5. menurut saya–subyektif, tergantung kebutuhan. Jika ingin kontrol sepenuhnya ya gunakan asembler, kalo tidak ya pake HLL saja, disamping waktu pengembangan yang bisa dianggap lebih cepat, maintenancenya juga lebih mudah. Sebagai contoh program yang saya buat dengan bahasa assembler saat ini, mungkin akan sulit dimaintenance oleh programmer lain ato bahkan oleh saya sendiri untuk 5 tahun ke depan, jika dokumentasinya kurang bagus.

    Ada beberapa perusahaan yang menggunakan 2 bahasa pemrograman untuk sebuah system produk mereka –validitas informasi ini dipertanyakan :D. Untuk akses/kontrol hardware mereka menggunakan uC tersendiri dengan bahasa assembler, hal ini dilakukan untuk mendapatkan kontrol sepenuhnya atas system. Sedangkan kontrol grafisnya menggunakan uC dengan bahasa C, hal ini untuk kemudahan serta efektifitas waktu. Dan akhirnya menurut saya itu dikembalikan lagi ke pengembang.

    Dan meskipun sekarang saya menggunakan bahasa C untuk pengembangan, saya setuju dengan pak Chandra, bahwa pengetahuan mengenai bahasa assembler sangat berguna bagi pengembang firmware uC.

    Mohon koreksi jika ada kesalahan, salam;

  6. kabar dari lapangan…
    temen saya lebih ‘gila’ lagi, apapun yang terjadi dia selalu pake assembly, terakhir dia ke YK ketemu/diskusi dengan saya pokoke maniak assembly… (walaupun tim-nya ada juga yang pake C), alasannya simpel sudah terbiasa dan gak mau belajar bahasa lain… mendingan ngerjain proyek - dia bisa cepat menulis program assembly, with intuition tentunya - daripada mikirin bahasa baru…

    nah kalo saya… tergantung juga, kalo ada yg private HLL ya bisa, LLL ya bisa… kalo proyek terserah tim saya, yg penting program harus seefisien mungkin dan berjalan secara optimal…

    @widyo: terima kasih komentarnya yang luar biasa…

  7. salam all
    saya masih awam mengenai microcontroller, maaf mas apa bisa memakai visual basic untuk mengisi microcontroller sperti bahasa c atau assembly?

  8. @beni: silahkan baca artikel saya di

    http://agfi.staff.ugm.ac.id/bl.....itu-mudah/

    jangan lupa juga mengunduh PDF-nya…

  9. mas saya mau tanya pemograman bahasa c dengan menggunakan avr untuk mengatur pwm motor dc bagai mn?
    soale saya mau membuat robot pengikut garis putih.
    saya ksulitan.
    mksih

  10. untuk pemula seperti Saya lebih setuju dengan bahasa LLL, karena memang itu basicnya, namun saya juga punya keinginan untuk mempelajari pemrograman dengan HLL (C). untuk itu mohon saran buku panduan apa yang cocok bwt saya, kalo bisa yang didalamnya jg mmbahas interface dengan komputer untuk aplikasi dengan HMI.
    atau jgn2 udh tersedia artikelnya yang lengkap disini ya???

  11. Mas saya mau tanya nih
    1. apakah mikrokontroler AT89C51 bisa di program dengan bahasa pemrograman delphi atau tidak?
    2. apakah mikrokontroler bisa mongontrol arus listrik 220 volt, bagaimana caranya?
    3. bagaimana cara koneksi program delphi sebagai interface pada PC dengan program assembly sebagai program mikrokontroler?

    saya akan membuat skripsi tentang pemanfaatan port PC untuk mengaontrol aplikasi kelistrikan lampu pada rumah dengan mokrokontroler AT89C51.

    Mohon petunjuknya, terima kasih.

  12. @adew:
    1. mikrokontroler bisa diprogram dengan assembly, basic, pascal, c - delphi atau VB bukan untuk mikrokontroler apapun;
    2. yang dikontrol bukan tegangan 200V tetapi peralatan yang menggunakan tegangan AC;
    3. lihat jawaban 1

    untuk contoh pengontrolan aplikasi kelistrkan silahkan lihat artikel tentang meteran daya (klik).

  13. Mas saya mau membuat program pengontrolan lampu di rumah dengan menggunakan komputer berbasis bahasa program vb 60,bahannya apa saja yang dibutuhkan,konfigurasi dan interface serta source code programnya bagaimana ya?

  14. tolong diberi contoh memprogram mikrokontroler dengan bahasa C dan Basic, serta apa keunggulan dari masing-masing program tersebut

  15. ehem,ehem,maf nimbrung,btw kog pada pengen bahas bahasa aja,tolong dong,aplikasinya????

  16. wuh,..,.,.,.,.aku nyari program untuk line follower dengan bahasa asembly sulit banget. yang ketemu hanya pakai bahasa C

  17. @ragun:
    kok yang dicari pake assembly? khan lebih susah… karena memang kebanyakan source-nya pake C atau Basic…

  18. pak agfi, siapa nama temen bapak yang Maniak Assembly ? saya mau tanya trik2 menghafal assembly kepada beliau.

  19. @sukhoi150:

    temen2 saya sudah beralih ke C, karena untuk kasus2 tertentu menggunakan assembly jadi susah dan memakan waktu yang lama, padahal ada tuntutan agar proyek2 bisa diselesaikan secepatnya dengan hasil maksimal…

    temen2 saya termasuk saya belum ada yang bisa hafal seluruh instruksi ASM, ini hanya masalah kebiasaan saja, kalo sering membuat program dalam bahasa ASM tentunya akan hafal dengan sendirinya…

  20. saya mau tanya ni…….
    gimana cara tahap pemograman mikrokontroler dengan menghubungkan ke keypad…..
    saya lagi menyusun proyek akhir.
    thanks ya

  21. Apa ya list program dalam bahasa C dan assambler untuk ATMega16 dari sensor dalam bentuk tegangan (Port A) ke Port D

  22. assalamu’alaikum
    permisi pak..
    saya minta tolong, gimana pemrograman DSP pada mikrokontrolel AVR AT32UC3A0512 untuk filter noise suara yang berbasis neuro-fuzzy
    bales di email saya atau di web saya ya pak,,
    thnk’s :-)

  23. Klo saya boleh berpendapat,
    Berdasar pengalaman saya paling enak pake bahasa karedok; bahasa campuran antara C dan Assembler. Kerangka dasarnya adalah C sedangkan subrotin2nya dalam Assembler. subrotin berarti satu fungsi bukan hanya satu perintah. Jangan salah, kadang menggunakan assembler lebih sederhana dari C.
    jika ditemukan suatu oprasi yang sulit diimplementasikan dengan Assembler (contohnya; perkalian, pembagian) kita tinggal pakai C.
    Sering saya membuat proyek terbentur harus ganti mikro di atasnya karena keterbatasan FLASH, jika hanya menggunakan C. Sedangkan harus jadi secepatnya, yang berarti tidak mungkin menggunakan Assembler.
    Bukankah dengan menggabungkan kedua bahasa tersebut dalam satu program kita mendapatkan kelebihan dari keduanya.

  24. permisi pak
    saya mau tanya..
    bisa bikin filter noise digital pake mikrokontroller gak?minimal pakai mikrokontroller seri apa?
    tlng bls ya pak

  25. lebih lengkap tentang mikrokontroller mengenai contoh projectnya…tolong diperjelas…dan ditampilkan…terima kasih sebelumnya…

  26. @erich:
    silahkan lihat daftar artikel di sini.

  27. @fatini:
    pada prinsipnya bisa, konsepnya adalah mengimplementasikan filter ke dalam mikrokontroler, untuk pemula bisa dgunakan BASCOM atau langsung saja ke ASM… mikrokontroler yang digunakan sebaiknya yang kapasitas Flash-nya agak besaran minimal 4 kB

  28. MENURUT SAYA BAHASA “C” ITU BOROS MEMORY, SAYA PERNAH COBA MEMBUAT PROGRAM UNTUK ROBOT LINE FOLLOWER…. MASA HASIL DARI BAHSA C SETELAH DIKOMPAIL MENJADI HEXA UKURANNYA MENCAPAI 5 KB, NAMUN YANG HASIL KOMPILAN PAKE ASSEMBLER UKURANNYA CUMA 1 KB. PADAHAL KAN FUNGSINYA SAMA, ITU KAN NAMANYA GA EFEKTIF DAN EFISIEN!. POKOKE BAHASA C ITU BOROS! MENDINGAN PAKE ASEMBLER. TOH NANTINYA BAHSA C JIKA DIKOMPAIL KAN JUGA DIUBAH KE BENTUK ASSEMLY DULU OLEH PROGRAM PENGKOMPILNYA, YANG AKHIRNYA MENJADI FILE HEXA. I LOVE ASSEMBLER…….!!!!!

  29. PASUKAN TIGA RADEN
    April 4th, 2010 at 3:43 am

    JANGAN PAKE BAHASA C DECH…..,, mendingan pake assembler kita bisa berhadapan langsung dengan register2. bahasa c itu buat orang yang pemalas… yang ga ingin tau tentang teknik dasar2 dalemannya mikro.

  30. kelemahan bahasa C salah satunya:
    1. Boros memory
    2. susah mencari kesalahan jika terjadi error
    3. arah program jadi sulit diketahui karrena kita tidak berhadapan langsung
    dengan register bawaan MCU, melainkan register telah diwakilkan oleh kompiler.
    4. jika dilihat dari hasil asembllernya terkadang terdapat sub program yang diulang-ulang,
    padahal jika dengan menggunakan bahasa assembler cukup dilakukan satu kalisaja.
    5. program terlalu panjang.

  31. Tapi bagi yang banyak kerjaannya dibidang microcontroller
    saya kira C dan BASCOM dan Pemrograman tingkat tinggi yang lainnya sangatlah membantu.
    Toh C dan BASCOM itu bisa dikombinasikan dengan assembly juga.
    Masalah hasil kompilasi yang besar, itu juga bisa kita akali, misalnya dah kita ketahui fungsi atau procedure di C atau BASCOM yang bikin file kita besar, nah kita ganti dengan asm dan kita buat fungsi atau procedure yang lebih efektif lagi.

  32. @RISQI :Itu namanya kita melakukan kerja dua kali dong….

  33. Mas, bagaimana membuat program bahasa c yang bisa mengontrol On/Off nya suatu motor listrik dan pengaturan temperatur<

  34. Wah pada gak ngerti semua, kebiasaan pegang cangkul sih..

  35. Permisi…permisi… (sambil bawa cangkul mo ke sawah)
    Gak mudeng neh kalo gak ada contoh aplikasinya :(

  36. Kenapa semua pakar di indonesia ini kebanyakan ngomongin golongannya Atmel/AVR aja yah? Mana nih yang pakar PIC (Microchip) atau Motorolla?

  37. @tang:
    silahkan bukan http://microrobotics.blogspot.com/ - punya pak Moh Ibnu Malik

  38. Masih keliatan minoritas pak, trus PIC golongan mid-range dan high-end nya kayaknya belon terwakili…

    Ada apa ya dengan PIC di Indonesia? Padahal itu sangat populer di luar negeri. Dan pemakai PIC juga cenderung memakai bahasa inggris atau asing lainnya, apa mereka dari luar negeri atau sekolahnya di luar negeri?

  39. @RAden Triwunang… tulisan anda huruf besar semua gak sopan… tapi saya dipihak panjenengan… mari kita bunuhi semua yang gak pake assembly.. karena kita maniac assembly …

  40. Dulu pernah saya menggunakan PIC16F84..
    Saya sedang eksperimen dengan PIC24HJ (16bit) Semoga nantinya bisa dituliskan dalam website saya Atau kenapa tidak Anda dulu yang memulai…

    untuk BASCOM ternyata hasil kompilasi bisa kecil dan efisien jika tahu cara menggunakannya…

    untuk yang maniak assembly silahkan saja, jangan ada upaya membunuh kreativitas rekan2 lainnya hanya gara2 tidak menggunakan assembly - contoh hasil/prestasi yang menggunakan C atau BASCOM sudah terlalu banyak disebutkan…

    terima kasih

  41. @raden triboneng: wah namanya ikut2 nih… wah kalah tenar donk nanti nama saya .

  42. @raden triwunang, .. anda lucu sekali …

  43. RADEN TRIWUNANG
    May 17th, 2011 at 6:31 pm

    @raden triboneng….,, ini ngomong2 raden triboneng giginya kaya bonenk juga ngga??.

  44. Masalah memory boros dan lambatnya mikrokontrol yang diprogram dengan bahasa C, tidak akan memberi pengaruh yang begitu besar (dalam perkembangan uC). Toh masalah clock, uC sekarang sudah hadir dengan clock dan MIPS yang super cepat dan turah2… apalagi sekedar memory, seperti lautan yang dikencingi, ga akan penuh2…..

    peralihan bahasa memang harus terjadi untuk menghadapi tuntutan jaman…
    So… belajar C/Bascom sedini mungkin lebih baik daripada keras kepala malas berpindah ke HLL..
    bisa jadi anak cucu kita kelak sulit berkomunikasi dengan Eyang nya yg ga mw update belajar bahasa…

  45. Pak agfi saya udah lama ga belajar micro kontroler bagaimana memulainya ?Terima kasih ~ makeityourring diamond engagement rings

  46. Untuk program dengan kerja yang tidak kritikal dan tidak butuh banyak memori, bahasa C mungkin lebih mudah. Tapi kalau sistem yang kita buat adalah sistem yang kritikal atau butuh banyak memori, maka Assembly lebih menjamin suskesnya sistem.

    Beberapa kali saya membuat program yang selalu hang jika ditulis pakai C. Setelah saya telusuri, ternyata RAM-nya kurang. Padahal jika ditulis pakai assembly bisa berjalan dengan lancar jaya.

  47. Sigondrong dari Gua Hiro: WAH ADA KANG SULHAM SETIAWAN….,,, MANTAP BUKUNYA KANG SULHAM

Trackbacks/Pingbacks

  1. Memulai Belajar Mikrokontroler - Quick, Easy and Harmless!

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>