BASCOM
BASCOM
Kompiler BASCOM-8051 yaitu kompiler yang menggunakan bahasa
BASIC. Alasannya adalah bahasa Basic relatif lebih mudah dibanding
bahasa tingkat tinggi lainnya. Kemudian, kompiler cukup lengkap
karena telah dilengkapi dengan simulator untuk LED, LCD, dan
monitor untuk komunikasi serial. Dengan demikian, proses
perancangan sistem yang dibuat akan lebih mudah.
Gambar 1 Shorcut Bascom
1.1 Penginstalan Program Bascom
Gambar 2 Prosedur Penginstalan BASCOMGambar 3 Prosedur
Penginstalan BASCOM
Gambar 4 Prosedur Penginstalan BASCOMGambar 5 Prosedur
Penginstalan BASCOM
Gambar 6 Prosedur Penginstalan BASCOM
Gambar 7 Cara Penginstalan BASCOMMulai step 1 sampai step 8 yang
kita lakukan hanya meng-eklik NEXT. Kemudian setelah terakhir kita
meng-eklik |FINISH, maka Compiler Bascom telah terinstal pada
komputer dan siap untuk digunakan. 1.2 Menjalankan Program Bascom
:
Setelah program dijalankan maka akan tampil editor seperti
berikut :
Gambar 8 Menu BASCOM
Setelah editor tersebut muncul kita tuliskan program
mikrokontroler pada editor tersebut . Tetapi sebelum kita tuliskan
programnya kita seting dulu beberapa parameter tertentu. Parameter
yang utama adalah library dari jenis mikrokontroler yang kita klick
tombol option>compiler>misc
Tabel 1 merupakan keterangan lengkap ikon-ikon dari program
BASCOM-8051.Tabel1.1 Daftar Isi Menu BASCOM-8051
IkonNamaFungsiShortcut
File NewMembuat file baruCtrl + N
Open FileMembuka fileCtrl + O
File CloseMenutup Program Yang Dibuka_
File SaveMenyimpan fileCtrl + S
Save AsMenyimpan dengan nama lain_
Print PreviewMelihat tampilan sebelum dicetak_
PrintMencetak dokumenCtrl + P
ExitKeluar dari program_
Program CompileMengkompile program yang dibuat. Outputnya bisa
berupa *.hex, *.bin, dan lain-lainF7
Syntax CheckMemeriksa kesalahan bahasaCtrl + F7
Show ResultMena,pilkan hasil kompilasi programCtrl + W
Simulate ProgramSimulasi untuk program yang telah dibuat_
Menu Show Result menampilkan informasi berupa :Tabel 1.2 Info
Show Result
InfoKeterangan
CompilerVersi Kompiler yang digunakan
ProcessorMenampilkan target prosesor yang dipilih
Data and TimeTanggal dan waktu kompilasi
Baud TimerTimer yang digunakan untuk menghasilkan baud rate; 0
ketika tidak ada timer yamng digunakan
Baud rate dan frequensiBaud rate yang dipilih dan kristal yang
digunakan uP
ROM startLokasi awal ROM
RAM StartLokasi awal eksternal RAM
LCD modeMode LCD yang digunakan, 4 bit atau 8 bit
Stack StartLokasi awal Stack. Ruangan dibawah stack digunakan
untuk variable
Used ROMMenampilkan panjang File biner yang dihasilkan
1.3Program Simulasi BASCOM-8051
BASCOM-8051 menyediakan pilihan yang dapat mensimulasikan
program. Tampilan program simulasi adalah :Gambar 9 Jendela Program
SimulasiTombol Play berfungsi memulai simulasi. Untuk menghentikan
proses simulasi yang sedang berjalan, gunakanlah tombol Stop .
Layar biru di tengah merupakan simulasi layar komputer ketika
menggunakan perintah Print atau Input. Kita dapat melihat perubahan
variabel yang digunakan dalam program dijalankan, maka setiap
perubahan variabel akan ditampilkan. Bagian lainya adalah bagian
register-register akan ditampilkan ketika simulasi dijalankan.
Tombol berikut merupakansimulasi interrup dari
mikrokontroller:
Gambar 10 Tombol-Tombol Interrupt
Dengan menekan tombol di atas, misal INT0, program simulasi akan
mendeteksi adanya interrupt 0. dengan catatan, interrupt 0- nya
harus diaktifkan terlebih dahulu.
Agar dapat melihat perubahan data pada setiap port atau ketika
kita ingin memberikan input pada pin-pin tertentu mikrokontroller,
maka gunakan tombol untuk menampilkan jendela sebagai
berikut:Gambar 11 Jendela simulasi LCDBagian atas mensimulasikan
perintah-perintah yang berhubungan dengan LCD. Sebaliknya, deretan
LED yang di bawah menunjukan kondisi masing-masing port yang
dihubungkan secara common Catode. Jika kita gunakan hardware common
anode, maka tanda checklist dihilangkan. Untuk memberikan input
pada pin-pin tertentu, kita tinggal menekan LED yang diinginkan,
maka program simulasi akan melakukan program yang sedang
disimulasikan. Misalnya kita menggunakan port P1.7 sebagai input
maka kita menekan LED pada kolom 7 pada baris P1 ketika program
telah dijalankan
1.4 Compiler :
BASCOM-8051 menyediakan pilihan untuk memodifikasi
pilihan-pilihan pada kompilasi. Dengan memilih menu compiler,
jendela berikut akan tampil:
Gambar 12 Jendela optionKeterangan dari pilihan sebagai berikut
:Tabel 1.3 Keterangan Menu PilihanTAB MenuOPTIONKeterangan
OutputBinary FileMenghasilkan File Biner
HEX FileMenghasilkan File Hexadesimal
DEBUG FileMenghasilkan file dubug dan map yang diperlukan
program simulator
Report FileMenghasilkan File report
Error FileMenghasilkan file error
Old Intel HEXMenghasilkan file old intel Hex yang digunakan
beberapa monitor
CommunicationBaudrateBaudrate yang digunakan untuk komunikasi
RS232 dengan komputer
FrequencyFrequency cristal yang digunakan mikrokontroller
12CSCL portPin untuk jalur SDA yang digunakan rutin 12C
SDA portPin untuk jalur SDA yang digunakan rutin 12C
RC5 portPin yag digunakan untuk statement GETRC5
LCDDB4-DB7,Eneble,RSPort yang dihubungkan dengan peraga LCD
MISCRegister fileNama file mokrokontroller
Byte EndPosisi terakhir RAM yang bisa digunakan oleh RAM
internal. Stac akan mulai pada byte end+1. ketika kekurangan
ruangan stack, maka nilai harus diturunkan. Artinya, ruangan untuk
variabel menjadi berkurang. Untuk mikrokontroller dengan RAM 128
byte, nilai byte end yang bisa diisikan adalah 70h,sedangkan untuk
yang memiliki RAM 256 byte, maka bisa diisi dengan nilai F0h.
Size WarningUkuran ROM yang diperbolehkan
CompilerMemilih jenis kompiler yang digunakan BASCOM LT
1.5DASAR PEMROGRAMAN BASIC
1.5.1Karakter dalam BASCOM
Dalam program BASCOM,karakter dasarnya terdiri atas karakter
alfabet ( A-Z dan a-z),karakter numerik (0-9),dan karaktear
spesial.
Tabel 1.4 Karakter Spesial
KarakterNama
Blank atau spasi
Apostrophe
*Asterik (simbol perkalian)
+Plus sign
,Comma
-Minus sign
.Period (decimal point)
/Slash (divisio simbol) will be handled as \
:Colon
Double quotation mark
;Semicolon
Greater than
\Back slash ( integer or word division symbol)
1.5.2Tipe Data
Setiap variable dalam BASCOM mamiliki tipe data yang menunjukan
daya tampungnya. Hal ini berhubungan dengan penggunaan memori
mikrokontroller. Berikut adalah tipe data pada BASCOM berikut
keteranganya.
Tabel 1.5 Tipe Data BASCOM
Tipe DataUkuran (byte)Range
Bit1/8-
Byte10 255
Integar2-32,768 - +32,767
Word20 - 65535
long4-2147483648 - +2147483647
single4-
stringHingga 254 byte-
1.5.3Variable
Variable merupakan sebuah pemrograman yang berfungsi sebagai
tempat menyimpan data atau menampung data sementara, misalnya
menampung hasil perhitungan,menampung data hasil pembacaan
register, dan lain sebagainya. Variabel merupakan pointer yang
menunjukan pada alamat memori fisik di mikro kontroller. Dalam
BASCOM, ada beberapa aturan dalam penamaan sebuah variabel:
1. Nama variable nmaximum terdiri atas 32 karakter.
2. Karakter biasa berupa angka atau huruf
3.Variabel tidak boleh menggunakan kata-kata yang digunakan
dalam BASCOM sebagai perintah, pernyataan,internal register, dan
nama operator (AND, OR, DIM, dan lain-lain).
Sebelum digunakan, maka variabel harus dideklarasikan terlebih
dahulu. Dalam BASCO, ada bebrapa cara untuk mendeklarasikan sebuah
variabel. Cara pertama adalah dengan menggunakan pernyataan DIM
diikuti nama dan tipe datanya. Contoh pendeklarasian menggunakan
DIM sebagai berikut:
Cara mempercepat pendeklarasian sebuah variabel yang banyak
adalah :
Cara lain untuk pendeklarasian sebuah variabel adalah
menggunakan DEFINIT, DEFBIT, DEFBYTE, dan atau DEFWORD.
Contohnya:
Deklarasi di atas berarti nama tipe datanya adalah Byte; tombol
1 tipe datanya adalah integar; lalu tombol 2, tombol 3, tombol 4
tipe datanya adalah word
1.5.3.1Alias :
Dengan menggunakan alias, variabwl yang sama dapat diberikan
nama yang lain. Tujuanya adalah mempermudah proses pemrograman.
Umumnya, alias digunakan untuk mengganti nama variabel yang telah
baku, seperti port mikrokontroller.
Dengan deklarasi seperti di atas,perubahan pada tombol 1 akan
mengubah kondisi P0.1. Selain mengganti nama port, kita dapat pula
menggunakan alias untuk mengakses bit tertentu dari sebuah variabel
yang yang teah dideklarasikan.
1.5.3.2Konstanta :
Dalam BASCOM, selain variable kita mengenal pula konstanta.
Konstanta merupakan variabel pula. Perbedaanya dengan variabel
biasa adalah nilai yang tekandungnya tetap. Dengan konstanta, kode
program yang kita buat akan lebih mudah dibaca dan mencegah
kesalahan dalam penulisan pada program kita. Misalnya, kita akan
lebih mudah menulis phi daripada menulis 3,14159867. sama seperti
variabel, agar konstanta bisa dikenali oleh program, maka harus
dideklarasikan terlebih dahulu. Berikut adalah cara pendeklarasian
sebuah konstanta.
1.5.3.3 Array :
Dengan array, kita bisa menggunakan sekumpulan variabel dengan
nama dan tipe yang sama. Untuk mengakses variabel tertentu dengan
array, kita harus menggunakan indeks. Indeks harus berupa angka dan
tipe data byte,integar, atau word. Artinya, nilai maximum sebuah
indeks adalah 65535.
Proses pendeklarasian sebuah array hampir sama dengan variabel,
namun perbedaanya kita pun mengikutkan jumlah elemennya. Berikut
adalah pemakaian array :
Program di atas membuat sebuah array dengan nama kelas yang
berisi 10 elemen ( 1 10 ) dan kemudian seluruh elemenya diisikan
dengan nilai c yang berurutan. Untuk membacanya, kita menggunakan
indeks dimana elemen disimpan. Pada program di atas, elemen elemen
array nya dikaluarkan ke port 1 dari mikrokontroller.1.5.3.4
Operasi - operasi dalam BASCOM :
Pada subbab ini kita akan membahas tentang cara menggabungkan,
memodifikasi, membandingkan, atau mendapatkan informasi tentang
sebuah pernyataan dengan menggunakan operator- operator yang
tersedia pada BASCOM.
1.Operator Aritmatika
Operator digunakan dalam perhitungan. Operator aritmatika
meliputi + (tambah), - (kurang), / (bagi), dan * ( kali).
2.Operator Relasi
Operator yang berfungsi membandingkan nilai sebuah angka.
Hasilnya dapat digunakan untuk membuat keputusan sesuai dengan
program yang kita buat. Oprator relasi meliputi :Tabel 1.6 Tabel
Operator Relasi
OperatorRelasiPernyataan
=Sama denganX = Y
Tidak sama denganX Y
Lebih besar dariX > Y
= Y
3.Operator Logika
Operator digunakan ntuk menguji sebuah kondisi atau memanipulasi
bit dan operasi bolean. Dalam BASCOM, ada empat buah operator
logika yaitu AND, OR, NOT, dan XOR. Operator logika bisa pula
digunakan untuk menguji sebuah byte dengan pola bit tertentu,
sebagai contoh :
4.Operator Fungsi
Operator digunakan untuk melengkapi operator yang
sederhana.1.5.4Kontrol Program :
Keunggulan sebuah pemrograman terletak pada kontrol program.
Dengan kontrol program, kita akan mengendalikan alur sebuah program
dan menentukan apa yang harus dilakukan oleh sebuah program ketika
menemukan kondisi tertentu. Kontrol program meliputi kontrol
pertimbangan kondisi dan keputusan, kontrol pengulangan, serta
kontrol altearnatif. BASCOM menyediakan beberapa kontrol program
yang sering digunakan untuk menguji sebuah kondisi, perulangan, dan
pertimbangan sebuah keputusan. Berikut adalah beberapa kontrol
program yang sering digunakan dalam pemrograman dalam BASCOM.
1.5.4.1 IF .......THEN
Dengan pernyataan IF ... THAN kita dapat mengetes kondisi
tertentu, kemudian menentukan tindakan yang sesuai dengan kondisi
yang diinginkan. Sinteksis penulisanya sebagai berikut:
IF < syarat kondisi> THEN < pernyataan>
Sinteksis di atas digunakan jika hanya ada satu kondisi yang
diuji dan hanya melakukan satu tindakan. Jika malakukan lebih dari
satu tindakan, maka sintaksisnya adalah:
Berikut adalah contoh penggunaanya :
Jika ada 2 kondisi atau lebih yang aka diuji, maka sintaksisnya
menjadi:
Pada sintaksis di atas, BASCOM akan menguji kondisi 1. jika
kondisi 1 tidak terpenuhi, maka BASCOM akan menguji kondisi 2,
begitu seterusnya hingga BASCOM menemukan satu kondisi yang
memenuhi. Jika semua kondisi tidak memenuhinya, maka BASCOM akan
mengeksekusi blok pernyataan ELSE. Contoh penggunaanya sebagai
berikut:
Program di atas aka mengecek apakah tombol_1 tertekan. Jika
benar, maka lampu merah akan menyala. Jika tidak, maka program akan
mengecek tombol selanjutnya hingga menemukan tombol yang
ditekan.jika tidak ada tombol yang di tekan maka lampu biru yang
akan menyala1.5.4.2 SELECT ..... CASE
Perintah SELECT ... CASE akan mengeksekusi beberapa blok
pernyataan tergantung pada nilai variabelnya. Perintah mirip dengan
perintah IF ... THAN., namun memiliki kelebihan, yaitu kemudahan
dalam penukisanya. Sintaksisnya sebagai berikut :
Contoh penggunaanya sebagai berikut:
Program di atas akan menguji nilai variabel mobil. Jika nilai
variabel mbil bernilai antara 10 20, maka lampu kuning akan
menyala. Jika variabel mobil lebih dari 20, maka lampu merah akan
menyala. Kita bisa mengaplikasikan program sederhana di atas di
tempat parkir mobil, di mana variabel mobilnya merupakan input bagi
jumlah mobil yang masuk dan keluar. Dengan demikian, ketika tempat
parkirnya telah penuh, maka lampu merah akan menyala yang
menendakan sudah tidak ada tempat untuk parkir.1.5.4.3 WHILE .....
WEND
Perintah WHILE ....WEND akan mengeksekusi sebuah pernyataan
secara berulang ketika masih menemukan kondisi yang sama. [erintah
akan berhenti jika ada perubahan kondisi dan melakukan perintan
selanjutnya. Sintaksisnya sebagai berikut:
Contoh penggunaanya sebagai berikut :
Perintah di atas akan menyalakan lampu hjau terus menerus ketika
tombol 1 ditekan. Ketika tombol 1 dilepas, maka lampu hijau akan
dimatikan dan lampu merah akan dinyalakan.
2.5.4.4 DO .... LOOP
Perintah DO ...LOOP digunakan untuk mengulang sebuah blok
pernyataan terus menerus. Untuk membatasi perulanganya,kita dapat
menambahkan sebuah syarat kondisi agar perulangan berhenti dan
perintahnya menjadi Do ... loop until. Sintaksisnya sebagai berikut
:
Dengan perintah Do ... loop until :
Contoh pengunaanya adalah :
Program di atas akan menyalakan lampu hijau hingga nilai
variabel mobil telah bernilai 30, maka lampu hijau akan mati dan
nilai variabel mobilnya akan kembali diberi nilai 1. kemudian,
program akan berulang terus menerus.
1.5.4.5 FOR .... NEXT
Perintah FOR ... NEXT digunakan untuk mangeksekusi sebuah blok
pernyataan secara berulang. Perintah hampir sama dengan perintah
Do...Loop. Namun, pada perintah For ... Next nilai awal dan akhir
perulangan serta tingkat kenaikan atau turunya bisa ditentukan.
Penggunaanya sebagai berikut:
Untuk menaikan nilai perulangan, gunakan To, sedangkan untuk
menurunkan , gunakan Downto. Tingkat kenaikan merupakan pilihan,
sehingga kita bisa menggunakanya atau tidak. Jika nilai kenaikan
tidak ditentukan, maka secara otomatis BASCOM akan menentukan
nilainya,yaitu 1. Berikut adalah contoh penggunaan sintaksisnya
:
Pada program di atas,kita dapat melihat bahwa setelah Next kita
bisa meletakan variabel maupun tidak. Jadi, penempatan variabel
setelah Next bersifat pilihan, sama halnya dengan pengunaan
Step.1.5.4.6 EXIT :Perintah EXIT digunakan untuk keluar secara
langsung dari blok program For ... Next, Do ... Loop, Sub ...
EndSub, While ... Wend. Sintaksis penulisanya adalah :
Sintaksis selanjutnya setelah EXIT bisa bermacam macam,
tergantung pada perintah Exit berada dalam perintah apa. Jka dalam
perintah Do ... Loop, maka sintsksisnya menjadi Exit Do. Contoh
penggunaanya sebagai barikut :
Program di atas menunjukan pemakain Exit dalam perintah For ....
Next dan Do ...Loop.
1.5.4.7 GOSUB :Dengan GOSUB, program akan melompat ke sebuah
label dan akan menjalankan program yang ada dalam subrutin sampai
menemui perintah Return. Perintah return akan mengembalikan program
ke titik setelah perintah Gosub. Sintaksisnya sebagai berikut:
Program di atas pertama tama akan melakukan perintah Print coba
rutin. Setelah itu, program akan melompat ke subrutin cabang dan
melakukan proses matematika dan Print X. Kemudian, program akan
kembali ke titik semula dan melakukan perintah Print hallo1.5.4.8
GOTO
Perintah GOTO dignakan untuk melakukan percabangan. Perbedaanya
dengan GOSUB adalah perintah GOTO tidak memerlukan perintah
Return,hingga programnya tidak akan kembali ke titik dimana
perintah GOTO berada. Berikut adalah sintaksis perintah GOTO :
panjang lebel maximum ialah 32 karakter. Berikut adalah contoh
pemakaian GOTO dalam program.
Dim nama as byte
Dim tombol 1 as integar
Dim tombol 2 as word
Dim tombol 3 as word
Dim tombol 4 as word
Dim tombol kas as string*10
Dim nama as byte, tombol 1 as integar
Dim tombol 2 as bit, tombol 4 as word
Dim kas as atring *10
DEFBYTE nama
DEFINT tombol 1
DEFWORD tombol 2 ; tombol 3 ; tombol 4
LEDBAR alias P1
Tombol 1 alias P0.1
Tombol 2 alias P0.2
Dim Ledbar as byte
Led 1 as Ledbar .0
Led 1 as Ledbar .1
Led 1 as Ledbar .2
Dim A as Const 5
Dim B as Const &B1001
Cara lain yang paling mudah :
Const Cbyte = &HF
Const Cint = -1000
Const Csingle = 1.1
Const Cstring = test
Const Cbyte = &HF
Dim kelas (10) AS byte
Dim C as integar
For C = 1 to 10
a ( c ) = c
p1 = a ( c)
Next
Dim A as Byte
A = 63 And 19
PRINT A
A = 10 or 9
PRINT A
Output
16
11
IF< syarat kondisi >THEN
< pernyataan ke 1 >
< penyataan ke 2 >
.
.
< pernyataan ke n >ENDIF
Dim tombol_1 As bit, lampu_kuning As bit
DimLampu_hijau As bit ; Lampu_merah As bit
IFtombol_1 = 0 THEN
Lampu_hijau = 0
Lampu_kuning = 0
Lampu_merah = 1
ENDIF
IF < syarat kondisi 1 > THEN
< blok pernyataan ke 1>
ELSEIF THEN
< blok pernyataan ke 2 >
.
.
ELSEIF THEN
< blok pernyataan ke n >
ELSE
< blok pernyataan >
ENDIF
Lampu_Merah Alias P1.0
Lampu_kuning Alias P1.1
Lampu_hijau Alias P1.2
Tombol_1 Alias P0.0
Tombol_2 Alias P0.1
Tombol_3 Alias P0.2
IFtombol_1 = 0 THEN
Lampu_merah = 1
ELSEIF tombol_2 = 0 THEN
Lampu_kuning = 1
ELSEIF tombol_3 = 0 THEN
Lampu_hijau = 1
ELSE
Lampu_biru = 1
ENDIF
SELECT CASE variable
CASE test 1: statements
CASE test 2: statements
CASE ELSE: statements
END SELECT
Dim Mobil As Byte
Lampu_Merah Alias P1.0
Lampu_kuning Alias P1.1
Lampu_hijau Alias P1.2
Select Case mobil
Case 1 ; lampu_hijau = 1
Case 10 To 20 : Lampu _kuning = 1
Case Is >= 20 : Lampu_merah = 1
Case else : Lampu_biru = 1
End Select
WHILE < syarat kondisi >
< pernyataan >
WEND
Tombol_1Alias P1.1
Lampu_merah Alias P1.0
Lampu_hijau Alias P1.2
While tombol_1 = 0
Lampu_hijau = 1
Wend
Lampu_hijau = 0
Lampu_merah = 1
End
Do
loop
Do
< blok pernyataan >
Loop until
Dim mobil As byte
Lampu_hijau As P0.1
Do
Mobil = 1
Do
Incr mobil
Lampu_hijau = 1
Loop until mobil = 30
Lampu_hijau = 0
Loop
FOR Var = start TO/DOWNTO end [ STEP Value ]
< Blok pernyataanya >
Next
Dim A As byte
Dim C As byte
For A = 1 TO 10 Step 2
Print This is A; A
Next A
For C = 10 Downto - 5
Print This is C ; C
Next
EXIT [Do] [For] [While] [Sub]
Dim B1 as Byte , A as Byte
B1 = 50
For A 1 to 100
If A = B1 then
Exit For
End If
Next
Print keluar dari FOR .... NEXT when A was ; A
A = 1
Do
Incr A
If A = 10 then
Exit Do
End If
Loop
Print Loop berhenti
End
Print coba rutin
GOSUB cabang
Print Hello
END
Cabang :X = X + 2
PRINT X
RETURN
GOTO label
Label :
Dim X As byte
Print Coba rutin
GOTO Cabang
Print HELLO
END
Cabang :
X = X + 2
PRINT X
End
PAGE 22