Anda di halaman 1dari 97

Modul Mikrokontroler ATmega8535

1
1. PENDAHULUAN

1.1 Deskripsi Judul

Memprogram Peralatan Sistem Otomasi Elektronik yang Berkaitan I/O


berbantuan Mikrokontroller ATmega8535 merupakan modul teori dan
praktikum yang membahas Prosedur Penyusunan Algoritma Pemrograman,
Identifikasi Arsitektur Mikrokontroller ATmega8535 dan Pemrograman Sistem
Mikrokontroller ATmega8535.

1.2 Prasyarat

Untuk mengikuti modul Memprogram Peralatan Sistem Otomasi Elektronik


yang Berkaitan I/O berbantuan Mikrokontroller ATmega8535 ini perserta
didik harus telah mengikuti modul sebelumnya yaitu Menguasai Dasar
Elektronika Digital dan Komputer dan Merakit dan Mengoperasikan Komputer
Menggunakan Sistem Operasi DOS dan Windows.

1.3 Tujuan Umum Pembelajaran

Diharapkan setelah mempelajari modul ini peserta didik dapat memiliki


kemampuan :

1. Menguasai Prosedur Penyusunan Algoritma Pemrograman


2. Mengidentifikasi Arsitektur Mikrokontroller ATmega8535
3. Memprogram Sistem Mikrokontroller ATmega8535

1.4 Petunjuk Penggunaan Modul

Ikutilah kegiatan pembelajaran setiap pokok bahasan dengan baik, yang


terdiri dari penjelasan materi, latihan dan tugas. Latihan dan tugas
merupakan alat ukur keberhasilan peserta didik dalam memahami setiap pokok
bahasan, yang mana apabila peserta didik dapat menyelesaikan latihan dan
tugas dengan mandiri, maka kompetensi dianggap telah tercapai sesuai
dengan tujuan pembelajaran yang dihararapkan Pelaksanaan Modul
Memprogram Peralatan Sistem Otomasi Elektronik yang Berkaitan I/O
berbantuan Mikrokontroller ATmega8535 ini menggunakan peralatan :

1. Komputer atau laptop yang memiliki saluran port LPT dan COM
2. Bascom-AVR
3. Teaching aid dan kelengkapannya seperti pada gambar berikut
Third |Semester
Modul Mikrokontroler ATmega8535
2

Modul Digital Input Output


Modul Mikrokontroller Modul DAC 2 Kanal - SPI
Test

Modul Lampu Lalu Lintas Modul Seven Segment Modul Motor Stepper

Modul LED Matriks Modul Analog Input test Modul Keypad LCD

Modul Analog Digital Input


DC Power Suppy 12 Volt Modul RTC
Output Test

Kabel input output digital Kabel serial RS232 dengan Kabel Port ke Printer
dengan stecker DB25 Male stecker DB9 Female dengan stecker amphenol
Female female, crossed 26 pin DB25 Female

Kabel jumper dengan


stecker amphenol 26 pin

Third |Semester
Modul Mikrokontroler ATmega8535
3
2. ALGORITMA PEMROGRAMAN

2.1 Tujuan Kegiatan Pembelajaran

Setelah mengikuti kegiatan pembelajaran pada pokok bahasan ini, diharapkan


peserta didik dapat Menguasai Prosedur Penyusunan Algoritma Pemrograman.

2.2 Uraian Materi

2.2.1 Algo ritma

Algoritma adalah urutan langkah-langkah atau tahapan-tahapan penyelesaian


masalah yang disusun secara sistematis dan logis. Kata Logis merupakan kata
kunci dalam Algoritma. Langkah-langkah logis dalam Algoritma ini harus
dapat ditentukan bernilai salah atau benar.

Algoritma berisi urutan langkah-langkah penyelesaian masalah. Ini berarti


Algoritma adalah proses yang procedural. Definisi procedural menurut kamus
Bahasa Indonesia :

1. Tahap-tahap kegiatan untuk menyelesaikan suatu aktivitas


2. Metode langkah demi langkah secara eksak dalam memecahkan suatu
masalah

Pada pemrograman proseduaral, program dibedakan antara bagian data


dengan bagian instruksi. Bagian instruksi terdiri atas runtutan (sequence)
instruksi yang dilaksanakan satu persatu secara beruruta n oleh pemroses.
Alur pelaksanaan instruksi dapat berubah karena adanya pencabangan
kondisional. Data yang disimpan dalam memori dimanipulasi oleh instruksi
secara beruntun procedural. Paradikma pemrograman seperti ini dinamakan
pemrograman procedural.

Algoritma adalah bagian paling utama dari pemrograman. Dalam kehidupan


sehari-hari banyak pula dijumpai proses yang dinyatakan dalam suatu
algoritma. Cara-cara membuat kue atau masakan yang dinyatakan dalam suatu
resep juga dapat disebut sebagai algoritma. Pada setiap resep selalu ada
urutan langkah-langkah membuat membuat masakan. Bila langkah langkahnya
tidak logis, tidak dapat dihasilkan masakan yang diinginkan. Ibu-ibu yang
mencoba suatu resep masakan akan membaca satu per satu langkah langkah-
langkah pembuatannya lalu ia mengerjakan proses sesuai yang ia baca. Secara
umum pihak (benda) yang mengerjakan proses disebut pemroses
(processor). Pemroses tersebut dapat berupa manusia, computer, robot atau
alat elektronik lainnya. Pemroses melakukan sua tu proses dengan

Third |Semester
Modul Mikrokontroler ATmega8535
4
melaksanakan atau mengeksekusi algoritma yang menjabarkan proses
tersebut. Melaksanakan algoritma berarti mengerjakan langkah-langkah di
dalam algoritma tersebut. Pemroses mengerjakan proses sesuai dengan
algoritma yang diberikan kepadanya. Jurus masak membuat kue berdasarkan
resep yang diberikan kepadanya, pianis memainkan lagu berdasarkan papan
not balok. Karena itu suatu algoritma harus dinyatakan dslam bentuk yang
dapat dimengerti pemroses. Jadi suatu pemroses harus :

1. Mengerti setiap langkah dalam algoritma


2. Mengerjakan operasi yang sesuai dengan langkah tersebut

Mekanisme pelaksanaan algoritma dilakukan oleh pemroses (komputer).


Komputer hanyalah salah satu pemroses. Agar dapat dilaksanakan oleh
komputer, algoritma harus ditulis dalam notasi pemrograman sehingga
dinamakan program. Jadi program adalah perwujudan atau implementasi
teknis Algoritma yang ditulis dalam bahasa perograman tertentu sehingga
dapat dilaksanakan oleh komputer.

Program ditulis dalam salah satu bahasa pemrog raman dan kegiatan membuat
program disebut Pemrograman (programming). Orang yang menulis program
disebut pemrogram (programmer). Tiap-tiap langkah yang yang ditulis di dalam
program disebut pernyataan (statement) atau instruksi. Jadi program tersusun
atas sederetan instruksi. Bila suatu instruksi dilaksanakan, maka operasi-
operasi yang bersesuaian dengan instruksi tersebut dijalankan oleh komputer.

Secara garis besar komputer tersusun dari empat komponen utama, yaitu ;

1. Piranti masukan, ialah alat yang digunakan untuk untuk memasukkan


data atau program ke dalam memori. Misalnya : keyboard, scanner,
mouse, joystick
2. Piranti keluaran, ialah alat yang digunakan untuk komputer untuk
menampilkan hasil-hasil operasi pemrosesan data. Misalnya : monitor,
printer, plotter
3. Unit pemroses utama (CPU). Ini merupakan otak dari computer yang
berfungsi mengerjakan operasi-operasi dasar seperti operasi aritmetika
dan logika
4. Memory . Tempat menyimpan program yang berisi operasi-operasi yang
akan dikerjakan oleh CPU dan menyi mpan data atau informasi yang akan
diolah pemroses ataupun data hasil proses.

Third |Semester
Modul Mikrokontroler ATmega8535
5

Gambar 2.1 Komponen Utama Komputer

Mula-mula program dimasukkan ke dalam memory komputer. Ketika


program dilaksanakan (dieksekusi) setiap instruksi yang telah tersimpan
didalam memory dikirim ke CPU. CPU menjerjakan operasi-operasi yang
bersesuaian dengan instruksi tersebut. Bila suatu operasi memerlukan data,
data dibaca dari piranti masukan, disimpan memo ry lalu dikirim ke CPU untuk
operasi yang memerlukan tadi. Bila proses menghasilkan keluaran atau
informasi, keluaran disimpan dalam memory lalu CPU menuliskan data
keluaran tadi ke piranti keluaran.

Pada dasarnya sebuah algoritma merupakan deskripsi pelaksanaan suatu


proses. Sebuah proses (job) dikerjakan oleh pemroses menurut algoritma yang
sudah ditulis. Algoritma disusun oleh sederetan langkah instruksi yang logis.
Tiap lagkah instruksi tersebut mengerjakan suatu tindakan (aksi), bila suatu
aksi dilaksanakan maka sejumlah operasi yang bersesuaian dengan aksi
tersebut dikerjakan oleh pemroses.

Contoh :

Algoritma tukar isi gelas

Diketahui gelas A berisi susu, gelas B berisi kopi. Tukarkan isi kedua gelas
tersebut sehingga gelas A berisi kopi dan gelas B berisi susu.

