01 Introduction Bascom
01 Introduction Bascom
WrittenbyCholisSafrudin(YD1CHS),midofApril2011
#1kumpulanmateribelajarbarengAVR
BASCOMAVR?
Tulisan berikut ditulis bukan sebagai text book, karena isinya dituangkan berdasarkan pengalaman
penulis selama belajar otodidak tentang mikrokontroler. Hanya cocok untuk diaplikasikan untuk
keperluannonprofesional,eksperimen,danhobby.
Banyaksekalikompilerberbahasaleveltinggi(C,BASIC,PASCAL,dll)yangbertebarandiInternetdan
sebagianditawarkansecaragratis.SalahsatunyaadalahkompilermenggunakanbahasaBASICuntuk
mikrokontroler produk AVR, yaitu BASCOM. Hingga saat tulisan ini ditulis, MCS Electronics
pemroduksi BASCOM hanya dikembangkan untuk mikrokontroler produk ATMEL, yaitu 8051 dan
AVR. Namun disini akan dibahas AVR saja. MSC memberikan kesempatan kepada kita untuk
mendownloadversidemodenganketerbatasanbesarnyafilecodehanyasampaidengan4KBsaja,
danbagiyangberminatsilakanmengikutilinkberikut:
http://www.mcselec.com/index.php?option=com_docman&task=cat_view&gid=99&Itemid=54
Mungkin ada yang bertanya 4KB code itu besar atau kecil. Saya ambil contoh saja AVR ATMEGA8
memilikiprogrammemory(memoritempatmenyimpankodeprogram)sebesar8KB,artinyaadalah
50%daritotalkapasitanya,menurutsayauntukkeperluanbelajardanhobbysudahsangatbesar.
Marikitaambilcontoh:
Sebuah HF Frequency Counter dengan tampilan LCD, dilengkapi dengan fitur Autoranging
Display,IFShiftedDisplaydanmanipulasiEEPROMyangtelahsayabuathanyamembutuhkan
40%daritotalprogrammemoryATMEGA8atauhanya3.2KB.
SebuahFLL(FrequencyLockedLoop),yangdidalamnyaberisiFrequencyCounter,Autoranging
Display,IFShifteddisplay,EEPROMManipulationdanLockingMechanismdenganPWMhanya
membutuhkan48%daritotalprogrammemoryATMEGA8atauhanya3.84KB.
Mudahmudahan ketiga contoh projects diatas bisa memberikan gambaran bahwa 4KB di dalam
pemrogramanmikrokontroleradalahsangatsangatberarti.
MENGGUNAKANBASCOM
Sepertiyangtelahsayasebutkandiatas,bahwaapayangsayasampaikandisinibisajadibukanlah
prosedurpalingtepatsesuairekomendasiBASCOM,namunhanyapraktikyangbiasasayalakukan.
Jadihanyacocokuntukeksperimensajadansegalaresikomohonmaaf,silakanditanggungsendiri.
Hehehe.
Sayatidakmauberteleteleuntukmenjelaskanberbagaihalyangsudahmulaimenyentuhteoriatau
halhal terkait text book, karena tidak cocok dengan metode belajar kita, yang menuntuk instan
sertakonsentrasihalhalyangbiasakitaperlukansajauntukmembangunprojectprojecthobby.
SETTINGENVIRONTMENTBASCOM
Saya hanya asal comot saja penyebutan prosedur ini, silakan anda namakan apa saja yang jelas
prosedurinimemastikanbahwaenvirontmentdarikompilerBASCOMsesuaidenganmikrokontroler
yangsedang kitabuatfirmwarenya. Settingini hanyamelekat kepadasatu filefirmwaresaja,jadi
setiapmembuatfilefirmwareharusdilakukanprosedurini.Berikutlangkahutamanya.
1|P a g e
IlustrasiGrafis
IlustrasiDeskriptif
1. Langkahpertama,bukaaplikasi
BASCOM.
2. Buatfilefirmwareyangbaru,beri
namasesuaidengankeinginan
anda(bacaprosedurpembuatan
firmwaredibawah).
3. PadaMenuBar(Atas),clickOption
>>Compiler>>Chip
4. PadadialogboxOption,pada
menubarclickChip>>Chip:sesuai
denganmikrokontroleryang
sedangdikerjakan,contohdisini
adalahATMEGA8,makapilih
m8def.dat
5. Simpanfiletersebut
Sebenarnyakenapakitaharusmelakukansettingdasarini?
Karena seluruh command atau library yang terkait dengan mikrokontroler tersebut disimpan pada
file m8def.dat (untuk ATMEGA8). Isi file ini diantaranya adalah deklarasi variablevariable default
darimikrokontroler.
Prosedurinisebenarnyaperlukitalakukanuntukmemaksakompileruntukmelakukanaktivitasnya
bagi mikrokontroler tertentu. Prosedur serupa, namun metodenya lain bisa kita lakukan dengan
melakukannyadidalamfirmware.Biasanyakitatuliskan/lakukanpadabaristeratasfirmwarekita,
dengancontohsyntax:
$regfile = m8def.dat
$crystal = 8000000
Nah, kebiasaan saya adalah melakukan keduaduanya. Silakan anda yang memilih sesuai kesukaan
anda.
2|P a g e
MEMBUATFIRMWAREBARU
IlustrasiGrafis
IlustrasiDeskriptif
1. BukaBASCOM
2. PadaMenuBar(Atas),click
File>>New
3. PadadialogboxSaveAs,
berinamafilefirmware,
sayaanjurkanuntuk
menyimpan1project/
firmwaredalam1direktori
berbeda,karenasetelah
dikompilenantiakan
munculfilefiletambahan
lainnya,sehinggalebih
mudah
mengorganisasikannya
4. ClickSave
5. PadaMenuBar(Atas),click
Option>>Compiler>>Chip
3|P a g e
IlustrasiGrafis
IlustrasiDeskriptif
6. PadadialogboxOption,
padamenubarclickChip
>>Chip:sesuaidengan
mikrokontroleryang
sedangdikerjakan,contoh
disiniadalahATMEGA8,
makapilihm8def.dat
7. Simpankembalifile
tersebut
8. Sekarangfilefirmwaredan
environmentBASCOM
telahsesuaidengan
ATMEGA8
MENULISFIRMWARE
Gayacaramenulissebuahprogramataufirmwaresangatbervariasidanunikuntukmasingmasing
individu, namun sekali lagi saya akansampaikan disini kebiasaan saya menuliskan, silakan memilih
sendirigayapenulisanyangsesuai.
Berikut contoh gaya penulisan project Digital Voltmeter using AVR yang telah saya buat untuk
ATMEGA16 dengan external Crystal sebesar 8MHz, sekali lagi gaya penulisan tergantung dengan
masingmasingorang,silakanmenyesuaikan.
'
'
-----------------------------------
'
Using ADC to sense the voltage variation from the divider circuit
'
'----------------------------------------------------------------------------
4|P a g e
'Atmega-16
$crystal = 8000000
'Xtal 8MHz
Config Lcd = 16 * 2
Cls
'Clear Screen
Cursor Off
'Cursor is Off
Waitms 500
'ADC Configuration
Start Adc
65535
Dim Bat_fact As Single
Factor
'5. Print Welcome Messages & Wait until VCO is Steady state
'---------------------------------------------------------------------------Lcd "AVRLCD Voltmeter"
Waitms 100
'wait
Lowerline
'go to line 2
Waitms 2000
Cls
'Clear Screen
'6. Main Program Loop - Battery's Power Testing dan Display Into LCD
'---------------------------------------------------------------------------' Battery is 12V, using external resistors as scaler 18K//4.7K
' Battery is 12V, Vmax = (4.7K // 18K)*12 = 2.484581
' 5V input is indicates by 1024, so that 2.484581 is indicates by 508
' So that, 1 = 12/508 = This is a correction factor
5|P a g e
Do
Bat_pow = Getadc(0)
Lowerline
'go to line 2
Waitms 1000
'wait
Else
'Battery is Good
Lowerline
'go to line 2
Waitms 1000
'wait
End If
Cls
'Clear Screen
Loop
'Repeated again
End
'end program
MENGKOMPILEFIRMWARE
Sayayakinsemuatelahmengetahuiprosesapaini,palinggampangnyangomongadalahmengubah
firmwaredaribahasatingkattinggi,melingkingkandenganberbagaihal,kemudianmerubahnyake
bahasa mesin, sehingga siap untuk didownload ke uP. Berikut ilustrasi menarik, hirarki dari
tingkatantingkatanbahasapemrograman.
Ilustrasi disampaing saya ambil dari
http://www.webopedia.com/TERM/H/high_level
_language.html
OK, kembali ke tangga tertinggi, yaitu bahasa tingkat tinggi, ilustrasi tersebut mencontohkan
beberapadiantaranya:Fortran,C,PascalihikihikBASICnggakdisebutkarenaterlalugampangdan
biasa disebut bahasa anakanak. Kasihan dech hehehe. Dalam topik belajar bareng ini, bahasa
tingkattinggiakandiwakiliolehfiledenganekstensi*.bas(bassingkatandariBASIC).
PadasaatBASCOMmelakukanCompile,makaakandiproduksibeberapafilelangsungyangmewakili
masingmasingtingkatanbahasadiatas.Filedenganekstensi*.asm(asmsingkatandariAssembler)
adalah mewakili tingkatan Assembly Language. Dan satu lagi file dengan ekstensi *.hex (hex
6|P a g e
singkatanhexadecimalsebabisinyafileinihanyalahkodekodehexadecimaldanhanyadikenalioleh
mesin atau mikrokontroler saja) yang mewakili tingkatan Machine Language. Beberapa file lainnya
yang diproduksi oleh BASCOM adalah filefile selama proses linking dan sebagainya, namun kita
palingbanyakakanberkepentinganhanyapadaduamacamfilesaja*.basdan*.hex.
Dengansatukalimatperjalananfirmwaretersebutadalah*.bas*.asm*.hex,prosesiniyang
disebutcompiling.
NahcaramelakukancompilingdiBASCOMditunjukkandenganprosedurberikut:
IlustrasiGrafis
IlustrasiDeskriptif
Gambardisamping
memperlihatkanisifolder
projectLCDVoltmeter,tampak
sepelumdilakukancompiling
hanyaada1file*.bassaja
1. Untukmengcompile,lakukan
savedulufile*.bas,lalupada
topbarmenuProgram>>
Compile.Bisajugadilakukan
denganmenekantombolF7,
ataubisajugadenganclickicon
bergambar
IC.
2. Tunggusebentar,makaakan
munculdialogBOXstatus
compiling,FlashUsed:11%
memperlihatkanjumlah
memoryyangdipakai.Karena
projectinimemakaiATMEGA
16denganFlashMemory16kB,
maka11%*16kB=1.76kB
3. Bilatidakadapesanerror,maka
firmwaretersebuttelahselesai
dicompile
Gambardisamping
memperlihatkanpertambahan
jumlahfilesetelahdilakukan
compiling.
Fileyangterpentinguntuk
prosesberikutnyaadalah*.bas
dan*.hex
Filedengannama
LCD_VM_AT16.hexyangakan
kitaburningkemikrokontroler
7|P a g e
KESIMPULAN
Tulisan sederhana ini berusaha memberikan petunjuk sederhana dalam mengoperasikan aplikasi
BASCOM.
BASCOM juga menyediakan HELP file yang akan memberikan panduan kepada kita dalam upaya
lebihmendalamiaplikasiini.
Semogamaterisederhanainibergunadeyd1chs
8|P a g e