Struktur Pemrograman BASIC



Untuk memberikan penjelasan mengenai struktur dasar program BASIC, berikut ini contoh program bahasa BASIC dalam platform BASCOM-AVR yang dijelaskan untuk stiap bagian-bagiannya.

$regfile = "m8535def.dat"  ' use MCU ATmega8535
$crystal = 8000000         ' 8 MHz crystal
$baud = 19200              ' use baud rate
$hwstack = 32              ' default use 32 for the hardware stack
$swstack = 10              ' default use 10 for the SW stack
$framesize = 40

Config Scl = Portb.4
Config Sda = Portb.5

Declare Sub Write_eeprom(byval Adres As ByteByval Value As Byte)
Declare Sub Read_eeprom(byval Adres As Byte , Value As Byte)

Const Addressw = 174       
Const Addressr = 175       

Dim B1 As Byte , Adres As Byte , Value As Byte

‘---------------------- program utama---------------------------    
Call Write_eeprom(1 , 3)    
Call Read_eeprom(1 , Value) : Print Value      'read it back
Call Read_eeprom(5 , Value) : Print Value      'again for address 5
I2csend &H40 , 255          'all outputs high
I2creceive &H40 , B1        'retrieve input
Print "Received data " ; B1 'print it
End
‘------------------------akhir program utama -------------------

Sub Write_eeprom(byval Adres As Byte , Byval Value As Byte)
  I2cstart                  'start condition
  I2cwbyte Addressw         'slave address
  I2cwbyte Adre             'asdress of EEPROM
  I2cwbyte Value            'value to write
  I2cstop                   'stop condition
  Waitms 10                
End Sub

Sub Read_eeprom(byval Adres As Byte , Value As Byte)
  I2cstart                  'generate start
  I2cwbyte Addressw         'slave adsress
  I2cwbyte Adres            'address of EEPROM
  I2cstart                  'repeated start
  I2cwbyte Addressr         'slave address (read)
  I2crbyte Value , Nack     'read byte
  I2cstop                   'generate stop
End Sub

Berikut ini adalah penjelasan mengenai kedudukan/fungsi setiap syntax program pada contoh program di atas.

A. Pernyataan Induk
Pernyataan induk (metastatment), merupakan pernyataan yang bekerja pada tingkat yang lebih tinggi dari pernyataan biasa.
Pernyataan induk lebih banyak digunakan untuk mengatur sistem dari BASIC. Penulisan penyataan induk diawali dengan tanda dollar ($) pada bagian depannya. Bila pernyataan biasa mengontrol program pada saat run-time, maka pernyataan induk mengontrol program pada saat compile-time.

$regfile = "m8535def.dat"  ' MCU yang digunakan ATmega8535
$crystal = 8000000         ' 8 MHz crystal
$baud = 19200              ' Nilai baud rate
$hwstack = 32              ' nilai hardware stack (=32, default)
$swstack = 10              ' nilai SW stack (=10, default)
$framesize = 40            ' nilai framesize (=40, default)

Pada contoh, artinya bahwa program digunakan untuk memprogram IC mikrokontroler ATmega8535 (pre-processor “m8535.dat”) dengan Kristal 8 MHz. Kemudian program mengatur penggunaan baud = 19200, hardware stack = 32,SW stack = 10, dan framesize = 40.

                                             -------ooo000ooo-------

Memasukkan file program buatan
Bahasa BASIC mengizinkan kita memasukkan file program lain (diluar program yang sedang dibuat) kedalam program yang sedang dibuat karena keperluan tertentu. Misalnya, karena file program yang akan digabungkan tersebut sering sekali digunakan secara berulang-ulang. Sehingga dengan begitu akan meringkas penulisan program-program yang akan dibuat selanjutnya. Cara memasukkan suatu file tersebut adalah dengan pengarah (directive) $INCLUDE. Pernyataan induk dengan pengarah $INCLUDE akan memberitahu compiler pada saat proses kompilasi tentang adanya program lain yang berhubungan dengan program tersebut dan harus dirangkai (include) dalam program.

Contoh:
$include "driver.bas"

Artinya: Program yang sedang dibuat mengikutkan/merangkaian file dengan nama driver.bas dalam proses kompilasi (compile) program tersebut.

B. Konfigurasi Fitur

Config Scl = Portb.4
Config Sda = Portb.5

Bagian ini digunakan untuk mengkonfigurasikan kanal/jalur serial data (SDA) dan serial clock (SCL) pada penggunaan fitur I2C. Dari konfigurasi tersebut, terlihat bahwa program mengarahkan PORTB.4 sebagai kanal SCL dan PORTB.5 sebagai kanal SDA. Dengan menggunakan software BSCOM-AVR, apabila kita akan menggunakan suatu fitur dari mikrokontroler AVR (timer, port I/O, SPI, ADC, TWI, dll) maka kita harus melakukan konfigurasi fitur tersebut terlebih dahulu.