Algoritma pemecahan masalah di atas adalah :

1. Tuang isi gelas A ke gelas C


2. Tuang isi gelas B ke gelas A
3. Tuang isi gelas C ke gelas B

Contoh algoritma tukar isi gelas di atas apabila dianalogikan tugar data dari
suatu lokasi memory maka menjadi sebagai berikut :

Contoh :

Algoritma tukar isi register r16 dengan r17 . Diketahui register r16 berisi data
#$55, register r17 berisi data #$AA. Tukarkan isi kedua register tersebut
sehingga r16 berisi data #$AA dan r17 berisi data #$55.
Third |Semester
Modul Mikrokontroler ATmega8535
6
Algoritma pemecahan masalah di atas adalah :

1. Copykan isi register r16 ke r18


2. Copykan isi register r17 ke r16
3. Copykan isi register r18 ke r17

Algoritma dapat disajikan dengan menggunakan dua macam cara, yaitu


dengan tulisan dan gambar. Penyajian dengan cara tulisan adalah seperti
pada contoh di atas, yang mana suatu langkah-langkah pemecahan masalah
dijelaskan dalam bentuk kata-kata dengan bahasa sendiri seperti halnya
penulisan resep makanan. Penyajian algoritma dengan bentuk gambar banyak
bentuk chart yang bisa dipakai dan yang paling banyak dipergunakan adalah
flowchart.

2.2.2 Flowchart

Flowchart adalah suatu metode untuk menggambarkan tahap -tahap pemecahan


masalah dengan merepresentasikan sy mbol-simbol tertentu yang mudah
dimengerti, digunakan dan standar untuk diterapkan.

Tujuan utama dari penggunaan lowchart adalah untuk menggambarkan suatu


tahapan penyelesaian masalah secara sederhana, terurai, rapi dan jelas
menggunakan sy mbol-simbol yang standar. Berikut ini adalah sy mbol-simbol
standar yang digunakan dalam penulisan program flowchart.

Gambar 2.2 Simbol-simbol program flowchart

Third |Semester
Modul Mikrokontroler ATmega8535
7
Apabila suatu flowchart lengkap telah selesai dikerjakan, gambaran lengkap
tentang proses pemikiran seorang programmer dalam memecahkan suatu
masalah dapatlah diikuti. Peranan flowchart sangat penting terutama pada
pemeriksaan program. Flowchart, yang merupakan bagian penting dalam
suatu program yang telah selesai, dapat juga membantu orang lain dalam
memahami algoritma yang tepat yang dibuat oleh programmer.

Ada dua jenis flowchart, yaitu :

1. Flowchart system, untuk menunjukkan jalannya program secara umum


(garis besarnya saja)
2. Flowchart terperinci, memuat perincian-perincian (detail) yang terutama
penting untuk programmer

Biasanya suatu program yang rumit didahului dengan flowchart system, lalu
dilengkapi pula dengan flowchart terperinci. Keuntungan dari sebuah
flowchart ialah bahwa di menunjukkan urutan langkah-langkah dengan
mengunakan sy mbol anak panah. Simbol-simbol yang lain digunakan untuk
menunjukkan operasi apa yang dilaksanakan pada tiap-tiap langkah tersebut.

Contoh Algoritma tukar isi register di atas dapat digambarkan dalam bentuk
flowchart sebagai berikut ;

Gambar 2.3 Flowchart program tukar isi register

2.2.3 Bahasa Pemrograman

Suatu program komputer merupakan susunan instruksi (perintah). CPU


komputer akan melaksanakan instruksi-instruksi itu langkah demi langkah.
Sebelum suatu program dilaksanakan oleh CPU, program tersebut harus
disimpan di memory dalam bentuk biner. Program jenis ini disebut program

Third |Semester
Modul Mikrokontroler ATmega8535
8
dalam bahasa mesin (machine language). Hanya bahasa inilah yang yang dapat
dimengerti oleh oleh sebuah komputer. Program dalam bahasa mesin ini
biasanya dinyatakan dalam digit heksadesimal dan program ini dapat pula
disimpan dalam suatu file ASCII.

Bagi pemakai, menginterpretasikan suatu program dalam bahasa mesin


sangatlah sulit dan membutuhkan banyak waktu. Para pembuat
mikroprosessor dan mikrokontroller telah membagi instruksi-instruksi menjadi
beberapa katagori menurut fungsinya. Instruksi-instruksi CPU dan register-
register biasanya dinyatakan dalam sy mbol-simbol yang disebut mnenonics.
Misalnya instruksi MOV adalah perintah untuk meng-copy isi

register satu ke register lainnya. Suatu program yang ditulis dalam kode
mnemonic disebut program dalam bahasa assembly. Sebelum suatu program
dalam bahasa assembly dilaksanakan oleh CPU, program tersebut harus
diterjemahkan dalam bahasa mesin oleh suatu program khusus yang disebut
Assembler.

Kebanyakan instruksi pada bahasa assembly merupakan kependekan dari


instruksi dalam bahasa manusia, contoh di atas MOV merupakan kepend ekan
dari MOVE, contoh lain misalnya LD kependekan dari LOAD, ST kependekan
dari STORE.

Selain dengan menggunakan bahasa mesin yang berupa kode heksadesimal


dan bahasa assembly, terdapat pilihan bahasa pemrograman lain yang lebih
manusiawi dan berorientasi ke bahasa manusia yang biasa disebut dengan
bahasa tingkat tinggi. Program dalam bahasa tinggat tinggi tidak dapat
langsung dilaksanakan oleh computer tetapi harus diterjemahkan dahulu oleh
sebuah translator bahasa yang disebut kompilator (compiler) ke dalam bahasa
mesin. Yang tergolong dalam bahasa ini adalah Pascal, Basic, C, Delphi, Visual
Basic, Visual C++ dan lain-lain.

Walaupun bahasa tingkat tinggi terus berkembang dengan segala fasilitas dan
kemudahannya, peranan bahasa pemrograman tingkat rendah tetap tidak
dapat digantikan. Bahasa assembly mempunyai keunggulan yang tidak
mungkin diikuti oleh bahasa tingkat apapun dalam hal kecepatan, ukuran file
yang kecil serta kemudahan dalam manipulasi sistem komputer.

Pada modul ini bahasa pemrogra man yang akan dipergunakan adalah bahasa
assembly yang secara keseluruhan instruksinya tercantum dalam tabel berikut
ini :

Third |Semester
Modul Mikrokontroler ATmega8535
9
Tabel 2.1 Instruksi Mikrokontroller ATmega8535

Third |Semester
Modul Mikrokontroler ATmega8535
10

Third |Semester
Modul Mikrokontroler ATmega8535
11

Contoh Algoritma tukar isi register di atas dapat diimplementasikan dalam


bentuk bahasa pemrograman assembly sebagai berikut ;

2.3 Rangkuman

Algoritma adalah urutan langkah-langkah atau tahapan-tahapan penyelesaian


masalah yang disusun secara sistematis dan logis. Mekanisme pelaksanaan
algoritma dilakukan oleh pemroses (komputer). Komputer hanyalah salah satu
pemroses. Agar dapat dilaksanakan oleh komputer, algoritma harus ditulis
dalam notasi pemrograman sehingga dinamakan program. Jadi program
adalah perwujudan atau implementasi teknis Algoritma yang ditulis dalam
bahasa perograman tertentu sehingga dapat dilaksanakan oleh komputer.
Program ditulis dalam salah satu ba hasa pemrograman dan kegiatan membuat
program disebut Pemrograman (programming). Orang yang menulis program
disebut pemrogram (programmer). Tiap-tiap langkah yang yang ditulis di dalam
program disebut pernyataan (statement) atau instruksi. Jadi program tersusun

Third |Semester
Modul Mikrokontroler ATmega8535
12
atas sederetan instruksi. Bila suatu instruksi dilaksanakan, maka operasi -
operasi yang bersesuaian dengan instruksi tersebut dijalankan oleh komputer.

Flowchart adalah suatu metode untuk menggambarkan tahap -tahap pemecahan


masalah dengan merepresentasikan sy mbol-simbol tertentu yang mudah
dimengerti, digunakan dan standar untuk diterapkan. Biasanya suatu program
yang rumit didahului dengan flowchart system, lalu dilengkapi pula dengan
flowchart terperinci. Keuntungan dari sebuah flowchart ialah bahwa di
menunjukkan urutan langkah-langkah dengan mengunakan sy mbol anak
panah. Simbol-simbol yang lain digunakan untuk menunjukkan operasi apa
yang dilaksanakan pada tiap-tiap langkah tersebut.

Pembuatan program dapat dilakukan dengan menggunakan bahasa mesin


berupa kode heksadesimal, bahasa assembly dan bahasa tingkat tinggi.

2.4 Latihan

Pada Tabel Instruksi Mikrokontroller ATmega8535 tidak ditemukan instruksi


pembagian integer, pada latihan ini kita akan membuat sub routine yang
berfungsi sebagai pembagi integer sebagai berikut ;

Masukan : r16 data yang akan dibagi


r17 data pembagi

Keluaran : r18 hasil pembagian integer


r19 sisa pembagian

