Pages

Tuesday, 5 March 2013

Bahasa Pemrograman Mikrokontroler

      Mikrokontroler AVR (Alf and Vegard's Risc processor) standar memiliki arsitektur 8 bit, dimana semua instruksi dikemas dalam kode 16-bit, dan sebagian besar instruksi dieksekusi dalam 1 (satu) siklus clock. AVR dapat dikelompokkan menjadi empat kelas, yaitu keluarga ATtiny, keluarga ATSOSxx, keluarga ATMega, dan AT86RFxx. Pada dasamya, yang membedakan masing-masing kelas adalah memori, peripheral, dan fungsinya.
      Mikrokontroler AVR ATmega16 adalah salah satu dari keluarga ATmega dengan populasi pengguna cukup besar. Memiliki memori flash 16k dan 32 jalur input output, serta dilengkapi dengan ADC 8 kanal dengan resolusi 10-bit dan 4 kanal PWM. Sebuah chip dengan fitur cukup lengkap untuk mendukung beragam aplikasi, termasuk robotik.
      Pemrograman mikrokontroler AVR (Atmega16) menggunakan beberapa bahasa program seperti bahasa Basic, C atau Assembler. Untuk bahasa basic kita gunakan Software Bascom AVR sedang bahasa C dan Assembler kita gunakan WinAVR. Program aplikasi yang kita susun dalam software setelah di kompilasi akan dihasilkan file dengan ekstensi heksa. File heksa inilah yang akan kita tuliskan ke memori flash mikrokontroler AVR melalui sebuah alat yang disebut Downloader. Rangkaian Downloader ada yang sederhana dan dapat kita buat sendiri. Anda juga dapat mendownload di internet skema PCB Downloader kemudian membuatnya sendiri. Pada postingan berikutnya akan saya bahas secara khusus mengenai Downloader.

Pemrograman Dengan Bascom AVR

       Pada umumnya bahasa yang dipergunakan untuk memprogram mikrokontroler adalah bahasa Assembly. Bahasa Assembly adalah bahasa pemrograman tingkat menengah, dimana program yang dibuat lebih mendekati bahasa mesin, sehingga pemenfaatan memori dapat dilakukan secara optimal, namun di sisi lain pemrogramannya menjadi relatif sulit. Karena bahasa yang dipergunakan Bascom, yaitu Basic, adalah bahasa tingkat tinggi, maka pemrograman menggunakan Bascom sangatlah mudah untuk dipelajari. Sintaksnya tidak jauh berbeda dari Basic pada umumnya, misalnya do-loop, for-next, while-wend, goto, gosub dan sebagainya. Selain itu Bascom dilengkapi dengan fungsifungsi khusus, misalnya LCD untuk menampilkan karakter pada LCD, PRINT untuk mengirimkan karakter ke PC melalui kabel RS232, SHIFTIN dan SHIFTOUT untuk komunikasi serial sinkron dan lain sebagainya. Fungsi-fungsi khusus tersebut jika dituliskan dalam bahasa Assembly akan menjadi lebih panjang dan rumit, terutama karena kita harus mengetahui register-register yang ada pada mikrokontroler.

Kontruksi bahasa BASIC pada BASCOM-AVR
Setiap bahasa pemprograman mempunyai standar penulisan program. Konstruksi dari  program bahasa BASIC harus mengikuti aturan sebagai berikut:
$regfile = "header"
'inisialisasi
'deklarasi variabel
'deklarasi konstanta
Do
'pernyataan-pernyataan
Loop
end
Pengarah preprosesor
$regfile = "m16def.dat" merupakan pengarah pengarah preprosesor bahasa BASIC yang memerintahkan untuk meyisipkan file lain, dalam hal ini adalah file m16def.dat yang berisi deklarasi register dari mikrokonroller ATmega 16, pengarah preprosesor lainnya yang sering digunakan ialah sebagai berikut:
$crystal = 12000000  'menggunakan crystal clock 12 MHz
$baud = 9600             'komunikasi serial dengan baudrate 9600
$eeprom                     'menggunakan fasilitas eeprom

Karakter Pada Bascom


Karakter pada Bascom dipergunakan untuk membentuk label, keyword, variabel, dan operator, yang kesemuanya akan membentuk suatu program. Pada dasarnya karakter pada Bascom terdiri dari karakter huruf (A-Z) dan karakter angka (0-9). Beberapa karakter pada Bascom yang dipergunakan secara khusus terdapat pada tabel 2-1.


Tipe Data


Setiap variabel pada Bascom mempunyai tipe data yang menunjukkan kapasitas dan jenis data yang dapat disimpan pada variabel tersebut. Hal ini berpengaruh pada seberapa besar memori yang diperlukan untuk menyimpan variabel tersebut. Tabel 2-2 menunjukkan tipe data pada Bascom beserta ukuran dan rentangnya.

Variabel

     Variabel adalah simbol yang digunakan untuk mewakili suatu nilai. Variabel digunakan sebagai tempat penyimpanan data atau penampung data sementara. Variabel numerik hanya dapat diisi nilai numerik (bit, byte, integer, word, long, dan single). Isi dari suatu variabel numerik dapat berupa :
· Suatu nilai konstan
       A = 5
       C = 1.1
· Nilai variabel numerik lain
       A = B
· Nilai yang didapat dengan mengkombinasikan variabel, konstan, dan operator
      Temp = A + 5
Pada Bascom terdapat beberapa aturan mengenai penamaan suatu variabel, yaitu :
· Nama suatu variabel maksimum terdiri atas 32 karakter dan dapat berupa huruf ataupun angka.
· Karakter pertama variabel haruslah berupa huruf.
· Nama variabel tidak boleh menggunakan kata-kata yang dipergunakan Bascom sebagai perintah, pernyataan, register dan operator (misal AND, OR, DIM, P1 TIMER0 dan lain sebagainya)
Sebelum digunakan suatu variabel haruslah dideklarasikan terlebih dahulu tipe data yang dipergunakan dengan menggunakan pernyataan DIM
      DIM A As Byte
      DIM Nama1 As Byte, Nama2 As Integer
      DIM Kata As String*10
Selain menggunakan DIM, variabel dapat juga ditentukan tipe datanya menggunakan
     DEFBYTE, DEFINT, DEFBIT, dan DEFWORD
     DEFBYTE A
     DEFWORD B;C;D
Suatu variabel dapat mempunyai nama lain atau alias. Umumnya alias digunakan untuk mengganti variabel standar dengan nama yang lebih mudah diingat. Hal ini akan berguna pada saat membuat program yang panjang dan kompleks, jika terdapat perubahan penggunaan pin atau port, cukup diganti pada pernyataan Alias.
     Saklar1 Alias PB.0
     LED1 Alias PD.0

Konstanta

Konstanta adalah variabel yang mempunyai nilai konstan selama program dijalankan. Untuk mendeklarasikan suatu konstanta dapat digunakan dua cara, yaitu menggunakan Dim atau Const
      Dim A As Const 5
      Dim B1 As Const &B1001
      Const Cbyte = &HF
      Const Cint = -1000
      Const Csingle = 1.1
      Const Cstring = "tes"

Larik

Larik atau array adalah kumpulan variabel dengan nama dan tipe data yang sama. Untuk membedakan satu variabel dengan variabel lainnya digunakan indeks. Indeks haruslah berupa angka dengan tipe data byte, integer atau word, dengan nilai minimal 1 (bukan 0). Pendeklarasian larik mirip seperti variabel biasa, hanya ditambahkan jumlah komponen lariknya.
      Dim a(10) as byte

Sistem Bilangan

Pada pemrograman mikrokontroler terdapat 3 sistem bilangan yang sering digunakan, yaitu desimal (basis 10), biner (basis 2), dan heksadesimal (basis 16). Cara penulisan bilangan pada Bascom disesuaikan dengan sistem bilangan yang digunakan,
yaitu :
· Untuk bilangan desimal tidak didahului angka ataupun huruf lain
· Untuk bilangan biner didahului dengan &B
· Untuk bilangan heksadesimal didahului dengan &H
      Contoh : 240 (bilangan desimal), &B11110000 (bilangan biner), &HF0 (bilangan heksadesimal)

Operator

Operator digunakan untuk melakukan operasi terhadap bilangan. Pada Bascom operator dibedakan menjadi operator aritmetik, operator relasional, dan operator logika. Operator aritmatik adalah operator yang digunakan dalam kalkulasi, yaitu + (penjumlahan), - (pengurangan), * (perkalian, / (pembagian), \ (pembagian integer), MOD (modulo = sisa dari pembagian). Operator relasional digunakan untuk membandingkan dua nilai, yang memberikan hasil benar (1) atau salah (0) dan dapat digunakan untuk membuat keputusan.


Operator logika digunakan untuk menguji suatu pola bit tertentu, manipulasi bit atau operator Boolean. Misal operator AND dapat digunakan untuk mengabaikan semua bit dalam suatu byte kecuali satu bit untuk memantau status bit tersebut


Pernyataan Bersyarat

Pada Bascom terdapat beberapa pernyataan bersyarat yang sering digunakan yaitu If – Then, If – Then – Elseif, dan Select – Case

Syntaksis If – Then

   If <syarat> Then
   <Pernyataan 1>
   <Pernyataan 2>
   Else
   <Pernyataan 3>
   <Pernyataan 4>
   End If

Sintaksis If – Then – Elseif

    If <syarat1> Then
    <Pernyataan 1>
    <Pernyataan 2>
    Elseif <syarat2>Then
    <Pernyataan 3>
    <Pernyataan 4>
    Else
   <Pernyataan 5>
   <Pernyataan 6>
   End If

Sintaksis Select – Case

     Select Case < Variabel>
     Case < Nilai 1> : <Pernyataan 1>
     Case < Nilai 2> : <Pernyataan 2>
     Case Else : <Pernyataan 3>
     End Select

Pernyataan Perulangan (Loop)

Loop adalah suatu perulangan terhadap perintah atau instruksi sampai mencapai keadaan tertentu (jumlah perulangan tersebut dapat diketahui). Fungsi dari loop sendiri banyak sekali, dan dapat menghemat dalam penulisan program karena program yang sama dapat dilakukan dengan beberapa perintah dan kemudian diulang-ulang. Terdapat 3 pernyataan perulangan yaitu Do-Loop, While-Wend, dan For-Next.

Sintaksis Do – Loop

     Do
     <Pernyataan 1>
     <Pernyataan 2>
     Loop

Sintaksis While – Wend

     While <Syarat>
     <Pernyataan 1>
     <Pernyataan 2>
     Wend

Sintaksis For – Next

     FOR <Variabel> = <Nilai Awal> TO/DOWNTO <Nilai Akhir>
     <Pertambahan/Pengurangan>
     <Pernyataan 1>
     <Pernyataan 2>
     Exit

Semoga bermanfaat..

Download : BascomAVR 2.0.7.3

No comments:

Post a Comment