24
BAB II LANDASAN TEORI 2.1 Mikrokontroler ATMega8535 Mikrokontroler adalah sebuah sistem mikroprosesor di mana di dalamnya sudah terdapat CPU, ROM, RAM, I/O, clock dan perlatan internal lainnya yang sudah terhubung dan terorganisasi dengan baik oleh pabrik pembuatnya dan dikemas dalam satu chip yang siap pakai. Sehingga, dengan demikian kita tinggal memprogram isi ROM sesuai dengan aturan oleh pabrik pembuatnya. Salah satu contoh mikrokontroler yang banyak beredar di pasaran adalah mikrokontroler ATMega8535. 2.1.1 Arsitektur ATMega8535 Arsitektur mikrokontroler jenis AVR pertama kali dikembangkan pada tahun 1996 oleh dua orang mahasiswa Norwegian Institute of Texhnology yaitu Alf-Egil Bogen dan Vegard Wollan. Mikrokontroler AVR kemudian dikembangkan lebih lanjut oleh Atmel. Seri pertama AVR yang dikeluarkan adalah mikrokontroler 8 bit AT90S8515, dengan konfigurasi pin yang sama dengan mikrokontroler 8051, termasuk address dan data bus yang termultipleksi. Mikrokontroler AVR menggunakan teknologi RISC dimana set instruksinya dikurangi dari segi ukurannya dan kompleksitas mode pengalamatannya. Pada awal era industry komputer, bahasa pemrograman masih menggunakan kode mesin dan Universitas Sumatera Utara

Chapter II

Embed Size (px)

DESCRIPTION

Chapter II