Fungsi Isi register r16 dibagi dengan isi register r17, hasil
: pembagian integer disimpan ke register r18 sisa
pembagian disimpan ke register r19.

Register r16, r17, r18 dan r19 masing-masing adalah register 8 bit, sehingga
angka yang dapat diproses berkisar antara 0 sampai dengan 255 desimal.

Algoritma atau langkah-langkah pemecahan masalah :

1. Jika r16 lebih kecil dari r17 maka r16 tidak dapat dibagi, maka hasil
pembagian sama dengan 0 ( r18 = 0 ) dan sisa pembagian sama dengan
Third |Semester
Modul Mikrokontroler ATmega8535
13
r16 ( r19 = r16 ) Dan proses pembagian tidak dapat dilakukan lagi,
proses selesai.
2. ika r16 tidak lebih kecil dari r17 maka lakukan proses pengurangan r16
r17 hasilnyanya disimpan ke r16

Kemudian lakukan proses inc remen pada register r18 setiap kali terjadi proses
pengurangan tersebut di atas.

Kembali ke langkah nomor satu

Dari ide pemecahan masalah di atas, selanjutnya dibuat flowchart terperinci


sebagai berikut :

Dari flowchart di atas dan memperhatikan table Instruksi Mikrokontroller


ATmega8535, disusun program dalam bahasa assembly sebagai berikut :

Third |Semester
Modul Mikrokontroler ATmega8535
14

Berikut ini latihan membuat program untuk membagi bilangan integer 125
dengan 50.

Algoritma langkah-langkah pemecahan masalah :

1. Dengan menggunakan sub routine di atas, register r16 diisi dengan


data desimal 100, register r17 diisi data desimal 50
2. Panggil sub routine pembagian integer idiv

Flowchart : Program dalam bahasa assembley :

Jika program ini dijalankan, seharusnya register


r18 akan berisi data decimal 2dan register r19
akan berisi data decimal 25

Third |Semester
Modul Mikrokontroler ATmega8535
15
3. ARSITEKTUR MIKROKONTROLLER ATMEGA8535

3.1 Tujuan Kegiatan Pembelajaran

Setelah mengikuti kegiatan pembelajaran pada pokok bahasan ini, diharapkan


peserta didik dapat mengidentifikasi arsitektur mikrokontroller ATmega8535 .

3.2 Uraian Materi

3.2.1 Arsitektur Mikrokontroller ATmega8535

Mikrokontroller Atmega8535 adalah mikrokontroller AVR 8 bit buatan ATMEL


yang memiliki arsitektur RISC (Reduce Instruc tion Set Computing). Instruksi
dikemas dalam kode 16 bit dan dijalankan hanya dengan satu siklus clock.
Struktur I/O yang baik dengan sedikit komponen tambahan diluar. Fasilitas
internal yang terdapat pada mikrokontroller ini adalah oscillators, timers,
UART, SPI, pull-up resistors, pulse width modulation (PWM), ADC, analog
comparator dan watch-dog timers. AVR merupakan kependekan dari Alf (Egil
Bogen) and Vegard (Wollan) 's Risc processor.

3.2.1.1 Fitur

1. High-performance, Low-power AVR 8-bit Microcontroller


2. Advanced RISC Architecture
130 Powerful Instruc tions Most Single Clock Cycle Execution
32 x 8 General Purpose Working Registers
Fully Static Operation
Up to 16 MIPS Throughput at 16 MHz
On-chip 2-cycle Multiplier
3. Nonvolatile Program and Data Memories
8K Bytes of In-System Self-Programmable Flash Endurance: 10,000
Write/Erase Cycles
Optional Boot Code Section with Independent Lock Bits. In-System
Programming by On-chip Boot Program True Read-While-Write
Operation
512 Bytes EEPROM, Endurance: 100,000 Write/Erase Cycles
512 Bytes Internal SRAM
Programming Lock for Software Security
4. Peripheral Features
Two 8-bit Timer/Counters with Separate Prescalers and Compare
Modes
Third |Semester
Modul Mikrokontroler ATmega8535
16
One 16-bit Timer/Counter with Separate Prescaler, Compare Mode,
and Capture Mode
Real Time Counter with Separate Oscillator
Four PWM Channels
8-channel, 10-bit ADC
Byte-oriented Two-wire Serial Interface
Master/Slave SPI Serial Interface
Programmable Watchdog Timer with Separate On-chip Oscillator
On-chip Analog Comparator
5. Special Microcontroller Features
Power-on Reset and Programmable Brown-out Detec tion
Internal Calibrated RC Oscillato
External and Internal Interrupt Sources
Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-
down, Standby and Extended Standby
6. I/O and Packages
32 Programmable I/O Lines
40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad QFN/MLF
7. Operating Voltages
2.7 - 5.5V for ATmega8535L
4.5 - 5.5V for ATmega8535
8. Speed Grades
0 - 8 MHz for ATmega8535L
0 - 16 MHz for ATmega8535

Keunggulan AVR adalah pengkombinasian banyak instruksi dengan 32 general


purpose working registers. Kesemua 32 register tersambung langsung ke
Arithmetic Logic Unit (ALU), Mengijinkan dua register bebas dapat diakses
dengan intruksi yang dieksekusi hanya dengan satu siklus clock. Hasilnya
adalah suatu arsitektur dengan kode yang lebih efisien dan 10 kali lebih cepat
dibandingkan dengan mikrokontroller konvensional CISC (Complex Instruc tion
set Computing).

Mikrokontroller ini dibuat dengan using Atmels high density nonvolatile


memory technology. Program memory ISP Flash pada chip tunggal ini dapat
deprogram dalam mode In-System melalui saluran interface serial SPI.

Third |Semester
Modul Mikrokontroler ATmega8535
17
3.2.1.2 Konfigurasi Pin

Gambar 3. 1 Pinout Atmega8535

3.2.1.3 Deskripsi Pin

Vcc Power Supply

GND Ground

Port A (PA7..PA0) Port A berfungsi sebagai masukan analog ke A/D


Converter Selain itu Port A juga berfungsi sebagai port
I/O dua arah 8 bit apabila ADC tidak digunakan.
Pin pada port dilengkapi pula dengan resistor pull-up
internal yang dapat diaktifkan untuk setiap bit yang
dipilih.

Third |Semester
Modul Mikrokontroler ATmega8535
18
Port B (PB7..PB0) Port B berfungsi sebagai port I/O dua arah 8 bit
dengan resistor pull-up internal yang dapat diaktifkan
untuk setiap bit yang dipilih.

Port C (PC7..PC0) Port C berfungsi sebagai port I/O dua arah 8 bit
dengan resistor pull-up internal yang dapat diaktifkan
untuk setiap bit yang dipilih.

Port D (PD7..PD0) Port D berfungsi sebagai port I/O dua arah 8 bit
dengan resistor pull-up internal yang dapat diaktifkan
untuk setiap bit yang dipilih.

Third |Semester
Modul Mikrokontroler ATmega8535
19
Pin ini berfungsi untuk mereset mikrokontroller. Aktif
low. Artinya jika pin ini diberi input logika 0, maka
mikrokontroller akan ter-reset.

XTAL1 Pin ini tersambung ke kristal eksternal. Dilihat dari


rangkaian internal, pin ini sebagai input ke inverting
Oscillator amplifier dan input ke rangkaian operasinal
clock internal.

XTAL2 Pin ini tersambung ke kristal eksternal. Merupakan


keluaran dari inverting Oscillator amplifier

AVCC Berfungsi sebagai input power supply untuk Port A dan


A/D Converter. Pin ini harus disambung pada Vcc dan
sebaiknya dipasangi low pass filter. Jika tidak
tersambung ke Vcc maka A/D Converter tidak
berfungsi.

AREF Adalah pin tegangan reference analog untuk A/D


Converter.

Third |Semester
Modul Mikrokontroler ATmega8535
20
3.2.1.4 Digram Blok Mikrokontroller Atmega8535

Gambar 3.2. Blok Diagram Atmega8535

Third |Semester
Modul Mikrokontroler ATmega8535
21
3.2.2 Fungsi Blok pada masing-masing komponen dalam sistem
Mikrokontroller ATmega8535

3.2.2.1 AVR CPU Core

Gambar 3.3 Diagram Block Arsitektur MCU AVR

Untuk memaksimalkan performansi dan paralelisme, AVR menggunakan


arsitektur Harvard dengan pemisahan memory dan bus program dan data.
Instruksi dalam memory program dieksekusi dengan single level pipelining.
Ketika suatu instruksi sedang dieksekusi, instruksi beikutnya diambil dahulu
dari memory program. Konsep ini memungkinkan instruksi dieksekusi setiap
siklus clock. Memory program adalah In-System Re-Programmable Flas
memory .

Fast-access Register File terdiri dari 32 x 8 bit general purpose working


registers dengan waktu akses satu siklus clock memungkinkan operasi
Arithmetic Logic Unit (ALU) dilakukan dalam satu siklus clock. Pada operasi
ALU, dua operand dikeluarkan dari register File, operasi dieksekusi dan
hasilnya disimpan kembali ke dalam register file dalam satu clock.
Third |Semester
Modul Mikrokontroler ATmega8535
22
Tabel 3.1 Register Mikrokontroller Atmega8535

Enam dari 32 register dapat dipergunakan sebagai register penunjuk alamat