C. Deklarasi Awal Sub-Program/fungsi

Declare Sub Write_eeprom(byval Adres As ByteByval Value AsByte)
Declare Sub Read_eeprom(byval Adres As Byte , Value As Byte)

Kode ini digunakan untuk men-deklarasi-kan suatu sub-program. Deklarasi sub-program ini dalam bahasa C sering disebut dengan deklarasi prototype fungsi. Deklarasi sub-program ini bertujuan memberitahukan compiler bahwa dalam program terdapat sub-program yang dapat direfrensi atau diakses oleh program utama. Dalam contoh, nama sub-program yang dapat diakses adalah ‘Write_eeprom’ dan ‘Read_eeprom’.

D. Deklarasi konstanta

Const Addressw = 174       
Const Addressr = 175       

Kode ini menunjukkan bahwa dalam program terdapat konstanta dengan nama ‘Addressw’ yang bernilai 174 dan ‘Addressr’ yang bernilai 175.

E. Deklarasi Variabel

Dim B1 As Byte , Adres As Byte , Value As Byte

Kode ini menunjukkan bahwa dalam program terdapat beberapa penentuan variabel, yaitu variabel ‘B1’ bertipe-databyte, variabel ‘Adres’ bertipe byte, dan variabel ‘Value’ bertipe-data byte

F. Program Utama (main program)

Call Write_eeprom(1 , 3)    
Call Read_eeprom(1 , Value)
Print Value                       'read it back
Call Read_eeprom(5 , Value)
Print Value                       'again for address 5
I2csend &H40 , 255                'all outputs high
I2creceive &H40 , B1              'retrieve input
Print "Received data " ; B1       'print it
End

Bagian kode ini adalah merupakan program utama.

G. Blok Sub-Program
Kode sub-program dibawah ini adalah bagian lengkap dari sub-program bernama ‘Write_eeprom’ dan ‘Read_eeprom’ yang mana kedua sub-program tersebut telah dideklarasikan sebelumnya pada awal program.

Blok sub program ‘Write_eeprom’

Sub Write_eeprom(byval Adres As Byte , Byval Value AsByte)
  I2cstart                  'start condition
  I2cwbyte Addressw         'slave address
  I2cwbyte Adres            'asdress of EEPROM
  I2cwbyte Value            'value to write
  I2cstop                   'stop condition
  Waitms 10                
End Sub


Blok sub program ‘Read_eeprom’

Sub Read_eeprom(byval Adres As Byte , Value As Byte)
  I2cstart                  'generate start
  I2cwbyte Addressw         'slave adsress
  I2cwbyte Adres            'address of EEPROM
  I2cstart                  'repeated start
  I2cwbyte Addressr         'slave address (read)
  I2crbyte Value , Nack     'read byte
  I2cstop                   'generate stop
End Sub

                                               
                                                     -------ooo000ooo-------

Pada bahasa BASIC, dalam membuat blok program yang penggunaannya sering dilakukan pemanggilan berulang-ulang selain menggunakan pernyataan ‘sub-program’ kita juga dapat menuliskannya dengan cukup pemberian “label” pada suatu blok sub-program. Label, berfungsi sebagai judul dari suatu sub-program. Label harus berdiri sendiri. Artinya dalam satu baris hanya boleh mengandung satu buah label dan tidak boleh mengandung bentuk instruksi lainnya. Sebuah label harus diikuti oleh tanda titik dua ( : ) dan diakhiri dengan kata kunci ‘return’ apabila suatu ‘label’ tersebut berstatus sebagai program lompatan dengan perintah “GoSub”. Sedangkan apabila suatu ‘label’ berstatus sebagai program lompatan dengan perintah “GoTo”, maka pada akhir ‘label’ tidak perlu diakhiri dengan kata kunci ‘return’.

Contoh:

Nama_label:
Dim    I As Byte
PORTB = 1
For I = 1 To 8
   Rotate PORTB, Left
   Waitms 100
Next I
Return

H. Komentar Program

Semua pernyataan yang ditulis dibelakang tanda petik tunggal (‘) merupakan komentar program. Komentar program sebenarnya bukanlah bagian program. Komentar program merupakan keterangan tambahan pada suatu program. Keterangan ini bersifat tambahan dan tidak ikut dalam proses kompilasi program oleh compiler serta tidak mempengaruhi suatu program.

Pernyataan-1           ‘ komentar 1
Pernyataan-2           ‘ komentar 2
Pernyataan-3           ‘ komentar 3
Pernyataan-n           ‘ komentar n




Share on Google Plus

About Robotics University

    Blogger Comment
    Facebook Comment

0 comments:

Post a Comment