Friday, May 21, 2010

Pemrograman uC dalam bahasa Tingkat Tinggi

Bahasa apa yang Anda pergunakan untuk memprogram uC ? Secara garis besar akan dua kelompok programmer : Kelompok pengguna bahasa Assembler dan Kelompok pengguna bahasa tingkat tinggi (high level). Kelompok pengguna bahasa tingkat tinggi kemudian akan terbagi lagi menjadi pengguna kompiler C, Pascal, Basic dll.


Secara umum kelebihan penggunaan bahasa Assembler adalah :
  • kode program kecil
  • eksekusi program cepat

Sedangkan kelemahannya adalah :
  • bahasa assembler adalah bahasa yang rumit
  • spesifik untuk satu tipe prosesor, tiap prosesor memiliki bahasa assembler sendiri. Hal ini mengakibatkan    adaptasi kode yang telah ada bagi prosesor lain sangat sulit.
  • sulit mengimplementasikan operasi-operasi pengolahan data pada bahasa assembly. Pernah mencoba mengimplementasikan  algoritma enkripsi data atau FFT pada bahasa assembler ?

Sedangkan bahasa tingkat tinggi memiliki kelebihan :
  • relatif mudah dipelajari
  • tidak terikat secara khusus pada jenis prosesor.

Sedangkan kelemahannya adalah :
  • hasil kompilasi yang relatif besar dalam ukuran byte bila dibandingkan dengan hasil kompilasi Assembler untuk suatu operasi yang sama.
  • penggunaan memori RAM yang relatif besar dalam ukuran byte bila dibandingkan dengan hasil kompilasi Assembler untuk suatu operasi yang sama.
  • eksekusi program yang lebih lambat bila dibandingkan dengan program Assembler.


Walau demikian, penulis lebih menyukai memprogram uC dengan bahasa high level. Hal ini dikarenakan adaptasi (porting) kode dari satu jenis prosesor ke prosesor lainnya relatif mudah. Biasanya hanya operasi I/O (misalnya akses paralel/serial port) yang melibatkan fitur h/w secara khusus. Bagi penulis yang seringkali harus bekerja dengan beberapa tipe prosesor, hal ini sangat membantu sekali. Sebagai contoh, saya dapat mengadaptasi dengan relatif mudah kode enkripsi DES yang ditulis untuk PC agar bisa dipergunakan pada prosesor AVR dan MCS51. Dengan demikian saya bisa membandingkan performansi kode DES ini pada
berbagai prosesor. Kelemahan bahasa tingkat tinggi yang cenderung boros memori bukanlah masalah yang sulit diatasi. uC generasi terbaru cenderung memiliki memori internal yang cukup besar. Misalnya AT89C55 memiliki 20Kbyte Flash, lebih dari cukup untuk membuat program yang 'serius' dengan bahasa tingkat tinggi. Untuk mempercepat eksekusi program, Anda dapat mempergunakan kristal yang cukup tinggi, karena AT89C55 dapat mempergunakan kristal hingga 20MHz (untuk varian tertentu).


Lalu bahasa tingkat tinggi yang mana yang layak dipergunakan ? Pemilihan ini tentu tergantung pada selera dan
kebutuhan Anda. Yang jelas, telah tersedia kompiler bahasa tingkat tinggi untuk bahasa C, Pascal dan Basic. Saat ini bahkan telah ada Java Virtual Machine (JVM) bagi beberapa uC tertentu.


Saya sendiri lebih menyukai bahasa C. Pemilihan C karena ketersediaan pustaka (library) C yang telah sangat banyak. Anda bisa mendapatkan library C untuk keperluan apa saja secara gratis di Internet : library pengolahan string, DSP, sistem kendali, RTOS dll. Sebagian lib. merupakan pustaka UNIX/LINUX atau PC. Tetapi dengan sedikit usaha (kadang-kadang dengan usaha keras) Anda dapat mengkonversinya untuk dipergunakan di uC.


Tetapi keuntungan yang saya rasakan paling besar dalam penggunaan bahasa tingkat tinggi adalah saya tidak perlu lagi mempelajari kode assembly tiap uC dan tidak perlu lagi pusing memikirkan alokasi memori atau alamat memori dan register, karena hal ini sudah diambil alih oleh kompiler........


Kompiler C mana yang Anda akan pilih ? Sampai sekarang saya mempergunakan kompiler gratis dari komunitas GNU/GPL : SDCC untuk prosesor MCS51 dan WinAVR untuk uC AVR. Terdapat banyak pula kompiler komersial untuk kedua tipe prosesor ini. Salah satunya yang terkenal dan banyak dipergunakan adalah Keil. Anda dapat mendownload versi Demo dari kompiler ini.


Salam

Sri Buntoro



Link :
SDCC : http://sdcc.sourceforge.net
Keil : http://www.keil.com
WinAVR : http://winavr.sourceforge.net

No comments:

Post a Comment