tidak langsung 16-bit untuk pengalamatan data index yang memungkinkan

Third |Semester
Modul Mikrokontroler ATmega8535
23
kalkulasi alamat menjadi efisien. Satu dari penunjuk alamat ini dapat
dipergunakan sebagai penunjuk alamat untuk look up tables di dalam memory
program flash. Ketiga register 16 bit tersebut adalah register X, Y dan Z.

ALU mendukung operasi aritmetika dan logika antar register atau antar
konstanta dan register. Operasi dengan register tunggal juga dapat dilakukan
oleh ALU. Setelah operasi aritmetika dilakukan, register status di -update
informasinya sesuai dengan hasil operasi.

Register status adalah SREG dengan penjelasan setiap bitnya sebagai berikut :

Gambar 3.4 Diagram Block AVR CPU General Purpose Working Registers

Seperti tampak pada gambar di atas, setiap register menempati satu alamat
pada memory data yang dipetakan langsung ke dalam 32 lokasi memory
pertama. Meskipun tidak diimplementasikan langsung sebagai lokasi SRAM,
organisasi memory ini menyediakan fleksibilitas yang baik dalam mengakses

Third |Semester
Modul Mikrokontroler ATmega8535
24
register misalnya register penunjuk X, Y dan Z dapat di-set sebagai register
indek unutk register lain dalam file. Register R26 sampai dengan R31 memiliki
fungsi tambahan. Register ini adalah penunjuk alamat 16 bit untuk
pengalamatan tidak langsung dari data space. Tiga register pengalamatan
tidaklangsung X, Y dan Z digambarkan sebagai brikut :

3.2.2.2 AVR Atmega8535 Memory

In-System Reprogrammable Flash Program Memory

Mikrokontroler Atmega8535 memiliki 8 Kbytes On-chip In-System


Reprogrammable Flash memory untuk meyimpan program. Karena semua
instruksi AVR lebarnya 16 atau 32 bit, maka memory flash diorganisasi sebagai
4K x 16. Untuk keamanan software, Flash memory space dibagi dalam dua
seksi, yaitu : Boot Program section dan Application Program section. Flash
memory meiliki ketahanan paling sedikit 10,000 kali siklus w rite/erase.
ATmega8535 Program Counter (PC) lebarnya adalah 12 bits yang dapat
mengalamati

Gambar 3.5 Peta Memory Program

Third |Semester
Modul Mikrokontroler ATmega8535
25
SRAM Data Memory

608 lokasi alamat data memory adalah Register File, I/O Memory dan internal
data SRAM. 96 lokasi alamat pertama adalah Register File dan I/O Memory . 512
lokasi alamat berikutnya adalah internal data SRAM.

Gambar 3.6 Peta Memory Data

Pengalamatan langsung dapat mencapai semua space memory data.


Pengalamatan tidak langsung dengan mode displacement hanya dapat
mencapai 63 lokasi memory dari alamat dasar yang diberikan oleh register Y
atau Z.

Ketika menggunakan register mode pengalamatan tidak langsung dengan pre-


decrement dan post-increment aotomatis, isi register X, Y dan Z akan di-
decrement atau di-incrment. Dengan mode pengalamatan tersebut dapat
mengakses 32 general purpose working registers, 64 I/O Registers dan the 512
bytes of internal data SRAM.

EEPROM Data Memory

ATmega8535 memiliki 512 bytes memory data EEPROM yang tahan paling
sedikit 100.000 kali siklus w rite/erase. Ketika EEPROM sedang dibaca, CPU
akan berhenti bekerja selama empat siklus clock sebelum instruksi berikutnya
diesksekusi. Dan pada saat EEPROM sedang ditulisi CPU akan berhententi
selama dua siklus clock.
Third |Semester
Modul Mikrokontroler ATmega8535
26
Untuk menulis EEPROM diperlukan waktu programming selama 8,4 ms Register
yang berhubungan dengan EEPROM adalah sebagai berikut :

Contoh program assembly untuk menulis EEPROM :

Contoh program assembly untuk membaca EEPROM :

Third |Semester
Modul Mikrokontroler ATmega8535
27
I/O Memory

Semua I/O dan peripheral Atmega8535 ditempatkan pada I/O Space. Untuk
mengakases lokasi I/O menggunakan instruksi IN dan OUT yang dapat
menstramsfer data antara 32 general purpose working registers dan I/O space.
Register I/O yang berada pada alamat antara 0x00 sampai dengan 0x1F dapat
diakses langsung per bit denganmenggunakan instruksi SBI dan CBI. Pada
register ini, nilai bit tunggal dapat dicek menggunakan instruksi SBIS dan SBIC.

Ketika menggunakan instruksi khusus untuk I/O IN dan OUT, alamat I/O 0x00
0x3F harus digunakan. Ketika pengalamatan register I/O sebagai data space
menggunakan instruksi LD dan ST, 0x20 harus ditambahkan pada alamat ini.

3.2.2.3 I/O Po rts

Semua port AVR memiliki fungsi true Read -Modify-Write ketika digunakan
sebagai port I/O digital.Maksudnya bahwa arah satu port pin dapat dirubah
tanpa merubah arah port pin yang lain dengan instruksi SBI dan CBI. Hal yang
sama juga berlaku untuk mengubah nilai keluaran (jika dikonfigurasi sebagai
output) atau enable/disable resistor pull-up internal jika dikonfigurasi sebagai
input. Setiap buffer keluaran memiliki karakteristik pengendali an yang
simetri baik untuk high sink maupun source. Driver pin cukup kuat untuk men-
drive LED secara langsung. Semua port memeiliki selektor resistor pull -up
sendiri-sendiri dengan suatu sumber tegangan dengan resistansi yang
bervariasi. Semua pin I/O memiliki dioda proteksi ke Vcc dan Gorund .

Gambar 3.7 Rangkaian equivalent pin I/O


Third |Semester
Modul Mikrokontroler ATmega8535
28
Pada penjelasan berikutnya dipakai symbol x untuk mewakili port dan sy mbol
n unutk mewakili bit, contoh POR TB3 untuk port B bit 3 dapat ditulis sebagai
PORTxn. Tiga buah lokasi memory I/O terletak pada setiap port. Satu untuk
register data PORTx, Data Direction RegisterDDRx dan Port Input PinsPINx.
Lokasi Port Port Input Pins I/O adalah read only ketika Register Data dan Data
Direction Register sedang dibaca atau ditulisi. Pull-up Disable PUD bit dalam
SFIOR memungkinkan fungsi pull-up untuk semua pin jika diset.

Setiap pin port terdiri dari tiga register bits, yaitu DDxn, PORTxn dan PINxn.
DDxn bits diakses pada alamat DDRx I/O, PORTxn bits pada PORTx I/O address
dan PINxn bits pada PINx I/O. DDxn bit pada Register DDRx dipergunakan
untuk mengatur arah data pin. Jika DDxn ditulisi dengan logika 1, maka Pxn
dikonfigurasi sebagai pin keluaran. Jika DDxn diberilogika 0, maka Pxn
dikonfigurasi sebagai pin masukan. Jika PORTxn diberi logika 1 ketika pin
dikonfigurasi sebagai input, resistor pull-up akan diaktifkan. Untuk melepas
saklar resistor pull-up, PORTxn harus diberi logika 0 atau pin dikonfigurasi
sebagai pin keluaran. Ketika pin reset aktif, pin port akan dikodisikan tri-
stated meskipun tidak ada pulsa clock.

Jika PORTxn diberi logika 1 ketika pin dikonfigurasi sebagai pin keluaran, maka
pin port akan di-drive ke logika tinggi (1). Jika PORTxn diberi logika 0 ketika
pin dikonfigurasi sebagai pin keluaran, maka pin port akan di-drive ke logika
rendah (0).

Ketika switching antara tri -state ({DDxn, PORTxn} = 0b00) and output high
({DDxn, PORTxn} = 0b11), dimungkinkan sebuah intermediate state dengan
pull-up ({DDxn, PORTxn} =0b01) atau output low ({DDxn, PORTxn} = 0b10)
akan munc ul. Pada umumnya pull-up enabled state dapat diakses penuh
sebagai high-impedant environment tanpa perbedaan antara strong high d river
dan pull-up. Jika tidak demikian, maka PUD bit dalam register SFIOR dapat diset
ke disable untuk semua pull-up pada semua port.

Switching antara input dengan pull-up dan output low menghasilkan masalah
yang sama. Pemakai harus menggunakan tri-state ({DDxn, PORTxn} = 0b00)
atau output high state ({DDxn, PORTxn} = 0b10) sebagai suatu intermediate
step.

Tabel 3.2 Konfigurasi Pin Port

Third |Semester
Modul Mikrokontroler ATmega8535
29
Berikut ini contoh program dalam bahasa assembly yang menunjukkan
bagaimana men-set port B pin 0 dan1 high, 2 low 3 low, dan menentukan
bahwa port pin dari 4 sampai 7 sebagai input dengan pull-up yang ditugaskan
ke port pin 6 dan 7. Nilai hasil penge mbalian pin dibaca kembali. Ketika
membaca kembali nilai pin, instruksi NOP harus dimasukkan karena adanya
keterlambatan sinyal sinkronisasi selama satu periode clock.

