latihan bascom
TRANSCRIPT
-
8/13/2019 latihan bascom
1/8
1|P a g e
IntroductiontoBASCOMAVRCompilerWrittenbyCholisSafrudin(YD1CHS),midofApril2011
#1kumpulanmateribelajarbarengAVR
BASCOMAVR?Tulisanberikutditulisbukansebagaitextbook,karena isinyadituangkanberdasarkanpengalaman
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
untukmendownloadversidemodenganketerbatasanbesarnyafilecodehanyasampaidengan4KBsaja,
danbagiyangberminatsilakanmengikutilinkberikut:
http://www.mcselec.com/index.php?option=com_docman&task=cat_view&gid=99&Itemid=54
Mungkinadayangbertanya4KBcode itubesarataukecil.SayaambilcontohsajaAVRATMEGA8
memilikiprogrammemory(memoritempatmenyimpankodeprogram)sebesar8KB,artinyaadalah
50%daritotalkapasitanya,menurutsayauntukkeperluanbelajardanhobbysudahsangatbesar.
Marikitaambilcontoh:
Sebuah HF Frequency Counter dengan tampilan LCD, dilengkapi dengan fitur AutorangingDisplay, IFShiftedDisplaydanmanipulasiEEPROMyangtelahsayabuathanyamembutuhkan
40%
dari
total
program
memory
ATMEGA
8
atau
hanya
3.2KB.
SebuahFLL(FrequencyLockedLoop),yangdidalamnyaberisiFrequencyCounter,AutorangingDisplay,IFShifteddisplay,EEPROMManipulationdanLockingMechanismdenganPWMhanya
membutuhkan48%daritotalprogrammemoryATMEGA8atauhanya3.84KB.
Mudahmudahan ketiga contoh projects diatas bisa memberikan gambaran bahwa 4KB di dalam
pemrogramanmikrokontroleradalahsangatsangatberarti.
MENGGUNAKANBASCOMSepertiyangtelahsayasebutkandiatas,bahwaapayangsayasampaikandisinibisajadibukanlah
prosedurpalingtepatsesuairekomendasiBASCOM,namunhanyapraktikyangbiasasaya lakukan.
Jadi
hanya
cocok
untuk
eksperimen
saja
dan
segala
resiko
mohon
maaf,
silakan
ditanggung
sendiri.
Hehehe.
Sayatidakmauberteleteleuntukmenjelaskanberbagaihalyangsudahmulaimenyentuhteoriatau
halhal terkait text book, karena tidak cocok dengan metode belajar kita, yang menuntuk instan
sertakonsentrasihalhalyangbiasakitaperlukansajauntukmembangunprojectprojecthobby.
SETTINGENVIRONTMENTBASCOMSaya hanya asal comot saja penyebutan prosedur ini, silakan anda namakan apa saja yangjelas
prosedurinimemastikanbahwaenvirontmentdarikompilerBASCOMsesuaidenganmikrokontroler
yang
sedang
kita
buat
firmware
nya.
Setting
ini
hanya
melekat
kepada
satu
file
firmware
saja,
jadi
setiapmembuatfilefirmwareharusdilakukanprosedurini.Berikutlangkahutamanya.
-
8/13/2019 latihan bascom
2/8
2|P a g e
IlustrasiGrafis IlustrasiDeskriptif1. Langkahpertama,bukaaplikasi
BASCOM.
2. Buatfilefirmwareyangbaru,berinamasesuaidengankeinginan
anda(bacaprosedurpembuatan
firmwaredibawah).
3. PadaMenuBar(Atas),clickOption>>Compiler>>Chip
4. PadadialogboxOption,padamenubarclickChip>>Chip:sesuai
denganmikrokontroleryang
sedangdikerjakan,contohdisini
adalahATMEGA8,makapilih
m8def.dat
5. Simpanfiletersebut
Sebenarnyakenapakitaharusmelakukansettingdasarini?
Karenaseluruhcommandatau libraryyang terkaitdenganmikrokontroler tersebutdisimpanpada
file m8def.dat (untuk ATMEGA8). Isi file ini diantaranya adalah deklarasi variablevariable default
darimikrokontroler.
Prosedur inisebenarnyaperlukita lakukanuntukmemaksakompileruntukmelakukanaktivitasnya
bagi mikrokontroler tertentu. Prosedur serupa, namun metodenya lain bisa kita lakukan dengan
melakukannyadi
dalam
firmware.
Biasanya
kita
tuliskan/
lakukan
pada
baris
teratas
firmware
kita,
dengancontohsyntax:
$r egf i l e = m8def . dat unt uk memaksa envi r ont ment compi l er ATMEGA-8$cr yst al = 8000000 member i t ahu compi l er bahwa Xt al yang di pakai adal ah 8MHz
Nah,kebiasaansayaadalahmelakukankeduaduanya.Silakan andayangmemilihsesuaikesukaan
anda.
-
8/13/2019 latihan bascom
3/8
3|P a g e
MEMBUATFIRMWAREBARUIlustrasiGrafis IlustrasiDeskriptif
1. BukaBASCOM2. PadaMenuBar(Atas),click
File>>New
3. PadadialogboxSaveAs,berinamafilefirmware,
sayaanjurkanuntuk
menyimpan1project/
firmwaredalam1direktori
berbeda,karenasetelah
dikompilenanti
akan
munculfilefiletambahan
lainnya,sehinggalebih
mudah
mengorganisasikannya
4. ClickSave5. PadaMenuBar(Atas),click
Option>>Compiler>>Chip
-
8/13/2019 latihan bascom
4/8
4|P a g e
IlustrasiGrafis IlustrasiDeskriptif6. PadadialogboxOption,
padamenubarclickChip
>>Chip:sesuaidengan
mikrokontroleryang
sedangdikerjakan,contoh
disiniadalahATMEGA8,
makapilihm8def.dat
7. Simpankembalifiletersebut
8. SekarangfilefirmwaredanenvironmentBASCOM
telahsesuaidengan
ATMEGA8
MENULISFIRMWAREGayacaramenulissebuahprogramataufirmwaresangatbervariasidanunikuntukmasingmasing
individu,namunsekali lagisayaakansampaikandisinikebiasaansayamenuliskan,silakanmemilih
sendirigayapenulisanyangsesuai.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1. J udul Pr oj ect, deskri psi dan sebagai nya - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 2. Envi r ont ment unt uk kompi l er ( compi l er di r ect i ves) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 3. Setup- setup PORT I O, dl l - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4. Dekl ar asi Var i abl es - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 5. Progr amLoop Ut ama - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6. Kumpul an Funct i on/ Subrout i ne - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
masingmasing
orang,
silakan
menyesuaikan.
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' 1. Proj ect t i t l e and Descr i pt i on
' Proj ect: Di gi t al Vol t met er
' Desi gned by Chol i s Saf r udi n YD1CHS
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' Usi ng ADC t o sense t he vol t age var i at i on f r om t he di vi der ci r cui t
' Di spl ayi ng i nt o LCD
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
8/13/2019 latihan bascom
5/8
5|P a g e
' 2. Compi l er Di r ecti ves
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
$r egf i l e = "m16def . dat" ' At mega- 16
$cr yst al = 8000000 ' Xt al 8MHz
' 3. Set up Por t I O dan Hardware
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Conf i g Lcdpi n = Pi n , Db4 = Por t c. 4 , Db5 = Port c. 5 , _
Db6 = Por t c. 6 , Db7 = Port c. 7 , E = Port c. 2 , Rs = Por t c. 0 ' 4 bi t s mode, Port - C
Conf i g Lcd = 16 * 2 ' 16x4 Char act ers LCD
Cl s ' Cl ear Screen
Cur sor Of f ' Cur sor i s Of f
Wai t ms 500 ' Wai t f or 500ms
Conf i g Adc = Si ngl e , Prescal er = Aut o ' ADC Conf i gur at i on
St art Adc ' Star t ADC, not necessar y si nce
' i t st ar t ed aut omat i cal l y
' 4. Var i abl e Decl ar at i on
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Di m Bat_pow As Word ' Vari abl e t o Stor e Bat t ery Power
' Wor d = 6 Bytes, val ue f r om 0 t o65535
Di m Bat _f act As Si ngl e ' Var i abl e t o St ore Cor r ecti onFact or
' Si ngl e = 3 Bytes, val ue f rom 1. 5x 10 45 t o 3. 4 x 10 38
Di m Bat _vol t As Si ngl e ' Var i abl e t o St ore Bat t er y Vol t age
' Si ngl e = 3 Bytes, val ue f rom 1. 5x 10 45 t o 3. 4 x 10 38
Bat_f act = 12 / 508 ' Set Bat t er y Scal e
' 5. Pr i nt Wel come Messages & Wai t unt i l VCO i s St eady st ate
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Lcd "AVRLCD Vol t meter" ' Pr i nt 1st Message
Wai t ms 100 ' wai t
Lower l i ne ' go t o l i ne 2
Lcd "by Chol i s YD1CHS" ' Pr i nt 2nd Message
Wai t ms 2000 ' wai t f or 2000ms
Cl s ' Cl ear Screen
' 6. Mai n Program Loop - Batt ery' s Power Test i ng dan Di spl ay I nto LCD
' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
' Bat t er y i s 12V, usi ng external r esi st ors as scal er 18K/ / 4. 7K
' Batt ery i s 12V, Vmax = ( 4. 7K / / 18K) *12 = 2. 484581
' 5V i nput i s i ndi cat es by 1024, so t hat 2. 484581 i s i ndi cat es by 508
' So that , 1 = 12/ 508 = Thi s i s a cor rect i on f actor
-
8/13/2019 latihan bascom
6/8
6|P a g e
Do
Bat_pow = Get adc( 0) ' Get Bat t Power at ADC0
Bat _vol t = Bat _pow * Bat _f act ' Get a r i i l vol t age val ue
I f Bat _pow < 430 Then ' Bat t er y i s l ow, warn t o user
Lcd "Bat t . Power: BAD" ' Pri nt "Batt . Power: BAD"
Lower l i ne ' go t o l i ne 2
Lcd Fusi ng( bat _vol t , "##. ##") ; " Vol t s" ' Pri nt Bat t er y Vol t age Val ue
Wai t ms 1000 ' wai t
El se ' Bat t er y i s Good
Lcd "Batt . Power: OK" ' Pri nt "Bat t . Power : OK"
Lower l i ne ' go t o l i ne 2
Lcd Fusi ng( bat _vol t , "##. ##") ; " Vol t s" ' Pri nt Bat t er y Vol t age Val ue
Wai t ms 1000 ' wai t
End I fCl s ' Cl ear Screen
Loop ' Repeated agai n
End ' end program
MENGKOMPILEFIRMWARESayayakinsemuatelahmengetahuiprosesapaini,palinggampangnyangomongadalahmengubah
firmwaredaribahasatingkattinggi,melingkingkandenganberbagaihal,kemudianmerubahnyake
bahasa mesin, sehingga siap untuk didownload ke uP. Berikut ilustrasi menarik, hirarki dari
tingkatantingkatan
bahasa
pemrograman.
Ilustrasi disampaing saya ambil dari
http://www.webopedia.com/TERM/H/high_level
_language.html
Menempati puncak piramida atau yang biasa
disebutdenganbahasatingkattinggi(maksudnya
bahasa yang paling dekat dengan bahasa
manusia). Makin ke bawah posisinya di dalam
piramida ini, maka bahasa tersebut makin sulit
dimengerti oleh manusia. Makanya di satu
tingkat
sebelum
dasar
piramida
biasa
disebut
denganbahasamesin(palingdasarsendiriadalah
hardware, dalam hal ini misalnya adalah
mikrokontrolerAVR,PIC,dll).
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
masingmasing
tingkatan
bahasa
di
atas.
File
dengan
ekstensi
*.asm
(asm
singkatan
dari
Assembler)
adalah mewakili tingkatan Assembly Language. Dan satu lagi file dengan ekstensi *.hex (hex
-
8/13/2019 latihan bascom
7/8
7|P a g e
singkatanhexadecimalsebabisinyafileinihanyalahkodekodehexadecimaldanhanyadikenalioleh
mesinataumikrokontrolersaja)yangmewakilitingkatanMachineLanguage.Beberapa file lainnya
yang diproduksi oleh BASCOM adalah filefile selama proses linking dan sebagainya, namun kita
palingbanyakakanberkepentinganhanyapadaduamacamfilesaja*.basdan*.hex.
Dengansatu
kalimat
perjalanan
firmware
tersebut
adalah
*.bas
*.asm
*.hex,
proses
ini
yang
disebutcompiling.
NahcaramelakukancompilingdiBASCOMditunjukkandenganprosedurberikut:
IlustrasiGrafis IlustrasiDeskriptifGambardisamping
memperlihatkanisifolder
projectLCDVoltmeter,tampak
sepelum
dilakukan
compiling
hanyaada1file*.bassaja
1. Untukmengcompile,lakukansavedulufile*.bas,lalupada
topbarmenuProgram>>
Compile.Bisajugadilakukan
denganmenekantombolF7,
ataubisajugadenganclickicon
bergambar IC.
2. Tunggusebentar,makaakanmunculdialogBOXstatus
compiling,FlashUsed:11%
memperlihatkanjumlah
memoryyangdipakai.Karena
projectinimemakaiATMEGA
16denganFlashMemory16kB,
maka11%*16kB=1.76kB
3. Bilatidakadapesanerror,makafirmwaretersebuttelahselesai
dicompile
Gambardisamping
memperlihatkanpertambahan
jumlahfilesetelahdilakukan
compiling.
Fileyangterpentinguntuk
prosesberikutnyaadalah*.bas
dan*.hex
Filedengannama
LCD_VM_AT16.hexyangakan
kita
burning
ke
mikrokontroler
-
8/13/2019 latihan bascom
8/8
8|P a g e
KESIMPULANTulisan sederhana ini berusaha memberikan petunjuk sederhana dalam mengoperasikan aplikasi
BASCOM.
BASCOMjuga
menyediakan
HELP
file
yang
akan
memberikan
panduan
kepada
kita
dalam
upaya
lebihmendalamiaplikasiini.
Semogamaterisederhanainibergunadeyd1chs