Anda di halaman 1dari 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
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 banyak memori. Dan tentu saja siklus eksekusi instruksinya
menjadi semakin lama. Dalam AVR dengan arsitektur RISC 8 bit, semua instruksi
berukuran 16 bit sebagian besar dieksekusi dalam 1 siklus clock. Berbeda dengan
MCS-51 yang instruksinya bervariasi antara 8 bit sampai dengan 32 bit dan
dieksekusi selama 1 sampai 4 siklus mesin, dimana 1 siklus mesin membutuhkan 12
periode clock.
Dalam perkembangannya, AVR dibagi menjadi beberapa varian yaitu
AT90Sxx, ATMega, AT86RFxx, dan ATTiny. Pada dasarnya yang membedakan
masing-masing varian adalah kapasitas memori dan beberapa fitur tambahan saja.
ATMega8535 memiliki dua jenis memori yaitu data memory dan program
memory ditambah satu fitur tambahan yaitu EEPROM memory untuk penyimpan
data.
Program Memory
ATMega8535 memiliki On-Chip In-System Reprogrammable Flash Memory
untuk menyimpan program. Untuk alasan keamanan, program memory dibagi
menjadi dua bagian yaitu Boot Flash Section dan Application Flash Section. Boot
Flash Section digunakan untuk menyimpan program Boot Loader, yaitu program
yang harus dijalankan pada saat AVR reset atau pertama kali diaktifkan.
Universitas Sumatera Utara
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. J ika 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 Filedan I/O
Memory, sementara 512 lokasi address lainnya digunakan untuk internal data
Universitas Sumatera Utara
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. J adi 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.4x10
38

7 Double 5.0x10
-324
1.7x10
308
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
<= Lebih kecil atau sama
dengan
X <=Y
>= Lebih besar atau sama
dengan
X >=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 ATMEGA-8
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 ATMEGA-8
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 ATMEGA-8 atau hanya 3.84KB. ketiga contoh projects
diatas bisa memberikan gambaran bahwa 4KB di dalam pemrograman
mikrokontroler adalah sangat-sangat berarti.
2.4 SETTING ENVIRONTMENT BASCOM
prosedur ini memastikan bahwa environtment dari kompiler BASCOM sesuai
dengan mikrokontroler yang sedang kita buat firmware-nya. 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 ATMEGA-8, 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 file-file
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 ATMEGA-8,
maka pilih m8def.dat
7. Simpan kembali file
tersebut
8.Sekarangfile firmware
danenvironment
BASCOM telah sesuai
dengan ATMEGA-8535
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
masing-masing 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 ATMEGA-16 dengan external Crystal sebesar 8MHz, sekali lagi
gaya penulisan tergantung dengan masing-masing 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 tingkatan-tingkatan bahasa pemrograman.

Gambar 2.7 hirarki dari tingkatan-tingkatan 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
masing-masing 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
kode-kode hexadecimal dan hanya dikenali oleh mesin atau mikrokontroler saja) yang
mewakili tingkatan Machine Language. Beberapa file lainnya yang diproduksi oleh
BASCOM adalah file-file 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

Anda mungkin juga menyukai