3.2.2.4 Timer/Counter

Time r/Counter0 8-bit dengan PWM

Gambar 3.8 Diagram Block Timer/Counter0 8 bit

Timer/Counter (TCNT0) dan Output Compare Register (OCR0) masing-masing


adalah registers 8-bit. Sinyal Interrupt request (dalam gambar di atas disingkat
Third |Semester
Modul Mikrokontroler ATmega8535
30
Int.Req) dapat dilihat pada Timer Interrupt Flag Register (TIFR). Semua interrupt
dimasker secara individual pada register Timer Interrupt Mask (TIMSK). TIFR
dan TIMSK tidak diperlihatkan pada gambar di atas , register tersebut juga
dipergunakan untuk unit timer yang lain. Timer/Counter dapat disambung ke
clock internal melalui prescaler, atau dapat juga menggunakan clock eksternal
melalui pin T0. Clock select dikontrol oleh selector clock bit (CS02:0) yang
terletak pada register Timer/Counter Control (TCCR0). Blok Clock Select logic
mengatur pilihan sumber clock. Time r/Counter menggunakan pulsa clock ini
untuk meng-inc rement (atau decrement) nilai counter. Timer/Counter tidak
aktif apabila tidak ada sumber clock yang dipilih. Keluaran dari Clock Select
logic adalah sesuai dengan timer clock (clkT0). Setiap saat nilai Double
buffered Output Compare Register (OCR0) dibandingkan dengan nilai
Timer/Counter. Hasil perbandingan dapat dipergunakan oleh Waveform
Generator untuk menggenerate keluaran PWM atau variable frequency pada pin
Output Compare (OC0). The Compare Matc h event juga men-set Compare Flag
(OCF0) yang juga dapat dipakai untuk menggenerateoutput compare interrupt
request.

Time r/Counter1 16-bit

Gambar 3.9 Diagram Block Timer/Counter1 16 bit

Third |Semester
Modul Mikrokontroler ATmega8535
31
Timer/Counter (TCNT1), Output Compare Registers (OCR1A/B) dan Input
Capture Register (ICR1) semuanya adalah register 16-bit. Special procedure
harus diikuti untuk mengakses register 16-bit. Timer/Counter Control
Registers (TCCR1A/B) adalah register 8-bit dan tidak memiliki akses ke CPU.
Sinyal Interrupt requests (dalam gambar disingkat menjadi Int.Req.) dapat
dilihat pada Timer Interrupt Flag Register (TIFR). Semua interrupts dimasker
secara individual dengan Timer Interrupt Mask Register (TIMSK). TIFR and
TIMSK tidak ditunjukkan dalam gambar dan juga dipergunakan oleh timer
yang lain. The Timer/Counter dapat di-clock menggunakan clock internal,
melalui prescaler, atau dapat juga di-clock dari sumber eksternal melalui pin
T1. Block Clock Select logic mengatur sumber dan edge clock. the
Timer/Counter menggunakan pulsa clock ini untuk meng-inc rement (atau
decrement) nilai counter. Timer/Counter tidak aktif apabila tidak ada sumber
clock yang dipilih. Keluaran dari Clock Select logic adalah sesuai dengan timer
clock (clkT1).

Setiap saat nilai Double buffered Output Co mpare Register (OCR1A/B)


dibandingkan dengan nilai Timer/Counter. Hasil perbandingan dapat
dipergunakan oleh Waveform Generator untuk menggenerate keluaran PWM
atau variable frequency pada pin Output Compare (OC1A/B). The Compare
Match event juga men-set Compare Flag (OCF1A/B) yang juga dapat dipakai
untuk menggenerateoutput compare interrupt request.

TCNT1, OCR1A/B dan ICR1 adalah register 16-bit yang dapat diakses oleh CPU
AVR 8 bit melalui data bus. Register 16-bit diakses menggunakan dua operasi
baca atau tulis. Setiap timer 16 bit memiliki register 8 bit temporer untuk
menyimpan data sementara untuk menyimpan byte tinggi dan byte rendah.
Ketika byte low sedang ditulisi oleh CPU, maka by te tinggi disimpan pada
register temporer dan ke tika by te low sedang ditulisi oleh CPU maka keduanya
di-kopi ke register 16 bit. Ketika byte low sedang dibaca oleh CPU, maka byte
tinggi di-kopi ke register temporary pada saat clock yang bersamaan. Tidak
semua register 16 bit menggunakan register temporer untuk byte tinggi dan
rendah. Memmbaca regigter 16 bit OCR1A/B tidak menggunakan register
temporer. Untuk menulisi register 16 bit, by te tinggi harus ditulis dulu sebelum
menulis byte rendah. Untuk membaca register 16 bit, by te rendah harus dibaca
dulu sebeum membaca byte tinggi.

Contoh berikut diperlihatkan bagaimana mengakses register 16 bit dengan


asumsi tidak ada interrupt yang meng-update register temporer. Dengan
prinsip yang sama dapat pula mengakses register OCR1A/B dan ICR1.

Third |Semester
Modul Mikrokontroler ATmega8535
32

Program di atas mengembalikan nilai TCNT1 ke register pasangan r17 dan r16.
Untuk menghindari masalah terjadinya dengan interrupt, maka selama
mengakses register 16 bit, interrupt harus dimatikan terlebih dahulu.

Program berikut ini contoh menulisi register TCNT1.

Pemakaian Timer/Counter1 dapat digunakan sebagai tunda waktu (delay),


pada contoh dibawah ini bahwa kristal yang dipergunakan modul
mikrokontroller adalah 12 MHz. Dengan kristal sebesar ini, maka satu detik
sama dengan 12.000.000 pulsa clock. Berikut i ni algoritma membuat tunda
waktu 1 detik.

1. Mengaktifkan interrupt TOIE1 dengan cara men-set bit2 TOIE1:


Timer/Counter1, Overflow Interrupt Enable pada register Timer/Counter
Interrupt Mask TIMSK

Third |Semester
Modul Mikrokontroler ATmega8535
33

Jika bit ini diberi logika 1, maka Timer/Counter1 overflow interrupt di -


enable-kan dan I-flag di Status Register akan di-set 1 (interrupts globally
enabled)

2. Menentukan nilai pembagi prescaler dengan men-set register


Timer/Counter1 Control Register B TCCR1B

Bit ke 0 sampai bit ke 2 [CS12,CS11,CS10] digunakan untuk memilih


sumber clock yang akan digunakan Timer/Counter, dengan keterangan
sebagai berikut :

Dengan memilih sumber clock, dihitung nilai yang paling baik dengan
selisih yang paling kecil. Apabila dihitung secara manual akan
diperoleh hasil perbandingan sebagai berikut :

Dari table hasil pembagian di atas tampak bahwa sumber clock yang
dapat dipakai adalah sumber clock dengan prescaler pembagi 256 dan
1024. Tetapi karena pre scaler 256 menghasilkan angka bulat tanpa
nilai lebih dibelakang koma, maka sumber clock ini akan menghasilkan
timer yang tepat pula. Oleh karena itu dipilihlah nilai prescaler ini
dengan hasil pembagian 46.875

Third |Semester
Modul Mikrokontroler ATmega8535
34
3. Berikutnya menghitung nilai yang akan dimasukkan ke register
Timer/Counter1 TCNT1H dan TCNT1L

Karena Timer menghitung naik dan over flow jika melewati nilai $FFFF
ke $0000, maka register TCNT1 diisi dengan nilai minus - 46.875 atau
dalam bilangan heksa $48E5. Nilai byte tinggi 48 inilah yang nantinya
dimasukkan ke register TCNT1H dan Nilai byte rendah E5 dimasukkan ke
register TCNT1L
Untuk mendapatkan nilai-nilai tersebut dalam algoritma langkah 2 dan 3,
lebih mudah dilakukan dengan menggunakan kalkulator yang disertakan
dalam CD dengan tampilan sebagai berikut :

Gambar 3.10 Kalkulator AVR

4. Flag overflow dapat dilihat pada bit TOV1 pada register TIFR. Apabila
bit TOV berlogika 1, maka timer/counter sudah overflow dan program
bagian (sub routine) tunda waktu selesai dan kembali ke program utama.
Sebelum keluar sub routine bit TOV harus dienolkan dulu dengan
memberikan logika satu.

Third |Semester
Modul Mikrokontroler ATmega8535
35
TOV1 otomatis di-clear ketika Timer/Counter1 Overflow Interrupt Vector
diekesekusi. Alternatif lain TOV1 juga dapat di-clear dengan memberikan
logika 1 pada lokasi bit tersebut,

Berikut ini contoh program bagian dalam bahasa assembly untuk tunda waktu
1 detik

Time r/Counter2 8-bit

imer/Counter (TCNT2) dan Output Compare Register (OCR2) masing-masing


adalah registers 8-bit. Sinyal Interrupt request (dalam gambar di atas disingkat
Int.Req) dapat dilihat pada Timer Interrupt Flag Register (TIFR). Semua interrupt
dimasker secara individual pada register Timer Interrupt Mask (TIMSK). TIFR
dan TIMSK tidak diperlihatkan pada gambar di atas , register tersebut juga
dipergunakan untuk unit timer yang lain. Timer/Counter dapat di -clock
mengguanakn internal clock melalui prescaler atau menggunakan clock
eksternal asinkron melalui pin TOSC1/2. Opersi asinkron dikontrol oleh
Asynchronous Status Register (ASSR). Clock Select logic block digunakan untuk
mengatur sumber clock Timer/Counter. Jika tidak ada sumber clock, maka
timer/counter akan berhenti. Keluaran Clock Select logic adalah timer clock
(clkT2).