Citation preview

  • BAB II

    LANDASAN TEORI

    2.1 Mikrokontroler ATMega8535

    Mikrokontroler adalah sebuah sistem mikroprosesor di mana di dalamnya sudah

    terdapat CPU, ROM, RAM, I/O, clock dan perlatan internal lainnya yang sudah

    terhubung dan terorganisasi dengan baik oleh pabrik pembuatnya dan dikemas dalam

    satu chip yang siap pakai. Sehingga, dengan demikian kita tinggal memprogram isi

    ROM sesuai dengan aturan oleh pabrik pembuatnya. Salah satu contoh

    mikrokontroler yang banyak beredar di pasaran adalah mikrokontroler ATMega8535.

    2.1.1 Arsitektur ATMega8535

    Arsitektur mikrokontroler jenis AVR pertama kali dikembangkan pada tahun

    1996 oleh dua orang mahasiswa Norwegian Institute of Texhnology yaitu Alf-Egil

    Bogen dan Vegard Wollan.

    Mikrokontroler AVR kemudian dikembangkan lebih lanjut oleh Atmel. Seri

    pertama AVR yang dikeluarkan adalah mikrokontroler 8 bit AT90S8515, dengan

    konfigurasi pin yang sama dengan mikrokontroler 8051, termasuk address dan data

    bus yang termultipleksi.

    Mikrokontroler AVR menggunakan teknologi RISC dimana set instruksinya

    dikurangi dari segi ukurannya dan kompleksitas mode pengalamatannya. Pada awal

    era industry komputer, bahasa pemrograman masih menggunakan kode mesin dan

    Universitas Sumatera Utara

  • bahasa assembly. Untuk mempermudah dalam pemrograman para desainer komputer

    kemudian mengembangkan bahasa pemrograman tingkat tinggi yang mudah

    dipahami manusia. Namun akibatnya, instruksi yang ada semakin kompleks dan

    membutuhkan lebih

  • Application Flash Section digunakan untuk menyimpan program aplikasi yang

    dibuat oleh user. AVR tidak dapat menjalankan program aplikasi ini sebelum

    menjalankan Boot Loader. Besarnya memori Boot Flash Section dapat deprogram

    dari 128 word sampai 1024 word, tergantung setting pada konfigurasi bit di

    register BOOTSZ. Jika Boot Loader diproteksi, maka program pada Application

    Flash Section juga sudah aman.

    Gambar 2.1.1.1 Program memori

    Data Memory

    Gambar berikut menunjukkan peta memori SRAM pada ATMega8535. Terdapat

    608 lokasi data memori. 96 lokasi address digunakan untuk Register File dan I/O

    Memory, sementara 512 lokasi address lainnya digunakan untuk internal data

    Universitas Sumatera Utara

    http://syamsul123rizal.files.wordpress.com/2012/02/program-memory.jpg
  • SRAM. Register File terdiri dari 32 general purpose working register, I/O register

    terdiri dari 64 register.

    Gambar 2.1.1.2 Peta Data Memory

    EEPROM Data Memory

    ATMega8535 memiliki EEPROM sebesar 512 byte untuk menyimpan data.

    Lokasinya terpisah dengan sistem address register, data register, dan control

    register yang dibuat khusus untuk EEPROM.

    2.1.2 Fitur ATMega8535

    Mikrokontroler Atmega8535 mempunyai fitur sebagai berikut:

    Universitas Sumatera Utara

  • Saluran I/O sebanyak 32 buah, yaitu port A, port B, port C, dan port D.

    ADC 10 bit sebanyak 8 saluran.

    3 buah timer/counter dengan kemampuan pembandingan.

    CPU yang terdiri dari 32 buah register.

    Watchdog timer dengan osilator internal.

    SRAM sebesar 512 byte

    Memori flash sebesar 8 KB dengan kemampuan read while write.

    Unit interupsi internal dan eksternal

    Port antar muka SPI

    EEPROM sebesar 512 byte yang dapat deprogram saat beroperasi.

    Antar muka komparator analog.

    Universitas Sumatera Utara

  • 2.1.2.1 Konfigurasi Pin ATMega8535

    Gambar 2.3. Konfigurasi Pin ATMega8535

    Konfigurasi pin ATMega8535 dapat dilihat pada gambar 2.1 di atas. Dari gambar

    tersebut, dapat dijelaskan secara fungsional konfigurasi pin ATMega8535 sebagai

    berikut:

    1. VCC merupakan pin yang berfungsi sebagai pin masukan catu daya.

    2. GND merupakan pin ground.

    3. Port A (PA.0 PA.7) merupakan pin I/O dua arah dan dapat difungsikan sebagai

    pin masukan ADC.

    Universitas Sumatera Utara

  • 4. Port B (PB.0 PB.7) merupakan pin I/O dua arah dan dapat juga digunakan

    sebagai pin untuk timer/counter, komparator analog, dan SPI.

    5. Port C (PC.0 PC.7) merupakan pin I/O dua arah dan pin fungsi khusus yaitu

    TWI, komparator analog, dan timer osilator.

    6. Port D (PD.0 PD.7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu

    komparator analog, interupsi eksternal, dan komunikasi serial.

    7. RESET merupakan pin yang digunakan untuk me-reset mikrokontroler.

    8. XTAL1 dan XTAL2 merupakan pin masukan untuk clock eksternal.

    9. AVCC merupakan pin masukan tegangan untuk ADC internal.

    10. AREF merupakan pin masukan tegangan referensi ADC

    Universitas Sumatera Utara

  • 2.1.3 Bahasa Pemrograman BASCOM-AVR

    Bahasa BASCOM-AVR menggunakan bahasa pemrograman BASIC. Bahasa

    BASIC adalah bahasa pemrograman yang dapat dikatakan bahasa pemrograman

    berlevel tinggi. Bahasa pemrograman berlevel rendah berarti bahasa pemrograman

    yang berorientasi pada mesin, misalnya bahasa assembly. Sedangkan bahasa

    pemrograman berlevel tinggi merupakan bahasa pemrograman yang berorientasi pada

    manusia. Bahasa pemrograman berlevel rendah merupakan bahasa pemrograman

    dengan sandi yang hanya dimengerti oleh mesin, sehingga untuk memprogram dalam

    bahasa ini diperlukan tingkat kecermatan yang tinggi. Bahasa pemrograman berlevel

    tinggi relatif mudah digunakan, karena ditulis dengan bahasa manusia yang lebih

    mudah dimengerti dan tidak tergantung pada mesin.

    Penulisan program dalam bahasa BASCOM-AVR ini tidak mengenal aturan

    penulisan di kolom tertentu. Jadi bisa dimulai dari kolom manapun. Namun demikian,

    untuk mempermudah dalam pembacaan program dan untuk keperluan dokumentasi,

    sebaiknya penulisan program dalam bahasa BASCOM-AVR ini diatur sedemikian

    rupa sehingga mudah dibaca.

    2.1.4. Tipe data

    Tipe data merupakan bagian program yang penting karena tipe data mempengaruhi

    setiap instruksi yang akan dilaksanakan komputer. Pemilihan tipe data yang tepat

    akan membuat operasi data menjadi lebih efisien dan efektif.

    Universitas Sumatera Utara

  • No. Tipe Jangkauan

    1 Bit 0 atau 1

    2 Byte 0 255

    3 Integer -32,768 - +32,767

    4 Word 0 65535

    5 Long -2147483648 - +214743647

    6 Single 1.5x10-45 3.4x1038

    7 Double 5.0x10-324 1.7x10308

    8 String >254 byte

    Tabel 2.1. Tipe-Tipe Data Dalam BASCOM-AVR

    2.1.5 Variabel

    Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili suatu

    nilai tertentu di dalam proses program. Berbeda dengan konstanta yang nilainya

    selalu tetap, nilai dari suatu variabel bias berubah-ubah sesuai dengan kebutuhan.

    Nama dari suatu variabel mempunyai ketentuan sebagi berikut:

    Universitas Sumatera Utara

  • Terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa

    huruf.

    Tidak boleh mengandung karakter spasi.

    Tidak boleh mengandung symbol-simbol khusus, kecuali garis bawah

    (underscore). Yang termasuk symbol khusus yang tidak boleh digunakan

    adalah $ ? % # ! & * , ( ) - + = @ .

    Panjang sebuah nama variabel hanya 32 karakter.

    Untuk dapat menggunakan variabel, maka variabel tersebut harus

    dideklarasikan terlebih dahulu pada program yang dibuat. Berikut ini merupakan cara

    mendeklarasikan variabel pada BASCOM-AVR.

    DIM Nama_variabel AS Nama_tipe

    Contoh:

    dim x as integer Deklarasi x bertipe integer

    dim a as long Deklarasi a bertipe lon

    2.1.6 Operasi-operasi dalam BASCOM-AVR

    Bahasa pemrograman BASCOM-AVR ini dapat digunakan untuk

    menggabungkan, membandingkan, atau mendapatkan informasi tentang sebuah

    pernyataan dengan menggunakan operator-operator yang tersedia di BASCOM-AVR.

    Universitas Sumatera Utara

  • Operator aritmatika

    Operator ini adalah operator yang digunakan dalam perhitungan. Operator

    aritmatika meliputi + (tambah), - (kurang), / (bagi), dan * (kali).

    Operator relasi

    Operator ini berfungsi membandingkan nilai sebuah angka. Hasilnya dapat

    digunakan untuk membuat keputusan yang sesuai dengan program yang kita

    buat. Operator relasi meliputi:

    Operator Relasi Pernyataan

    = Sama dengan X = Y

    Tidak sama dengan X Y

    < Lebih kecil dari X < Y

    > Lebih besar dari X > Y

    = Y

    Tabel 2.2. Tabel Operasi Relasi

    Operator logika

    Universitas Sumatera Utara

  • Operator logika digunakan untuk menguji sebuah kondisi atau memanipulasi

    bit dan operasi Boolean. Dalam BASCOM-AVR ada 4 buah operator logika,

    yaitu AND, OR, NOT, dan XOR.

    Operator fungsi

    Operator fungsi digunakan untuk melengkapi operator yang sederhana.

    2.2 Pernyataan Kondisional (IF-THEN END IF)

    Pernyataan ini digunakan untuk melakukan pengambilan keputusan terhadap dua

    buah bahkan lebih kemungkinan untuk melakukan suatu blok pernyataan atau tidak.

    Konstruksi penulisan pernyatan IF-THEN-ELSE-END IF pada bahasa BASIC ialah

    sebagai berikut:

    IF pernyataan kondisi 1 THEN

    blok pernyataan 1 yang dikerjakan bila kondisi 1 terpenuhi

    IF pernyataan kondisi 2 THEN

    blok pernyataan 2 yang dikerjakan bila kondisi 2 terpenuhi

    IF pernyataan kondisi 3 THEN

    blok pernyataan 3 yang dikerjakan bila kondisi 3 terpenuhi

    Setiap penggunaan pernyataan IF-THEN harus diakhiri dengan perintah END IF

    sebagai akhir dari pernyatan kondisional.

    Universitas Sumatera Utara

  • 2.3 BASCOM AVR

    Bahasa BASIC untuk mikrokontroler produk AVR, yaitu BASCOM. Hingga

    saat tulisan ini ditulis, MCS Electronics pemroduksi BASCOM hanya dikembangkan

    untuk mikrokontroler produk ATMEL, yaitu 8051 dan AVR. AVR ATMEGA8

    memiliki program memory (memori tempat menyimpan kode program) sebesar 8KB,

    artinya adalah 50% dari total kapasitanya.

    Sebuah HF Frequency Counter dengan tampilan LCD, dilengkapi dengan fitur

    Autoranging Display, IF Shifted Display dan manipulasi EEPROM yang telah

    saya buat hanya membutuhkan 40% dari total program memory ATMEGA8

    atau hanya 3.2KB.

    Sebuah FLL (Frequency Locked Loop), yang didalamnya berisi Frequency

    Counter, Autoranging Display, IF Shifted display, EEPROM Manipulation

    dan Locking Mechanism dengan PWM hanya membutuhkan 48% dari total

    program memory ATMEGA8 atau hanya 3.84KB. ketiga contoh projects

    diatas bisa memberikan gambaran bahwa 4KB di dalam pemrograman

    mikrokontroler adalah sangatsangat berarti.

    2.4 SETTING ENVIRONTMENT BASCOM

    prosedur ini memastikan bahwa environtment dari kompiler BASCOM sesuai

    dengan mikrokontroler yang sedang kita buat firmwarenya. Setting ini hanya

    Universitas Sumatera Utara

  • melekat kepada satu file firmware saja, jadi setiap membuat file firmware harus

    dilakkan prosedur ini. Berikut langkah utamanya.

    Universitas Sumatera Utara

  • Ilustrasi Grafis Ilustrasi Deskriptif

    1. Langkah pertama, buka aplikasi

    BASCOM.

    2. Buat file firmware yang baru, beri

    nama sesuai dengan keinginan

    anda (baca prosedur pembuatan

    firmware di bawah).

    3. Pada Menu Bar (Atas), click

    Option >> Compiler >> Chip

    4. Pada dialog box Option, pada

    menu bar click Chip >> Chip:

    sesuai dengan mikrokontroler

    yang sedang dikerjakan, contoh

    disini adalah ATMEGA8, maka

    pilih m8def.dat

    5. Simpan file tersebut Sebenarnya

    kenapa kita harus melakukan

    setting dasar ini?

    Tabel 2.4 SETTING ENVIRONTMENT BASCOM

    Universitas Sumatera Utara

  • 2.5 MEMBUAT FIRMWARE BARU

    Ilustrasi Grafis Ilustrasi Deskriptif

    1. Buka BASCOM

    2. Pada Menu Bar (Atas),

    click File >> New

    1. Pada dialog box Save

    As, beri nama file

    firmware, untuk

    menyimpan 1 project/

    firmware dalam 1

    direktori berbeda,

    karena setelah

    dikompile nanti akan

    muncul filefile

    tambahan Lainnya,

    sehingga lebih mudah

    2. mengorganisasikannya

    3. Click Save

    4. Pada Menu Bar (Atas),

    click Option >>

    Compiler >> Chip

    Universitas Sumatera Utara

  • Ilustrasi Grafis Ilustrasi Deskriptif

    6. Pada dialog box Option,

    pada menu bar click Chip

    >> Chip: sesuai dengan

    mikrokontroler yang

    sedang dikerjakan, contoh

    disini adalah ATMEGA8,

    maka pilih m8def.dat

    7. Simpan kembali file

    tersebut

    8.Sekarangfile firmware

    danenvironment

    BASCOM telah sesuai

    dengan ATMEGA8535

    Universitas Sumatera Utara

  • Tabel 2.5 MEMBUAT FIRMWARE BARU

    2.6 MENULIS FIRMWARE

    Gaya cara menulis sebuah program atau firmware sangat bervariasi dan unik untuk

    masingmasing individu, namun sekali lagi saya akan sampaikan disini kebiasaan

    saya menuliskan, silakan memilih sendiri gaya penulisan yang sesuai.

    --------------------------------------------------------

    1. Judul Project, deskripsi dan sebagainya

    --------------------------------------------------------

    2. Environtment untuk kompiler (compiler directives)

    --------------------------------------------------------

    3. Setup-setup PORT IO, dll

    --------------------------------------------------------

    4. Deklarasi Variables

    --------------------------------------------------------

    5. Program Loop Utama

    --------------------------------------------------------

    6. Kumpulan Function/ Subroutine

    Universitas Sumatera Utara

  • --------------------------------------------------------

    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. Project title and Description

    ' Project: Digital Voltmeter

    ' Designed by Cholis Safrudin YD1CHS

    ' -----------------------------------

    ' Using ADC to sense the voltage variation from the divider circuit

    ' Displaying into LCD

    '----------------------------------------------------------------------------

    '2. Compiler Directives

    '----------------------------------------------------------------------------

    $regfile = "m16def.dat" 'Atmega-16

    $crystal = 8000000 'Xtal 8MHz

    '3. Setup Port IO dan Hardware

    Universitas Sumatera Utara

  • '----------------------------------------------------------------------------

    Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , _

    Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0 '4 bits mode, Port-C

    Config Lcd = 16 * 2 '16x4 Characters LCD

    Cls 'Clear Screen

    Cursor Off 'Cursor is Off

    Waitms 500 'Wait for 500ms

    Config Adc = Single , Prescaler = Auto 'ADC Configuration

    Start Adc 'Start ADC, not necessary since

    'it started automatically

    '4. Variable Declaration

    '----------------------------------------------------------------------------

    Dim Bat_pow As Word 'Variable to Store Battery Power

    'Word = 6 Bytes, value from 0 to

    65535

    Dim Bat_fact As Single 'Variable to Store Correction

    Factor

    Universitas Sumatera Utara

  • 'Single = 3 Bytes, value from 1.5

    x 10^45 to 3.4 x 10^38

    Dim Bat_volt As Single 'Variable to Store Battery Voltage

    'Single = 3 Bytes, value from 1.5

    x 10^45 to 3.4 x 10^38

    Bat_fact = 12 / 508 'Set Battery Scale

    '5. Print Welcome Messages & Wait until VCO is Steady state

    '----------------------------------------------------------------------------

    Lcd "AVRLCD Voltmeter" 'Print 1st Message

    Waitms 100 'wait

    Lowerline 'go to line 2

    Lcd "by Cholis YD1CHS" 'Print 2nd Message

    Waitms 2000 'wait for 2000ms

    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

    Universitas Sumatera Utara

  • ' 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

    Do

    Bat_pow = Getadc(0) 'Get Batt Power at ADC0

    Bat_volt = Bat_pow * Bat_fact 'Get a riil voltage value

    If Bat_pow < 430 Then 'Battery is low, warn to user

    Lcd "Batt. Power: BAD" 'Print "Batt. Power: BAD"

    Lowerline 'go to line 2

    Lcd Fusing(bat_volt , "##.##") ; " Volts" 'Print Battery Voltage Value

    Waitms 1000 'wait

    Else 'Battery is Good

    Lcd "Batt. Power: OK" 'Print "Batt. Power: OK"

    Lowerline 'go to line 2

    Lcd Fusing(bat_volt , "##.##") ; " Volts" 'Print Battery Voltage Value

    Waitms 1000 'wait

    End If

    Universitas Sumatera Utara

  • Cls 'Clear Screen

    Loop 'Repeated again

    End 'end program

    2.7 MENGKOMPILE FIRMWARE

    Mengubah firmware dari bahasa tingkat tinggi, melingkingkan dengan berbagai

    hal, kemudian merubahnya kebahasa mesin, sehingga siap untukdidownload ke Up.

    Berikut ilustrasi menarik, hirarki dari tingkatantingkatan bahasa pemrograman.

    Gambar 2.7 hirarki dari tingkatantingkatan bahasa pemrograman.

    Menempati puncak piramida atau yang biasa disebut dengan bahasa tingkat

    tinggi (maksudnya bahasa yang paling dekat dengan bahasa manusia). Makin ke

    bawah posisinya di dalam piramida ini, maka bahasa tersebut makin sulit dimengerti

    Universitas Sumatera Utara

  • oleh manusia. Makanya di satu tingkat sebelum dasar piramida biasa disebut dengan

    bahasa mesin (paling dasar sendiri adalah hardware, dalam hal ini misalnya adalah

    mikrokontroler AVR, PIC, dll). kembali ke tangga tertinggi, yaitu bahasa tingkat

    tinggi, ilustrasi tersebut mencontohkan beberapa diantaranya: Fortran, C, Pascal

    BASIC nggak disebut karena terlalu mudah.bahasa tingkat tinggi akan diwakili oleh

    file dengan ekstensi *.bas (bas singkatan dari BASIC). Pada saat BASCOM

    melakukan Compile, maka akan diproduksi beberapa file langsung yang mewakili

    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 singkatan hexadecimal sebab isinya file ini hanyalah

    kodekode hexadecimal dan hanya dikenali oleh 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 paling

    banyak akan berkepentingan hanya pada dua macam file saja

    *.bas dan *.hex. Dengan satu kalimat perjalanan firmware tersebut adalah

    *.bas *.asm

    *.hex, proses ini yang disebut compiling.

    Universitas Sumatera Utara