latihan bascom

download latihan bascom

of 8

Transcript of latihan bascom

  • 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