Third |Semester
Modul Mikrokontroler ATmega8535
36

Gambar 3.11 Diagram Block Timer/Counter2 8 bi t

3.2.2.5 Serial Peripheral Interface SPI

Gambar 3.12 SPI Master-Slave Interconnection

Dengan adanya Serial Peripheral Interface SPI memungkinkan transfer


sinkron data kecepatan tinggi antara Atmega8535 dengan peralatan lain.

Third |Semester
Modul Mikrokontroler ATmega8535
37
Hubungan interkoneksi antara Master dan Slave ditunjukkan pada gambar di
atas. Sistem terdiri dari dua register geser dan generator clock master. Untuk
menentukan perangkat mana sebagai Master atau Slave, ditentukan dengan
men-set pin Slave Select ( ). Jika pin mendapat logika rendah, maka
konfigurasi SPI adalah sebagai slave. Maste r harus berinisiatif memulai
komunikasi ke Slave.

Master dan slave mempersiapakan data yang akan dikirim ke register geser.
Master menggenerasi sinyal clock (SCK) untuk menggesesr data. Data selalu
bergeser dari Master ke Slave pada pin Master Out Slave In (MOSI) dan dari
Slave ke Master pada pin Master In Slave Out (MISO). Setelah setiap paket
terkirim, Master akan mensinkronisasi Slave dengan mem-pulling high Slave
Select ( ).

Ketika dikonfigurasi sebagai Master, Interface SPI tidak secara otomatis jalur
( ) ini. Pemakai harus mengatur logika pin ini dengan dengan software
sebelum komunikasi dapat dimulai. Ketika hal tersebut sudah dilakukan, tulis
data ke SPI Data Register dan berikan pulsa clock, maka hardware akan
menggeser delapan bit data ke Slave. Setelah menggeser satu byte, SPI clock
generator akan stop, dan menyeting End of ransmission Flag (SPIF). Jika SPI
Interrupt Enable bit (SPIE) dalam Register SPCR sama dengan 1, maka suatu
interrupt akan di-request. Master dapat melanjutkan pengiriman data
berikutnya dengan menulisi register SPDR, atau sinyal tanda akhir paket
dengan mem-pulling high pin Slave Select ( ). Byte yang dating terakhir akan
disimpan dalam register buffe r untuk penggunaan selanjutnya.

Ketika dikonfigurasi sebagai Slave, Interface SPI akan beristirahat bersama


MISO tri-state selama pin berlogika tinggi. Dalam kondisi ini, software
dapat meng-update isi register SPI Data Register (SPDR), tetapi data tidak akan
digeser keluar oleh pulsa clock yag datang pad a pin SCK sampai pin diberi
logika rendah. Setelah satu byte data selesai digeser, End of Transmission Flag,
SPIF akan di-set 1. Jika bit SPI Interrupt Enable, SPIE dalam register SPCR di set
1, maka suatu interrupt akan di-request. Slave dapat melanjutkan
menempatkan data baru yang akan dikirim ke register SPDR sebelum
membaca data yang masuk. Byte data yang masuk terakhir akan disimpan ke
dalam register buffer untuk penggunaan selanjutnya.

Sistem SPI ini menggunakan satu buah buffer untuk arah kirim dan dua buah
buffer untuk arah terima. Artinya bahwa byte yang akan dikirim tidak dapat
dimasukkan ke register data SPI sebelum siklus geser selesai. Ketika menerima
data. Bagaimanapun juga sebuah karakter harus dibaca dari register data SPI
sebelum karakter berikutnya selesai digeser, kalau tidak kehilangan byte
pertama. Dalam mode SPI Slave, control ligic akan mengambil sample sinyal
dari pin SCK. Untuk meyakinkan sampling yang benar dari sinyal clock, minimal
dan maksimal perioda harus sebagai berikut :

Third |Semester
Modul Mikrokontroler ATmega8535
38
Periode rendah = lebih panjang dari 2 siklus clock CPU

Periode tinggi = lebih panjang dari 2 siklus clock CPU

Ketika SPI di-enable-kan, arah data pin MOSI, MISO, SCK dan disesuaikan
dengan tabel berikut :

Contoh berikut memeprlihatkan bagaimana menginisialisasi SPI sebagai


Master dan bagaimana mengirimkan data. DDR_SPI pada contoh ini harus
diganti dengan Data Direction Register yang mengontrol pin SPI yang
sesungguhnya. DD_MOSI, DD_MISO dan DD_SCK harus diganti dengan bit arah
data yang sesungguhnya dari pin tersebut. Sebagai contoh, jika MOSI berada
pada pin PB5, maka gantilah DD_MOSI dengan DDB5 dan DDR_SPI dengan
DDRB.

Third |Semester
Modul Mikrokontroler ATmega8535
39
3.2.2.6 The Universal Synchronous and Asynchronous serial Receiver and
Transmitter (USART)

Gambar 3.13 USART Block Diagram

Berikut ini contoh program mengakses USART

Third |Semester
Modul Mikrokontroler ATmega8535
40

Third |Semester
Modul Mikrokontroler ATmega8535
41
3.3 Rangkuman

Mikrokontroller Atmega8535 adalah mikrokontroller AVR 8 bit buatan ATMEL


yang memiliki arsitektur RISC (Reduce Instruc tion Set Computing). Instruksi
dikemas dalam kode 16 bit dan dijalankan hanya dengan satu siklus clock.

Fitur Mikrokontroller Atmega8535 adalah

1. High-performance, Low-power AVR 8-bit Microcontroller


2. Nonvolatile Program and Data Memories
3. Peripheral Features
Two 8-bit Timer/Counters with Separate Prescalers and Compare
Modes
One 16-bit Timer/Counter with Separate Prescaler, Compare Mode,
and Capture Mode
Real Time Counter with Separate Oscillator
Four PWM Channels
8-channel, 10-bit ADC
Byte-oriented Two-wire Serial Interface
Master/Slave SPI Serial Interface
Programmable Watchdog Timer with Separate On-chip Oscillator
On-chip Analog Comparator
4. I/O and Packages
32 Programmable I/O Lines
40-pin PDIP, 44-lead TQFP, 44-lead PLCC, and 44-pad QFN/MLF
5. Operating Voltages
2.7 - 5.5V for ATmega8535L
4.5 - 5.5V for ATmega8535
6. Speed Grades
0 - 8 MHz for ATmega8535L
0 - 16 MHz for ATmega8535

Third |Semester
Modul Mikrokontroler ATmega8535
42
3.4 Latihan

Dengan menggunakan software Eagle atau Protel, gambarlah rangkaian dan


layout PCB modul mikrokontroller Atmega8535 seperti gambar berikut.

Gambar 3.14 Rangkaian Modul Mikrokontroller Atmega8535

Gambar 3.15 Desaign PCB Modul Mikrokontroller Atmega8535

3.5 Tugas

Dari gambar layout PCB mod ul mikrokontroller yang dibuat pada latihan di
atas, kerjakanlah pembuatan PCB tersebut dan solderilah komponen yang
diperlukan sehingga menjadi modul mikrokontroller yang nantinya akan
dipakai pada modul pembelajaran ini.

Third |Semester
Modul Mikrokontroler ATmega8535
43
4. BASCOM AVR

4.1 Tujuan Kegiatan Pembelajaran

Setelah mengikuti kegiatan pembelajaran pada pokok bahasan ini, diharapkan


peserta didik dapat memiliki kemampuan membuat program, mensimulasikan
dan mempogram mikrokontroller ATmega8535 menggunakan software
Bascom-AVR

4.2 Uraian Materi

4.2.1 Membuat Program Mikrokontroller

Siapkan modul mikrokontroller dan sambungkan kabel LPT antara


mikrokontroller dengan komputer.

Gambar 4.1 Sambungan kabel LPT antara modul mikrokontroller dengan


komputer

Jalankan program BASCOM AVR, tunggu sampai munc ul jendela utama


BASCOM-AVR.

Pilih Menu File New atau tekan toolbar Open new edit window

Third |Semester
Modul Mikrokontroler ATmega8535
44
Pada jendela editor, ketiklah program mikrokontroller yang akan dibuat. Di
bawah ini contoh program input output membaca deretan saklar pada Pinc dan
menampilkannya pada Portb.

Gambar 4.2 Jendela Editor BASCOM-AVR

Simpan file tersebut dalam satu folder tersendiri karena setiap project setelah
di-compile akan menghasilkan banyak file.

Untuk menyimpan file, pilih menu File Save atau tekan toolbar Save File

Kemudian compile file tersebut dengan memilih menu Program File atau
tekan toolbar Co mpile current file(F7)

Third |Semester
Modul Mikrokontroler ATmega8535
45
Tunggu sampai proses compiling selesai.

Gambar 4.3 Jendela Proses Compiling

Apabila terdapat kesalahan, maka di bawah jendela editor akan munc ul


informasi kesalahan seperti contoh berikut

Gambar 4.4 Jendela informasi kesalahan

Tampak pada contoh di atas munc ul pesan keslahan Error 124 pada baris 12
bahwa tidak ada instruksi LOOP. Untuk memperbaiki kesalahan yang dimaksud,
lompat ke baris yang salah dengan cara double click pada teks informasi
keslahan tersebut.

4.2.2 Mensimulasikan Program Mikrokontroller

Jika tidak ada kesalahan, maka pesan kesalahan tidak muncul dan program
dapat disimulasikan dengan cara pilih menu Program Simulate atu tekan
toolbar Simulate program(F2)

Third |Semester
Modul Mikrokontroler ATmega8535
46

Selanjutnya akan munc ul jendela AVR Simulasi seperti berikut

Gambar 4.5 Jendela AVR Simulasi

Aktifkan toolbar Show hardware emulation kemudian akan munc ul Jendela


Hardware Simation seperti gambar 4.2.2.2

Third |Semester
Modul Mikrokontroler ATmega8535
47

Gambar 4.6 Jendela Hardware Simulasi

Aktifkan toolbar Refresh variables agar tampilan jendela hardware simulasi


selalu fresh sesuai kondisi actual

Berikutnya jalankan program simulasi dengan menekan toolbar Run


program(F5)

Click pada tampilan LED warna hijau IC maka tampilan LED warna merah pada
PB akan menyala sesuai masukan pada PinC.

Third |Semester
Modul Mikrokontroler ATmega8535
48

Gambar 4.7 Jendela AVR Simulasi dan Hardware Simulasi keduanya aktif

4.2.3 Memprogram Mikrokontro ller

Pilih jenis programmer melalui port paralel LPT d engan cara pilih menu
OptionProgrammer, selanjutnya pilih TabStrib Programmer dan pada
ComboBox Programmer pilih STK200/STK300 Programmer, kemudian tekan
tombol OK seperti pada gambar berikut

Gambar 4.8 Jendela BASCOM-AVR Option

Third |Semester
Modul Mikrokontroler ATmega8535
49
Selanjutnya pilih menu Program Send to chip atau tekan toolbar Run
programmer (F4) dan pilih menu Program

Apabila board modul mikrokontroller tidak aktif, maka akan munc ul jendela
pesan sebagai berikut

Gambar 4.9 Kotak pesan

Jika board modul mikrokontroller tidak ada masalah, maka selanjutnya akan
munc ul jendela AVR ISP STK Programmer sebagai berikut

Gambar 4.10 Jendela AVR ISP STK Programmer

Third |Semester
Modul Mikrokontroler ATmega8535
50
Pada combobox Chip, pilih Atmega8535, tekan toolbar Load file into buffer
dan pilih file hex yang akan di-download ke chip mikrokontroller

Untuk men-download program , tekan toolbar Write buffer to flash ROM

Tunggu sampai proses programming selesai

ambar 4.11Jendela BASCOM-AVR Programming status

Setelah itu lepas kabel LPT dan mikrokontroller langsung menjalankan program
yang telah di-download

4.3 Rangkuman

Software BASCOM-AVR dapat dipergunakan untuk membuat program dengan


bahasa tingkat tinggi BASIC. Program yang sudah ditulis dapat di-compile
dapat disimulasikan pada computer. Hasil compiling program berupa file hexa
yang nantinya didownloadkan ke chip mikrokontroller.

4.4 Latihan

Salinlah program dibawah ini pada editor BASCOM-AVR, kemudian simulasikan


dan downloadkanlah ke dalam chip mic rocontroller.

Third |Semester
Modul Mikrokontroler ATmega8535
51

Gambar 4.12 Program kedip pada jendela editor BASCOM-AVR

4.5 Tugas

Berikut ini adalah program membaca data analog ADC input kanal 0 dan
ditampilkan ke LCD dua baris 16 kolom. Salinlah program tersebut dan
simulasikan pada BASCOM-AVR. Aturlah slider mulai pada posisi minimal paling
bawah sampai pada posisi paling atas. Berapa penunjukan LCD ketika slider
pada posisi minimal dan maksimal ?

Third |Semester
Modul Mikrokontroler ATmega8535
52

Third |Semester
Modul Mikrokontroler ATmega8535
53
5. PEMROGRAMAN MIKROKONTROLLER ATMEGA8535

5.1 Tujuan Kegiatan Pembelajaran

Setelah mengikuti kegiatan pembelajaran pada pokok bahasan ini, diharapkan


peserta didik dapat Memprogram Sistem Mikrokontroller ATmega8535

5.1 Uraian Materi

5.2.1 Input Output Digital

Gambar 5.1 Rangkaian Modul Digital Input Output Test

Gambar 5.2 Modul Percobaan Input Output Digital

Third |Semester
Modul Mikrokontroler ATmega8535
54

5.2.2 Deretan LED

Gambar 5.3 Modul Percobaan Deretan LED

Third |Semester
Modul Mikrokontroler ATmega8535
55

Third |Semester
Modul Mikrokontroler ATmega8535
56
5.2.3 Lampu Lalu Lintas

Gambar 5.4 Rangkaian Modul Lampu Lalu Lintas

ambar 5.5 Penempatan LED pada Modul Lampu Lalu Lintas

Third |Semester
Modul Mikrokontroler ATmega8535
57

Gambar 5.6 Modul Percobaan Lampu Lalu Lintas

Tabel kebenaran :

Third |Semester
Modul Mikrokontroler ATmega8535
58
5.2.4 Stepping Motor

Gambar 5.7 Rangkaian Modul Motor Stepper

Gambar 5.8 Modul Percobaan Motor Stepper

Tabel kebenaran :

Third |Semester
Modul Mikrokontroler ATmega8535
59

5.2.5 Seven Segment Display

Gambar 5.9 Rangkaian Modul Seven Segment

Third |Semester
Modul Mikrokontroler ATmega8535
60

Gambar 5.10 Modul Percobaan Seven Segment

5.2.6 Analog To Digital Convertion (ADC)

Gambar 5.11 Rangkaian Modul Analog Input Test

Third |Semester
Modul Mikrokontroler ATmega8535
61

Gambar 5.12 Modul Percobaan Analog Input Test

Third |Semester
Modul Mikrokontroler ATmega8535
62
5.2.7 Liquid Crystal Display (LCD)

Gambar 5.13 Rangkaian Modul LCD

Gambar 5.14 Modul Percobaan LCD

Third |Semester
Modul Mikrokontroler ATmega8535
63

Third |Semester
Modul Mikrokontroler ATmega8535
64

5.2.8 Real Time Clock (RTC)

Gambar 5.15 Rangkaian Modul RTC

Third |Semester
Modul Mikrokontroler ATmega8535
65

Gambar 5.16 Modul Percobaan RTC

Third |Semester
Modul Mikrokontroler ATmega8535
66

Third |Semester
Modul Mikrokontroler ATmega8535
67

Third |Semester
Modul Mikrokontroler ATmega8535
68

Third |Semester
Modul Mikrokontroler ATmega8535
69

Third |Semester
Modul Mikrokontroler ATmega8535
70

5.2.9 The Universal Synchronous and Asynchronous Serial Receiver and


Transmitter (USART)

5.2.9.1 Komunikasi Data Serial antara PC dengan Mikrokontrolle r


Menggunakan USART

Gambar 5.17 Sistem komunikasi data serial antara PC dengan mikrokontroller


menggunakan USART

Gambar 5.18 Percobaan Sistem komunikasi data serial antara PC dengan


mikrokontroller menggunakan USART

Third |Semester
Modul Mikrokontroler ATmega8535
71

5.2.9.2 Komunikasi Data Serial antara Dua Mikrokontroller Menggunakan


USART

Gambar 5.19 Sistem komunikasi data serial antara dua mikrokontroller


menggunakan USART

Third |Semester
Modul Mikrokontroler ATmega8535
72

Gambar 5.20 Percobaan Sistem komunikasi data serial antara dua


mikrokontroller menggunakan USART

Hardware : Modul Digital Input Output Test pada PORTB/C


Sambungkan kabel RS232 crossing antar kedua
mikrokontroller

Fungsi : Data deretan saklar mikrokontroller 1 ditampilkan pada


deretan LED mikrokontroller 2
Data deretan saklar mikrokontroller 2 ditampilkan pada
deretan LED mikrokontroller 1

Mikrokontroller 2 harus dihidupkan terlebih dahulu, baru kemudian hidupkan


mikrokontroller 1 agar tidak saling menunggu (Waitkey)
Third |Semester
Modul Mikrokontroler ATmega8535
73
5.2.10 Serial Peripheral Interface (SPI)

Gambar 5.21 Rangkaian Output Digital Menggunakan SPI

Gambar 5.22 Percobaan Output Digital Menggunakan SPI

Third |Semester
Modul Mikrokontroler ATmega8535
74

5.2.11 Digital to Analog Conversion (DAC)

Gambar 5.23 Rangkaian Modul DAC 2 kanal melalui SPI

Gambar 5.24 Percobaan Modul DAC 2 kanal melalui SPI

Third |Semester
Modul Mikrokontroler ATmega8535
75

Third |Semester
Modul Mikrokontroler ATmega8535
76

5.2.12 Pulse Wide Modulation (PWM)

Gambar 5.25 Rangkaian PWM dengan beban lampu

Gambar 5.26 Percobaan PWM

Third |Semester
Modul Mikrokontroler ATmega8535
77

5.2.13 LED Matriks

Gambar 5.27 Rangkaian LED Matriks

Third |Semester
Modul Mikrokontroler ATmega8535
78

Third |Semester
Modul Mikrokontroler ATmega8535
79

Third |Semester
Modul Mikrokontroler ATmega8535
80

Third |Semester
Modul Mikrokontroler ATmega8535
81

Third |Semester
Modul Mikrokontroler ATmega8535
82

5.2.14 Keypad

Gambar 5.28 Rangkaian Keypad

Third |Semester
Modul Mikrokontroler ATmega8535
83

Gambar 5.29 Percobaan 1 Modul Keypad

Third |Semester
Modul Mikrokontroler ATmega8535
84

Gambar 5.30 Percobaan 2 Modul Keypad LCD

Third |Semester
Modul Mikrokontroler ATmega8535
85

Third |Semester
Modul Mikrokontroler ATmega8535
86

5.2.15 Printer

Gambar 5.31 Sambungan Mikrokontroller ke Printer

Third |Semester
Modul Mikrokontroler ATmega8535
87

Gambar 5.32 Percobaan Mencetak Data ke Printer

Third |Semester
Modul Mikrokontroler ATmega8535
88

Third |Semester
Modul Mikrokontroler ATmega8535
89

Third |Semester
Modul Mikrokontroler ATmega8535
90

5.3 Rangkuman

1. Sebelum mengakses port digital, harus dilakukan inisialisasi yaitu


menentukan arah data sebagai masukan atau keluaran dengan instruksi
config

2. Untuk program penyalaan LED diperlukan tunda waktu yaitu Waitms

Third |Semester
Modul Mikrokontroler ATmega8535
91

3. Penyalaan Seven Segment Display menggunakan sistem sacnning, yaitu


menyalakan setiap modul dalam waktu tertentu bergantian sehingga
seolah-olah menyala serentak bersamaan. Untuk itu diperlukan
penentuan tunda waktu yang tepat

4. Untuk membaca data analog harus melakukan inisialisasi ADC sebagai


berikut :

5. ntuk menulis LCD harus melakukan inisialisasi pin LCD sebagai berikut :

6. Real Time Clock (RTC) memiliki data informasi kalender yang tersedia
dalam alamat tertentu. Data kalender dapat dibaca dan ditulisi.

7. Komunikasi data serial dapat melalui USART menggunakan pin Tx dan Rx


serta GND

8. Komunikasi data serial dapat melalui SPI menggunakan pin SS, MOSI,
MISO, dan CLK serta GND

9. Mikrokontroller Atmega8535 tidak memiliki DAC internal.

10. Mikrokontroller Atmega8535 memiliki PWM internal

Third |Semester
Modul Mikrokontroler ATmega8535
92
5.4 Latihan

Siapkan peralatan yang diperlukan pada setiap topik di atas. Salinlah listing
program pada software editor BASCOM-AVR Compile dan download program
tersebut pada modul mikrokontroller. Jalankan program tersebut. Lakukan
semua langkah diatas untuk masing masing percobaan. Selanjutnya kerjakan
soal latihan membuat program sesuai topik di bawah ini :

1 Topik : Input Output Digital


Hardware : Modul Digital I/O Test pada PORTD/A Input deretan
saklar pada PORTA Output deretan LED pada PORTD
Fungsi : Counter Up/Down biner ditampilkan pada deretan
LED PORTD dengan tunda waktu 100ms sesuai
tabel kebenaran berikut ini
Tabel kebenaran

2 Topik : Deretan LED


Hardware : Modul Digital I/O Test pada PORTD/A
Fungsi : Led berjalan bolak balik kiri kanan dengan tunda
waktu 100ms

3 Topik : Lampu Lalu Lintas


Hardware : Modul Lalin pada PORTD/A
Fungsi : Kontrol lampu lalu lintas dengan mengulang-ulang
data penyalaan sesuai tabel kebenaran 1 selama 10
kali dilanjutkan dengan penyalaan sesuai tabel
kebenaran 2 sebanyak 20 kali.

Tabel kebenaran 1

Third |Semester
Modul Mikrokontroler ATmega8535
93
Tabel kebenaran 2

4 Topik : Stepping Motor


Hardware : Modul Motor Stepper pada PORTB
Fungsi : Memutar motor stepper clock wise 5 kali putaran
dan contra clock wise 3 kali putaran setelah itu
berhenti. Tunda waktu 10 ms

5 Topik : Seven Segment Display


Hardware : Modul Seven Segment pada PORTB/PORTC
Fungsi : Counter up 6 digit dengan input dari tombol pada
PinC.0 Untuk mereset, tekan tombol PinC.1

6 Topik : Analog To Digital Convertion (ADC)


Hardware : Modul Analog Input Test pada PORTA/PORTB , Modul
Digital Input Output Test pada PORTB/PORTC
Fungsi : Tegangan pada ADC0 ditampilkan pada deretan LED
PORTB dengan cara balok seperti pada tabel
kebenaran berikut

Tabel kebenaran

7 Topik : Liquid Crystal Display (LCD)


Hardware : Modul Analog Input Test pada PORTA , Modul LCD
pada PORTB
Membaca tegangan analog ADC0 0 s.d. 5.0 Volt
ditampilkan pada LCD baris pertama sebagai 0.0
Third |Semester
Modul Mikrokontroler ATmega8535
94
s.d. 150.0 C Membaca tegangan analog ADC1 0 s.d.
5.0 Volt ditampilkan pada LCD baris pertama
sebagai 0 s.d. 100 %

8 Topik : Real Time Clock (RTC)


Hardware : Modul RTC PORTA/D, Modul LCD pada PORTB
Fungsi : Membaca data RTC dan ditampilkan pada LCD Baris
pertama menampilkan Hari, Tanggal, B ulan dan
Tahun Baris kedua menampilkan Jam, Menit dan
Detik

9 Topik : The Universal Synchronous and Asynchronous Serial


Receiver and Transmitter (USART)
Hardware : Dua modul mikrokontroller, modul Analog Input
pada PORTA, modul mikrokontroller 1 Modul LCD
pada PORTB, modul mikrokontroller 2
Fungsi : Membaca data tegangan ADC0 mikrokontroller 1
dan ditampilkan pada LCD mikrokontroller 2

10 Topik : Serial Peripheral Interface (SPI)


Hardware : Dua modul mikrokontroller, Modul Digital I/O pada
PORTA, modul mikrokontroller 1 dan 2
Fungsi : Data deretan saklar mikrokontroller ditampilkan
pada deretan LED mikrokontroller 2 Data deretan
saklar mikrokontroller 2 ditampilkan pada deretan
LED mikrokontroller 1

Gambar 5.33 Sistem komunikasi data serial antara dua mikrokontroller


menggunakan SPI

11 Topik : Digital to Analog Conversion (DAC)


Hardware : Modul Analog Input Test pada PORTA, Modul DAC 2
Kanal SPI pada PORTB
Fungsi : DAC1 = ADC0 ADC1

Third |Semester
Modul Mikrokontroler ATmega8535
95
12 Topik : Pulse Wide Modulation (PWM)
Hardware : Modul Digital I/O Test pada PORTB/C
Fungsi : Membaca data dari PC berupa angka 0 s.d. 255 Data
tersebut dipergunakan untuk mengatur duty cycle
PWM yang di keluarkan pada OC0. Terang redupnya
nyala LED diatur dari PC melalui RS232

13 Topik : LED Matriks


Hardware : Modul LED Matriks pada PORTB/C
Fungsi : Counter Up 0 s.d. 9 setiap 500ms

14 Topik : Keypad
Hardware : Modul LCD Keypad pada PORTB/C, Modul Motor
Stepper pada PORTD
Fungsi : Motor stepper berputar clock wise dengan jumlah
putaran ditentukan dengan angka yang ditekan
pada keypad 0 s.d. 9

Third |Semester
Modul Mikrokontroler ATmega8535
96
6. PENUTUP

Setelah menyelesaikan modul ini dan mengerjakan semua latihan dan tugas
pada setiap pokok bahasan maka peserta diklat dapat dinyatakan telah
memiliki kompetensi Memprogram Peralatan Sistem Otomasi Elektronik yang
Berkaitan I/O berbantuan Mikrokontroller ATmega 8535. Dengan demikian
peserta dapat melanjutkan pada modul berikutnya sesuai peta alur kedudukan
modul.

Third |Semester
Modul Mikrokontroler ATmega8535
97
DAFTAR PUSTAKA

1. Datasheet, 8-bit AVR Micrcontroller with 8K Bytes In-System


Programmable Flash Atmega8535 Atmega8535L, Atmel Corporation,
San Jose USA, 2006
2. Datasheet, 8-bit AVR Instruction Set, Atmel Corporation, San Jose USA,
2005
3. BASCOM-AVR Help Reference Version 1.11.8.3 document build 8, MCS
Electronics, 2006
4. Rinaldi Munir, Algoritma dan Pemrograman, Penerbit Informatika,
Bandung, 2000
5. Guru Mikro Saya, Bandung, 1986

Third |Semester