• Tidak ada hasil yang ditemukan

Tutorial Pemrograman Mikrokontroler AVR_v1.0

N/A
N/A
Protected

Academic year: 2021

Membagikan "Tutorial Pemrograman Mikrokontroler AVR_v1.0"

Copied!
91
0
0

Teks penuh

(1)

FREE e-book v1

FREE e-book v1 ..0

0

T

Tutorial Pemrograman M

utorial Pemrograman M ikrokontroler AVR 

ikrokontroler AVR 

deng

dengan WinAVR GCC (

an WinAVR GCC (AT

ATMega16/

Mega16/ 32/

32/ 8535)

8535)

http://klikdisini.com/embedded

http://klikdisini.com/embedded

oleh

oleh

Agfianto Eko Putr

Agfianto Eko Putr a

a ((agfi68@gmail.com

agfi68@gmail.com

))

dan

dan Dhani Nugraha

Dhani Nugraha ((dhan_t46@yahoo.com

dhan_t46@yahoo.com

))

Dapatkan ebook ini gratis di

Dapatkan ebook ini gratis di http://klikdisini.com/embedded

http://klikdisini.com/embedded

FREE EBOOK!!

FREE EBOOK!!

Jika Anda

Jika Anda merasa ebook ini bermanfaat silahkan mendistribusikan ebook ini dengan

merasa ebook ini bermanfaat silahkan mendistribusikan ebook ini dengan

GRATIS di website Anda atau dimana saja, selama tidak

GRATIS di website Anda atau dimana saja, selama tidak merubah isi yang ada di e

merubah isi yang ada di e-book 

-book 

ini. Terima kasih…

(2)

T

Tutorial Pemrograman M

utorial Pemrograman M ikrokontroler AVR dengan

ikrokontroler AVR dengan

W

W inAVR

inAVR GCC

GCC (A

(AT

TMega16/

Mega16/ 32/

32/ 8535)

8535)

Disusun oleh:

Disusun oleh:

Agfianto Eko P

Agfianto Eko P utra –

utra – agfi68@gmail.com

agfi68@gmail.com

dan

dan

Dhani Nugraha

-Dhani Nugraha - dhan_t46@yahoo.com

dhan_t46@yahoo.com

Daftar Isi

Daftar Isi

1.

1. ApaApakah kah MikrokonMikrokontroletroler ir itu? tu? ... .... 33 2.

2. PenPengetahgetahuan uan Dasar Dasar MikrokMikrokontrolontroler Aer AVR VR ... ... 66 2.1.

2.1. PenPendahudahuluan luan ... .... 66 2.2.

2.2. MemilMemilih Aih AVR VR “yan“yang bg benarenar” ” ... ... 77 2.3.

2.3. Ada Ada apa deapa dengan ngan MikrokMikrokontrolontroler AVR er AVR ATMegATMega16? a16? ... ... 88 2.3.1

2.3.1.. RinRingkasan gkasan Fitur-fFitur-fitur Miitur Mikrokonkrokontroler troler AVR AAVR ATMegaTMega16 16 ... ... 88 2.3.2

2.3.2.. DiagDiagram Pin daram Pin dan Din Diagram agram Blok MikBlok Mikrokonrokontroler Atroler AVR AVR ATMegTMega16 a16 ... ... 99 2.3.3

2.3.3.. PenjPenjelasan elasan SingSingkat Pinkat Pin-pin pa-pin pada Mikrokda Mikrokontrolontroler AVR Aer AVR ATMegTMega16 a16 ... ... 1010 3.

3. PenPengenagenalan Blan Bahasahasa C untua C untuk Mik Mikrokonkrokontroler troler AVR AVR ... .. 1313 3.1.

3.1. StrukStruktur Petur Penulinulisan Bsan Bahasa ahasa C C ... ... 1313 3.2.

3.2. TipeTipe-tipe -tipe data daldata dalam Baham Bahasa asa C C ... ... 1414 3.3.

3.3. DeklDeklarasi arasi VariabVariabel dan el dan KonsKonstanta tanta ... .. 1414 3.4.

3.4. PernyPernyataan ataan ... .... 1414 3.5.

3.5. FunFungsi gsi ... ... 1414 3.6.

3.6. PernyPernyataan ataan berberkondikondisi si dan dan PengPengulanulangan...gan... ... 1414 3.7.

3.7. OperasOperasi i LogiLogika daka dan Biln Bilangan angan BineBiner ...r ... ... 1515 3.8.

3.8. OperasOperasi i AritmeAritmetika...tika... .. 1616 3.

3.9.9. PePengngululanangagan Tn Tererusus-m-menenererus aus atatauu Infinite Looping Infinite Looping... ... 1616 4.

4. MenMenggunggunakan akan AVR AVR StudiStudio deno dengan Wigan WinAVR nAVR GCC GCC ... ... 1717 5.

5. MasMasukanukan/Luara/Luaran (I/O) n (I/O) pada pada MiMikrokonkrokontroletroler AVR r AVR ... .. 2222 5.1.

5.1. RegiRegister ster DDRx DDRx ... ... 2323 5

5..22.. RRegegiissteter r PPOORRTxTx... ... 2323 5.3.

5.3. RegiRegister ster PINx PINx ... ... 2424 6.

6. LatihLatihan an TahTahap-I ap-I ... .. 2525 6.1.

6.1. PercobPercobaanaan-1: L-1: LED bED berkeerkedip-kedip-kedip dip ... .. 2525 6.2.

6.2. PercobPercobaanaan-2: Mem-2: Membunyibunyikan kan buzzbuzzer! er! ... ... 2626 6.

6.3.3. PePercrcobobaaaann-3-3: : AAplplikikasasii PushbuttonPushbutton untuk ON/OFF LEDuntuk ON/OFF LED... .. 2828 7.

7. TimTimer/Coer/Counter paunter pada Mida Mikrokonkrokontroletroler AVR r AVR ... ... 2929 7.1.

7.1. PercobPercobaanaan-4: Men-4: Menggunggunakan akan TimerTimer1 1 ... ... 3333 7.2.

7.2. PercobPercobaanaan-5: Men-5: Menggunggunakan akan TimerTimer2 2 ... ... 3535 7.3.

7.3. PercobPercobaanaan-6: Men-6: Menggunggunakan akan TimerTimer0 0 ... ... 3737 8.

8. KomKomunikasi unikasi Serial Serial ... ... 3838 8

8..11.. PPeenngghhasasiil Dl Deetatak -k - Clock Generator Clock Generator ... . 4040 8.2.

8.2. MengMengirim irim Data Data – USA– USART TRT Tranransmitter smitter ... ... 4444 8.3.

8.3. MeneMenerima rima Data Data – US– USARART RecT Receive eive ... ... 4646 8.4.

8.4. PercobPercobaanaan-7: K-7: Komuniomunikasi kasi Serial Serial ... ... 4747 9.

9. SetelSetelah ah Ini Ini kemankemana? a? ... ... 4949 Bonus-1: Hasil kompil

Bonus-1: Hasil kompilasi Flowcode AVR 3.0 yang uniasi Flowcode AVR 3.0 yang unik?! k?! ... ... 5151 Bonus-2: FlowCode AVR 3.0: Aplikasi I/O Sederhana ... 55 Bonus-2: FlowCode AVR 3.0: Aplikasi I/O Sederhana ... 55

(3)

Bonus-3: FlowCode AVR 3.0: Aplikasi LCD 2x16 karakter ... 58

Bonus-3: FlowCode AVR 3.0: Aplikasi LCD 2x16 karakter ... 58

Bonus-4: FlowCode AVR 3.0: Menghitung Sapi! ... 62

Bonus-4: FlowCode AVR 3.0: Menghitung Sapi! ... 62

Bonus-5: Animasi LED Mikrokontroler ATMega32 dengan C dan Assembly Bonus-5: Animasi LED Mikrokontroler ATMega32 dengan C dan Assembly ... 73... 73

Bonus-6: Aplikasi Pushbutton Mikrokontroler ATMega32 dengan Assem Bonus-6: Aplikasi Pushbutton Mikrokontroler ATMega32 dengan Assembly bly ... 78... 78

Belajar Mikrokontroler AT89C51/52/ Belajar Mikrokontroler AT89C51/52/55: Teori dan Aplikasi, Edisi 2 55: Teori dan Aplikasi, Edisi 2 ... 83... 83

PLC: Konsep, Pemrograman dan Aplikasi Omron Sysmac dan ZEN PLC: Konsep, Pemrograman dan Aplikasi Omron Sysmac dan ZEN ... . 8484 Penapis Aktif Eltronika: Teori dan Praktek ... 85

Penapis Aktif Eltronika: Teori dan Praktek ... 85

Belajar Bahasa Assembly dengan Emu8086 ... 86

Belajar Bahasa Assembly dengan Emu8086 ... 86

Pengendalian Mobile Robot (MOBOT) dengan MOBOTSIM v1.0 ... 87

Pengendalian Mobile Robot (MOBOT) dengan MOBOTSIM v1.0 ... 87 Pas

Pasti ti Ada Ada HikmHikmahnyaahnya...! ...! ... ... 8888

1.

1. Apak

Apakah M

ah Mikro

ikrokont

kontrol

roler

er itu?

itu?

Jika kita bicara tentang Mikrokontroler, maka tidak terlepas dari pengertian atau definisi tentang Jika kita bicara tentang Mikrokontroler, maka tidak terlepas dari pengertian atau definisi tentang Komputer itu sendiri, mengapa? Ada kesamaan-kesamaan antara Mikrokontroler dengan Komputer Komputer itu sendiri, mengapa? Ada kesamaan-kesamaan antara Mikrokontroler dengan Komputer (atau Mikrokomputer),

(atau Mikrokomputer), antara lain:antara lain:

 Sama-sama memiliki unit pengolah pusat atau yang lebih dikenal denganSama-sama memiliki unit pengolah pusat atau yang lebih dikenal dengan CPUCPU ((Central Central 

 Processing Unit  Processing Unit););

 CPUCPU tersebut sama-sama menjalankan program dari suatu lokasi atau tempat, biasanya daritersebut sama-sama menjalankan program dari suatu lokasi atau tempat, biasanya dari

ROM

ROM (( Read Only Memory Read Only Memory))11atauatau RAMRAM (( Random Access Memory Random Access Memory))22;;

 Sama-samSama-sama a memilikimemiliki RAMRAM yang digunakan untuk menyimpan data-data sementara atau yangyang digunakan untuk menyimpan data-data sementara atau yang

lebih dikenal dengan

lebih dikenal dengan variabel-variabelvariabel-variabel;;

 Sama-sama memiliki beberapa luaran dan masukan (Sama-sama memiliki beberapa luaran dan masukan ( I/OI/O) yang digunakan untuk melakukan) yang digunakan untuk melakukan

komunikasi timbal-balik dengan dunia luar, melalui sensor (masukan) dan aktuator (luaran), komunikasi timbal-balik dengan dunia luar, melalui sensor (masukan) dan aktuator (luaran), perhatikan bagan yang ditunjukkan pada Gambar 1.

perhatikan bagan yang ditunjukkan pada Gambar 1.

Gambar 1. Bagan masukan, pemrosesan hingga luaran Gambar 1. Bagan masukan, pemrosesan hingga luaran Lantas apa yang membedakan antara Mikrokontroler dengan Komputer

Lantas apa yang membedakan antara Mikrokontroler dengan Komputer atau Mikrokomputer? Begituatau Mikrokomputer? Begitu mungkin pertanyaan yang ada di benak kita, saat kita membaca beberapa daftar kesamaan yang mungkin pertanyaan yang ada di benak kita, saat kita membaca beberapa daftar kesamaan yang sudah saya tuliskan tersebut. Sama sekali berbeda, itu jawaban yang saya berikan kepada Anda:

sudah saya tuliskan tersebut. Sama sekali berbeda, itu jawaban yang saya berikan kepada Anda:  Mikrokontroler adalah versi mini dan untuk aplikasi khusus dari Mikrokomputer atau Komputer!  Mikrokontroler adalah versi mini dan untuk aplikasi khusus dari Mikrokomputer atau Komputer!

1 1

Memori yang hanya bisa dibaca saja. Memori yang hanya bisa dibaca saja. 2

2

Memori yang bisa dibaca juga bisa ditulisi. Memori yang bisa dibaca juga bisa ditulisi.

Masukan-masukan

masukan

• senssensor or cahacahayaya •

• sensensosor suhr suhuu • • sesensnsoror tekanan, dll tekanan, dll Pemroses Pemroses • • uC uC AAT8T899 • • uC uC AAVRVR • • uC PICuC PIC16F16F, dll, dll Luaran-luaran Luaran-luaran •

• aktaktuatuator or --motor motor •

• rerelalayy •

(4)

Berikut saya berikan kembali daftar kesamaan yang pernah kemukakan sebelumnya dengan Berikut saya berikan kembali daftar kesamaan yang pernah kemukakan sebelumnya dengan menekan

menekankan pada kan pada perbedaan antara Mikrokontroler dan Mikrokomputer:perbedaan antara Mikrokontroler dan Mikrokomputer:

 CPUCPU pada sebuah Komputer berada eksternal dalam suatu sistem, sampai saat ini kecepatanpada sebuah Komputer berada eksternal dalam suatu sistem, sampai saat ini kecepatan

operasionalnya sudah mencapai lebih dari 2,5 GHz, sedangkan CPU pada Mikrokontroler operasionalnya sudah mencapai lebih dari 2,5 GHz, sedangkan CPU pada Mikrokontroler berada didalam (internal) sebuah

berada didalam (internal) sebuah chipchip, kecepatan kerja atau operasionalnya masih cukup, kecepatan kerja atau operasionalnya masih cukup rendah, dalam orde MHz (misalnya, 24 MHz,

rendah, dalam orde MHz (misalnya, 24 MHz, 40 MHz dan lain sebagainya). Kecepatan yang40 MHz dan lain sebagainya). Kecepatan yang relatif rendah

relatif rendah ini sudah mencukupi untuk aplikasi-aplikasi berbasis mikrokontroler.ini sudah mencukupi untuk aplikasi-aplikasi berbasis mikrokontroler.

 JikaJika CPUCPU pada mikrokomputer menjalankan program dalampada mikrokomputer menjalankan program dalam ROMROM atau yang lebih dikenalatau yang lebih dikenal

dengan

dengan BIOSBIOS ((  Basic I/O System  Basic I/O System) pada saat awal dihidupkan, kemudian mengambil atau) pada saat awal dihidupkan, kemudian mengambil atau menjalankan program yang tersimpan dalam hard

menjalankan program yang tersimpan dalam hard disk. Sedangkan mikrokontroler sejak awaldisk. Sedangkan mikrokontroler sejak awal menjalankan program yang tersimpan dalam

menjalankan program yang tersimpan dalam ROMROM internal-nya (bisa berupainternal-nya (bisa berupa Mask ROMMask ROM atau

atau Flash PEROMFlash PEROM atauatau Flash ROMFlash ROM). Sifat ). Sifat memori program dalam mikrokontroler inimemori program dalam mikrokontroler ini non- non-volatile

volatile, artinya tetap , artinya tetap akan tersimpan walaupuakan tersimpan walaupun tidak n tidak diberi catu daya.diberi catu daya.

 RAMRAM pada mikrokomputer bisa mencapai ukuran sekian GByte dan bisa di-upgrade kepada mikrokomputer bisa mencapai ukuran sekian GByte dan bisa di-upgrade ke

ukuran yang lebih besar dan berlokasi di luar

ukuran yang lebih besar dan berlokasi di luar CPUCPU-nya, sedangkan RAM pada-nya, sedangkan RAM pada mikrokontroler ada di dalam

mikrokontroler ada di dalam chipchip dan kapasitasnya rendah, misalnya 128 byte, 256 byte dandan kapasitasnya rendah, misalnya 128 byte, 256 byte dan seterusnya dan ukuran yang relatif kecil inipun dirasa cukup untuk aplikasi-aplikasi seterusnya dan ukuran yang relatif kecil inipun dirasa cukup untuk aplikasi-aplikasi mikrokontroler.

mikrokontroler.

 Luaran dan masukan (Luaran dan masukan (I/OI/O) pada mikrokomputer jauh lebih kompleks dibandingkan dengan) pada mikrokomputer jauh lebih kompleks dibandingkan dengan

mikrokontroler, yang jauh lebih sederhana, selain itu,

mikrokontroler, yang jauh lebih sederhana, selain itu, pada mikrokontrolepada mikrokontroler akses keluaran danr akses keluaran dan masukan bisa per bit.

masukan bisa per bit.

 Jika diamati lebih lanjut, bisa dikatakan bahwa Mikrokomputer atau Komputer merupakanJika diamati lebih lanjut, bisa dikatakan bahwa Mikrokomputer atau Komputer merupakan

komputer serbaguna atau

komputer serbaguna atau general purpose computer general purpose computer , bisa dimanfaatkan untuk berbagai, bisa dimanfaatkan untuk berbagai macam aplikasi (atau perangkat lunak). Sedangkan mikrokontroler adalah

macam aplikasi (atau perangkat lunak). Sedangkan mikrokontroler adalah special purposespecial purpose computer 

computer atau komputer untuk tujuan khusus, hanya satu macam aplikasi saja.atau komputer untuk tujuan khusus, hanya satu macam aplikasi saja.

Perhatikan Gambar 2, agar Anda mendapatkan gambaran tentang mikrokontroler lebih jelas. Perhatikan Gambar 2, agar Anda mendapatkan gambaran tentang mikrokontroler lebih jelas.

Gambar 2. Diagram Blok

(5)

ALU,

ALU,   Instruction Decoder  Instruction Decoder,,  Accumulator Accumulator dandan Control LogicControl Logic, sebagaimana ditunjukkan pada, sebagaimana ditunjukkan pada Gambar 1.2, merupakan

Gambar 1.2, merupakan OtakOtak-nya mikrokontroler yang bersangkutan. Jantungnya berasal dari detak -nya mikrokontroler yang bersangkutan. Jantungnya berasal dari detak  OSC

OSC (lihat pada Gambar 1.2 sebelah kiri atas). Sedangkan di sekeliling ‘Otak’ terdapat berbagai(lihat pada Gambar 1.2 sebelah kiri atas). Sedangkan di sekeliling ‘Otak’ terdapat berbagai macam periferal seperti

macam periferal seperti SFRSFR ((Special Function RegisterSpecial Function Register) yang bertugas menyimpan data-data) yang bertugas menyimpan data-data sementara selama proses berlangsung).

sementara selama proses berlangsung).   Instruction Decoder  Instruction Decoder bertugas menerjemahkan setiapbertugas menerjemahkan setiap instruksi yang ada di dalam

instruksi yang ada di dalam Program MemoryProgram Memory (hasil dari pemrograman yang kita (hasil dari pemrograman yang kita buat sebelumnya).buat sebelumnya). Hasil penerjemahan tersebut merupakan suatu operasi yang harus dikerjakan oleh

Hasil penerjemahan tersebut merupakan suatu operasi yang harus dikerjakan oleh ALUALU (( Arithmetic Arithmetic   Logic Unit

  Logic Unit), mungkin dengan bantuan memori sementara), mungkin dengan bantuan memori sementara  Accumulator Accumulator yang kemudianyang kemudian menghasi

menghasilkan sinyal-sinyal kontrol ke lkan sinyal-sinyal kontrol ke seluruh periferal yang tseluruh periferal yang terkait melaluierkait melalui Control LogicControl Logic.. Memori RAM

Memori RAM atauatau RAM Memory RAM Memory bisa digunakan sebagai tebisa digunakan sebagai tempat penyimpan sementara, sedanmpat penyimpan sementara, sedangkangkan SFR

SFR ((Special Function RegisterSpecial Function Register) sebagian ada yang langsung berhubungan dengan) sebagian ada yang langsung berhubungan dengan I/OI/O daridari mikrokontroler yang bersangkutan dan sebagian lain berhubungan dengan berbagai macam mikrokontroler yang bersangkutan dan sebagian lain berhubungan dengan berbagai macam operasional mikrokontroler.

operasional mikrokontroler. ADC

ADC atauatau   Analog to Digital Converter  Analog to Digital Converter (tidak setiap mikrokontroler memiliki ADC internal),(tidak setiap mikrokontroler memiliki ADC internal), digunakan untuk meng

digunakan untuk mengubah data-data analog menjadi digital untuk diolah atau ubah data-data analog menjadi digital untuk diolah atau diproses lebih lanjut.diproses lebih lanjut. Timer

Timer atauatau CounterCounter digunakan sebagai pewaktu atau pencacah, sebagai pewaktu fungsinya sepertidigunakan sebagai pewaktu atau pencacah, sebagai pewaktu fungsinya seperti sebuah jam digital dan bisa diatur cara kerjanya. Sedangkan pencacah lebih digunakan sebagai sebuah jam digital dan bisa diatur cara kerjanya. Sedangkan pencacah lebih digunakan sebagai penghitung atau pencacah

penghitung atau pencacah event event  atau bisa juga digunakan untuk menghitung berapa jumlah pulsaatau bisa juga digunakan untuk menghitung berapa jumlah pulsa dalam satu detik dan lain sebagainya. Biasanya sebuah mikrokontroler bisa memiliki lebihd dari 1 dalam satu detik dan lain sebagainya. Biasanya sebuah mikrokontroler bisa memiliki lebihd dari 1 timer 

timer .. EEPROM

EEPROM (sama seperti RAM hanya saja tetap akan menyimpan data walaupun tidak mendapatkan(sama seperti RAM hanya saja tetap akan menyimpan data walaupun tidak mendapatkan sumber listrik/daya) dan port-port I/O untuk masukan/luaran, untuk melakukan komunikasi dengan sumber listrik/daya) dan port-port I/O untuk masukan/luaran, untuk melakukan komunikasi dengan periferal eksternal mikrokontroler seperti sensor dan aktuator.

periferal eksternal mikrokontroler seperti sensor dan aktuator.

INFORMASI PELATIHAN PRIVATE AVR DI

INFORMASI PELATIHAN PRIVATE AVR DI

HTTP://KLIKDISINI.COM/PELATIHANAVR

HTTP://KLIKDISINI.COM/PELATIHANAVR

Beberapa catatan mikrokontroler lainnya adalah: Beberapa catatan mikrokontroler lainnya adalah:

 ‘Tertanam’ (atau‘Tertanam’ (atau embedded embedded ) dalam beberapa piranti (umumnya merupakan produk ) dalam beberapa piranti (umumnya merupakan produk 

konsumen) atau yang dikenal dengan istilah

konsumen) atau yang dikenal dengan istilah embedded systemembedded system atauatau embedded controller embedded controller ;;

 Terdedikasi untuk satu macam aplikasi saja (lihat contoh-contoh yang akan saya terangkanTerdedikasi untuk satu macam aplikasi saja (lihat contoh-contoh yang akan saya terangkan

pada bagian lain dari buku ini); pada bagian lain dari buku ini);

 Hanya membutuhkan daya yang (cukup) rendah (Hanya membutuhkan daya yang (cukup) rendah ( low power low power ) sekitar 50 mWatt (Anda) sekitar 50 mWatt (Anda

bandingkan dengan komputer yang bisa mencapai 50 Watt lebih); bandingkan dengan komputer yang bisa mencapai 50 Watt lebih);

 Memiliki beberapa keluaran maupun masukan yang terdedikasi, untuk tujuan atau fungsi-Memiliki beberapa keluaran maupun masukan yang terdedikasi, untuk tujuan atau

fungsi-fungsi khusus; fungsi khusus;

 Kecil dan relatif lebih murah (seri AT89 di pasaran serendah-rendahnya bisa mencapai Rp.Kecil dan relatif lebih murah (seri AT89 di pasaran serendah-rendahnya bisa mencapai Rp.

15.000,00, mikrokontrol

15.000,00, mikrokontroler AVR di pasaran saat er AVR di pasaran saat ini juga relatif murah sedangkan Basic Stampini juga relatif murah sedangkan Basic Stamp bisa mencapai Rp. 500.000,00);

bisa mencapai Rp. 500.000,00); 

 Seringkali tahan-banting, terutama untuk aplikasi-aplikasi yang berhubungan dengan mesinSeringkali tahan-banting, terutama untuk aplikasi-aplikasi yang berhubungan dengan mesin atau otomotif atau militer.

atau otomotif atau militer. 

 Mikrokontroler yang beredar saat ini dibedakan menjadi dua macam, berdasarkanMikrokontroler yang beredar saat ini dibedakan menjadi dua macam, berdasarkan arsitekturnya:

(6)

o

o TipeTipe CISCCISC atauatau Complex Instruction Set ComputingComplex Instruction Set Computing yang lebih kaya instruksi tetapiyang lebih kaya instruksi tetapi fasilitas internal secukupnya saja (seri AT89 memiliki 255 i

fasilitas internal secukupnya saja (seri AT89 memiliki 255 i nstruksi);nstruksi);

o

o TipeTipe RISCRISC atauatau  Reduced Instruction Set Computing  Reduced Instruction Set Computing yang justru lebih kaya fasilitasyang justru lebih kaya fasilitas internalnya tetapi jumlah instruksi secukupnya (seri PIC16F hanya ada sekitar 30-an internalnya tetapi jumlah instruksi secukupnya (seri PIC16F hanya ada sekitar 30-an instruksi).

instruksi).

2.

2. Pen

Penget

getahua

ahuan Dasar Mikr

n Dasar Mikrokont

okontrol

roler AVR

er AVR

2

2..1

1..

P

Pe

en

nd

da

ah

hu

ullu

ua

an

n

Keluarga Mikrokontroler AVR merupakan mikrokontroler dengan arsitektur modern (emang selama Keluarga Mikrokontroler AVR merupakan mikrokontroler dengan arsitektur modern (emang selama ini ada yang kuno kali??). Perhatikan Gambar 3, Atmel membuat 5 (lima) macam atau jenis ini ada yang kuno kali??). Perhatikan Gambar 3, Atmel membuat 5 (lima) macam atau jenis mikrokontroler AVR,

mikrokontroler AVR, yaiyaitu:tu: 

 TinyAVRTinyAVR (tidak ada kaitannya ama mbak Tini yang jualan gudeg…)(tidak ada kaitannya ama mbak Tini yang jualan gudeg…) Mikrokontroler (mungil, hanya 8 sampai 32 pin)

Mikrokontroler (mungil, hanya 8 sampai 32 pin) serbagunserbaguna dengan Memori Flash untuk a dengan Memori Flash untuk  menyimpan program hingga 16K Bytes, dilengkapi SRAM dan EEPROM

menyimpan program hingga 16K Bytes, dilengkapi SRAM dan EEPROM 512 Bytes.512 Bytes. 

 MegaAVRMegaAVR (nah yang ini sudah mulai banyak yang nulis bukunya…)(nah yang ini sudah mulai banyak yang nulis bukunya…) Mikrokontroler dengan unjuk-ke

Mikrokontroler dengan unjuk-kerja trja tinggi, dilengkapi Pengali Perangkainggi, dilengkapi Pengali Perangkat t keras (keras ( Hardware Hardware  Multiplier 

 Multiplier ), mampu menyimpan program hingga 256 KBytes, dilengkapi EEPROM 4K Bytes), mampu menyimpan program hingga 256 KBytes, dilengkapi EEPROM 4K Bytes dan SRAM 8K Bytes.

dan SRAM 8K Bytes. 

 AVR XMEGAAVR XMEGA

Mikrokontroler AVR 8/16-bit XMEGA

Mikrokontroler AVR 8/16-bit XMEGA memiliki periferal baru dan canggih dengan unjuk-memiliki periferal baru dan canggih dengan unjuk-kerja, sistem

kerja, sistem Event  Event dan DMA dan DMA yang ditingkatkan, serta yang ditingkatkan, serta merupamerupakan pengembangan keluargakan pengembangan keluarga AVR untuk pasar

AVR untuk pasar low power low power dandan high performancehigh performance (daya rendah dan unjuk-kerja t(daya rendah dan unjuk-kerja tinggi).inggi). 

 AVR32 UC3AVR32 UC3

Unjuk-kerja tinggi, mikrokontroler flash AVR32 32-bit

Unjuk-kerja tinggi, mikrokontroler flash AVR32 32-bit daya rendah. Memiliki flash hinggadaya rendah. Memiliki flash hingga 512 KByte dan SRAM 128 KByte.

512 KByte dan SRAM 128 KByte. 

 AVR32 AP7AVR32 AP7

Unjuk-kerja tinggi, prosesor aplikasi AVR32 32-bit

Unjuk-kerja tinggi, prosesor aplikasi AVR32 32-bit daya rendahdaya rendah, , memiliki SRAM hingga 32memiliki SRAM hingga 32 KByte.

KByte.

Gambar 3. Mikrokontroler Atmel: Sukses melalui i

(7)

Cuman yang populer di Indonesia adalah

Cuman yang populer di Indonesia adalah tinyAVRtinyAVR dandan megaAVRmegaAVR, itupun masih kalah populer, itupun masih kalah populer dengan keluarga AT89 yang belakangan juga sudah mulai banyak yang beralih ke AVR.

dengan keluarga AT89 yang belakangan juga sudah mulai banyak yang beralih ke AVR.

Perbedaan jenis-jenis tersebut terletak dari fasilitas, atau lebih dikenal dengan fitur-fiturnya. Jenis Perbedaan jenis-jenis tersebut terletak dari fasilitas, atau lebih dikenal dengan fitur-fiturnya. Jenis TinyAVR

TinyAVR merupakan mikrokontroler dengan jumlah pin yang terbatas (sedikit maksudnya) danmerupakan mikrokontroler dengan jumlah pin yang terbatas (sedikit maksudnya) dan sekaligus fitur-fiturnya juga terbatas dibandingkan yang

sekaligus fitur-fiturnya juga terbatas dibandingkan yang megaAVRmegaAVR. . SemSemua ua mikmikrokrokontrontrololer er AVRAVR memiliki set instruksi (

memiliki set instruksi (assemblyassembly) dan organisasi memori yang sama, dengan demikian berpindah-) dan organisasi memori yang sama, dengan demikian berpindah-pindah (walaupun tidak disarankan) antar mikrokontroler AVR gak masalah dan mudah!

pindah (walaupun tidak disarankan) antar mikrokontroler AVR gak masalah dan mudah!

Beberapa mikrokontroler AVR memiliki SRAM, EEPROM, antarmuka SRAM eksternal, ADC, Beberapa mikrokontroler AVR memiliki SRAM, EEPROM, antarmuka SRAM eksternal, ADC, pengali perangkat keras, UART, USART dan lain sebagainya. Bayangkan saja Anda punya pengali perangkat keras, UART, USART dan lain sebagainya. Bayangkan saja Anda punya TinyAVR dan MegaAVR, kemudian telanjangi (maksudnya copotin) semua per

TinyAVR dan MegaAVR, kemudian telanjangi (maksudnya copotin) semua per iferal-nya, nah Andaiferal-nya, nah Anda akan memiliki AVR Core yang sama! Kayak membuang semua isi hamburger, maka Anda akan akan memiliki AVR Core yang sama! Kayak membuang semua isi hamburger, maka Anda akan mendapatkan rotinya doang yang sama…

mendapatkan rotinya doang yang sama…

2.

2.2.

2.

Me

Memi

mili

lih A

h AVR

VR “y

“yan

ang b

g ben

enar

ar””

Moralnya…

Moralnya… tidak tidak pedulipeduli tinyAVRtinyAVR,, megaAVRmegaAVR,, XMEGA AVRXMEGA AVR ((AVR32AVR32 pengecualian karenapengecualian karena masuk ke mikrokontroler 32-bit) semuanya memiliki unjuk-kerja yang sama saja, tetapi dengan masuk ke mikrokontroler 32-bit) semuanya memiliki unjuk-kerja yang sama saja, tetapi dengan “kompleksitas” atau fasilitas yang berbeda-beda, ibaratnya begini: banyak fasilitas dan fitur = “kompleksitas” atau fasilitas yang berbeda-beda, ibaratnya begini: banyak fasilitas dan fitur = megaAVR, fi

megaAVR, fitur atur atau fasilitas terbatas = TinyAVR. Gitu aja kok repot…tau fasilitas terbatas = TinyAVR. Gitu aja kok repot…

Untuk lebih jelasnya perhatikan keterangan singkat yang saya berikan berikut ini, berdasar informasi Untuk lebih jelasnya perhatikan keterangan singkat yang saya berikan berikut ini, berdasar informasi rreessmmi i ddaari ri AAtmtmeell ((http://www.atmel.comhttp://www.atmel.com) dan maaf masih dalam bahasa Inggris (supaya) dan maaf masih dalam bahasa Inggris (supaya kelihatannya aura kecanggihannya, he he he...).

kelihatannya aura kecanggihannya, he he he...).

 tinyAVRtinyAVR

o

o Optimized for simple applications requiring a Optimized for simple applications requiring a small microcontroller.small microcontroller. o

o Great performance for cost effective devices.Great performance for cost effective devices. o

o Fully featured with 10-bit ADCs and high speed PWMs onboard.Fully featured with 10-bit ADCs and high speed PWMs onboard. o

o Self-Programming Flash memory for maximum flexibility.Self-Programming Flash memory for maximum flexibility. o

o debugWIRE On-Chip Debug and In-System Programming.debugWIRE On-Chip Debug and In-System Programming.

 megaAVRmegaAVR

o

o Self-Programming Flash memory with boot blSelf-Programming Flash memory with boot block.ock. o

o High accuracy 10-bit A/D converters with up to x200 analog gain stage.High accuracy 10-bit A/D converters with up to x200 analog gain stage. o

o USART, SPI and TWI(1) compliant serial iUSART, SPI and TWI(1) compliant serial interfaces.nterfaces. o

o IEEE 1149.1 compliant JTAG interface oIEEE 1149.1 compliant JTAG interface on megaAVRs with 44 pins n megaAVRs with 44 pins or more.or more. o

o On-Chip Debug through JTAG or debugWIRE interface.On-Chip Debug through JTAG or debugWIRE interface.

 AVR XMEGAAVR XMEGA

o

o picoPower technology for ultra low power consumptionpicoPower technology for ultra low power consumption o

o True 1.6 volt operation and CPU speed up to 32 MHz.True 1.6 volt operation and CPU speed up to 32 MHz. o

o Event System and DMA Controller.Event System and DMA Controller. o

o High speed, high resolution 12-bit ADC and DHigh speed, high resolution 12-bit ADC and D AC.AC. o

o Crypto engine, Timers/Counters and fast Crypto engine, Timers/Counters and fast commcommunication interfaces.unication interfaces. o

o Accurate and flexible Clock System with Accurate and flexible Clock System with dynamic clock switching.dynamic clock switching.

 AVR32 UC3AVR32 UC3

o

o High CPU performance.High CPU performance. o

o Low power consumption.Low power consumption. o

o High data throughput.High data throughput. o

o Low system cost.Low system cost. o

o High reliability.High reliability. o

(8)

 AVR32 AP7AVR32 AP7

o

o High CPU perfromance.High CPU perfromance. o

o Low power consumption.Low power consumption. o

o SIMD / DSP instructions.SIMD / DSP instructions. o

o Instruction & data caches.Instruction & data caches. o

o Memory management unit.Memory management unit. o

o Built for embedded LinuxBuilt for embedded Linux

2.3

2.3..

Ada

Ada apa

apa de

denga

ngan M

n Mikr

ikroko

okontr

ntrole

oler A

r AVR

VR AT

ATMeg

Mega16

a16??

O tidak apa-apa! Dalam buku saya ini memang sengaja menggunakan mikrokontroler AVR O tidak apa-apa! Dalam buku saya ini memang sengaja menggunakan mikrokontroler AVR ATMega16

ATMega16 karena fitur-karena fitur-fitur yfitur yang ang dibutdibutuhkan. Tentu uhkan. Tentu saja saja Anda Anda bisa menggunakan bisa menggunakan tipe AVRtipe AVR lainnya, apakah yang 40 pin atau yang kurang dari itu, bisa ATMega88, ATMega16, ATMega128, lainnya, apakah yang 40 pin atau yang kurang dari itu, bisa ATMega88, ATMega16, ATMega128, ATMega8535, ATMega168 dan lain sebagainya.

ATMega8535, ATMega168 dan lain sebagainya.

2.3.

2.3.1.

1. Ringka

Ringkasan Fit

san Fitur-fitur Mik

ur-fitur Mikrokont

rokontroler AVR A

roler AVR ATMega16

TMega16

Berikut ini saya ringkaskan berbagai macam fitur-fitur untuk Mikrokontroler AVR ATMega16 atau Berikut ini saya ringkaskan berbagai macam fitur-fitur untuk Mikrokontroler AVR ATMega16 atau Atmega16L (Mikrokontroler AVR 8-bit dengan Flash ISP 16kByte) langsung dari

Atmega16L (Mikrokontroler AVR 8-bit dengan Flash ISP 16kByte) langsung dari datasheet datasheet -nya,-nya, maaf juga masih sebagian besar dalam Bahasa Inggris

maaf juga masih sebagian besar dalam Bahasa Inggris33... •

• Mikrokontroler AVR 8-bit daya-rendah dengan unjuk-kerja tinggi.Mikrokontroler AVR 8-bit daya-rendah dengan unjuk-kerja tinggi. •

• Arsitektur RISC tingkat lanjutArsitektur RISC tingkat lanjut  –

 – 131 Instruksi yang ampuh – Hampir semuanya dieksekusi dalam satu 131 Instruksi yang ampuh – Hampir semuanya dieksekusi dalam satu detak (detak (clock clock ) saja) saja  –

 – 32 x 8 32 x 8 General Purpose Working RegistersGeneral Purpose Working Registers  –

 – Operasi statis penuhOperasi statis penuh  –

 – Throughput hingga 16 MIPS pada 16 MHzThroughput hingga 16 MIPS pada 16 MHz  –

 – Pengali On-chip 2-cyclePengali On-chip 2-cycle •

• High Endurance Non-volatile Memory segmentsHigh Endurance Non-volatile Memory segments  –

 – 16K Bytes of In-System S16K Bytes of In-System S elf-programmelf-programmable Flash able Flash program memoryprogram memory  –

 – 512 Bytes EEPROM512 Bytes EEPROM  –

 – 1K Byte Internal SRAM1K Byte Internal SRAM  –

 – Write/Erase Cycles: 10,000 Flash/100,000 EEPROMWrite/Erase Cycles: 10,000 Flash/100,000 EEPROM  –

 – Data retention: 20 years at 85°C/100 years at 25°CData retention: 20 years at 85°C/100 years at 25°C  –

 – Optional Boot Code Section with Independent Lock Optional Boot Code Section with Independent Lock BitsBits In-System Programming by On-chip Boot Program In-System Programming by On-chip Boot Program True Read-While-Write Operation

True Read-While-Write Operation  –

 – Programming Lock for Software SecurityProgramming Lock for Software Security •

• Antarmuka JTAG (IEEE std. 1149.1 Compliant)Antarmuka JTAG (IEEE std. 1149.1 Compliant)  –

 – Boundary-Boundary-scan Capabilities According to scan Capabilities According to the JTAG Standardthe JTAG Standard  –

 – Extensive On-chip Debug SupportExtensive On-chip Debug Support  –

 – Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG InterfaceProgramming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface •

• Fitur-fitur periferalFitur-fitur periferal  –

 – Dua Pewaktu/Pencacah 8-bit dengan PrDua Pewaktu/Pencacah 8-bit dengan Praskalar dan Mode Pembanding terpisah.askalar dan Mode Pembanding terpisah.  –

 – Sebuah Pewaktu/Pencacah 16-bit Timer/Counter DSebuah Pewaktu/Pencacah 16-bit Timer/Counter Dengan Praskalar, Mode Pembanding danengan Praskalar, Mode Pembanding dan Capture yang terpisah.

Capture yang terpisah.  –

 – Pencacah Real Time dengan Osilator terpisahPencacah Real Time dengan Osilator terpisah  –

 – Empat kanal PWMEmpat kanal PWM  –

 – 8-kanal, 10-bit ADC8-kanal, 10-bit ADC

 8 Single-ended Channels8 Single-ended Channels 3

3

Jika Anda bingung dengan istilah-istilah pada fitur-fitur ini silahkan merujuk ke datasheet aslinya, sehingga fokus Jika Anda bingung dengan istilah-istilah pada fitur-fitur ini silahkan merujuk ke datasheet aslinya, sehingga fokus pada buku ini tidak melulu pada datasheet...

(9)

 7 Differential Channels in TQFP Package Only7 Differential Channels in TQFP Package Only

 2 Differential Channels with Programmable Gain at 1x, 10x, or 200x2 Differential Channels with Programmable Gain at 1x, 10x, or 200x  –

 – Byte-oriented Two-wire Serial InterfaceByte-oriented Two-wire Serial Interface  –

 – Programmable Serial USARTProgrammable Serial USART  –

 – Master/Slave SPI Serial InterfaceMaster/Slave SPI Serial Interface  –

 – Pewaktu Watchdog yang bisa diprogram dengan Osilator On-chip yang tPewaktu Watchdog yang bisa diprogram dengan Osilator On-chip yang t erpisaherpisah  –

 – Komparator Analog On-chipKomparator Analog On-chip •

• Fitur-fitur Mikrokontroler khususFitur-fitur Mikrokontroler khusus  –

 – Reset saat Power-on dan Deteksi Brown-out yang bisa diprogramReset saat Power-on dan Deteksi Brown-out yang bisa diprogram  –

 – Internal Calibrated RC OscillatorInternal Calibrated RC Oscillator  –

 – Sumber interupsi Eksternal dan INternalSumber interupsi Eksternal dan INternal  –

 – Enam ModeEnam Mode SleepSleep: Idle, ADC N: Idle, ADC Noise Reduction, Power-save, Power-down, Standby andoise Reduction, Power-save, Power-down, Standby and Extended Standby

Extended Standby •

• I/O and PackagesI/O and Packages  –

 – 32 Programmable I/O Lines32 Programmable I/O Lines  –

 – 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF •

• Tegangan kerjaTegangan kerja  –

 – 2.7 - 5.5V untuk Atmega16L2.7 - 5.5V untuk Atmega16L  –

 – 4.5 - 5.5V untuk Atmega164.5 - 5.5V untuk Atmega16 •

• Kecepatan (frekuensiKecepatan (frekuensi clock clock ))  –

 – 0 - 0 - 8 MHz untuk Atmega16L8 MHz untuk Atmega16L  –

 – 0 - 0 - 16 MHz untuk Atmega1616 MHz untuk Atmega16 •

• Konsumsi daya pada 1 MHz, Konsumsi daya pada 1 MHz, 3V, 25°C for Atmega16L3V, 25°C for Atmega16L  –

 – Aktif: 1.1 mAAktif: 1.1 mA  –

 – Idle Mode: 0.35 mAIdle Mode: 0.35 mA  –

 – Mode Power-down: < 1Mode Power-down: < 1 AA

INFORMASI PELATIHAN PRIVATE AVR DI

INFORMASI PELATIHAN PRIVATE AVR DI

HTTP://KLIKDISINI.COM/PELATIHANAVR

HTTP://KLIKDISINI.COM/PELATIHANAVR

2.3.

2.3.2.

2. Diagram Pin d

Diagram Pin dan Dia

an Diagram Blok Mikrok

gram Blok Mikrokontrole

ontroler AVR AT

r AVR ATMega16

Mega16

Pada Gambar 4 dan 5 ditunjukkan diagram pin, masing-masing, untuk Mikrokontroler AVR Pada Gambar 4 dan 5 ditunjukkan diagram pin, masing-masing, untuk Mikrokontroler AVR ATMega1

ATMega16 t6 tipe PDIP dan TQFP/MLF atau ipe PDIP dan TQFP/MLF atau dikendikenal sebagai SMD.al sebagai SMD.

Gambar 4. Diagram Pin

(10)

Pada Gambar 6 dan 7 ditunjukkan diagram blok untuk Mikrokontroler AVR ATMega16, perhatikan Pada Gambar 6 dan 7 ditunjukkan diagram blok untuk Mikrokontroler AVR ATMega16, perhatikan begitu banyaknya fitur-fitur dalam diagram blok tersebut, sebagaimana juga sudah saya kutipkan begitu banyaknya fitur-fitur dalam diagram blok tersebut, sebagaimana juga sudah saya kutipkan pada bagian sebelumnya.

pada bagian sebelumnya.

Gambar 5. Diagram Pin

Gambar 5. Diagram Pin Mikrokontroler AVR ATMega16 tipe SMDMikrokontroler AVR ATMega16 tipe SMD

2.3.

2.3.3.

3. Penjelas

Penjelasan Singka

an Singkat Pin-pin pada Mikrok

t Pin-pin pada Mikrokontrol

ontroler AVR ATMega16

er AVR ATMega16

Berikut kita jelaskan secara singkat fungsi dari masing-masing PIN pada Mikrokontroler AVR Berikut kita jelaskan secara singkat fungsi dari masing-masing PIN pada Mikrokontroler AVR ATMega16.

ATMega16.

Vcc

Vcc Masukan tegangan catu daMasukan tegangan catu dayaya GND

GND Ground, emang apalagi kalau bukan groGround, emang apalagi kalau bukan ground...und... Port A (PA7..PA0)

Port A (PA7..PA0) Port A berfungsi sebagai masukan analog ke ADC interPort A berfungsi sebagai masukan analog ke ADC internal padanal pada mikrokontroler ATMega16, selai

mikrokontroler ATMega16, selain itu n itu juga berfungsi sebagai portjuga berfungsi sebagai port I/O dwi-arah 8-bit,

I/O dwi-arah 8-bit, jika ADC-nya tidak digunakan. Masinjika ADC-nya tidak digunakan. Masing-masingg-masing pin menyediakan resistor

pin menyediakan resistor pull-up pull-up internalinternal44 yang bisa diaktifkanyang bisa diaktifkan untuk masing-masing bit.

untuk masing-masing bit. Port B (PB7..PB0)

Port B (PB7..PB0) Port B Port B berfungsi sebagberfungsi sebagai sebagai port I/ai sebagai port I/O dwi-arah 8-bit.Masing-O dwi-arah 8-bit.Masing-masing pin menyediakan resistor

masing pin menyediakan resistor pull-up pull-up internal yang bisainternal yang bisa diaktifkan untuk masing-masing bit.

diaktifkan untuk masing-masing bit.

Port B juga memiliki berbagai macam fungsi alternatif, Port B juga memiliki berbagai macam fungsi alternatif, sebagaiman

sebagaimana da ditunjukkan pada Tabel 1.1itunjukkan pada Tabel 1.1 Port C (PC7..PC0)

Port C (PC7..PC0) Port C Port C berfungsi sebagberfungsi sebagai sebagai port I/ai sebagai port I/O dwi-arah 8-bit.Masing-O dwi-arah 8-bit.Masing-masing pin menyediakan resistor

masing pin menyediakan resistor pull-up pull-up internal yang bisainternal yang bisa diaktifkan untuk masing-masing bit.

diaktifkan untuk masing-masing bit.

Port C juga digunakan sebagai antarmuka JTAG, sebagaimana Port C juga digunakan sebagai antarmuka JTAG, sebagaimana ditunjukkan pada Tabel 1.2

ditunjukkan pada Tabel 1.2 4

4

Resistor pull up internal berkaitan dengan rangkaian internal pada mikrokontroler AVR yang bersangkutan. Resistor pull up internal berkaitan dengan rangkaian internal pada mikrokontroler AVR yang bersangkutan.

(11)

Port D (PD7..PD0)

Port D (PD7..PD0) Port D Port D berfungberfungsi sebagai sebagai port si sebagai sebagai port I/O dwi-arah 8-bit.Masing-I/O dwi-arah 8-bit.Masing-masing pin menyediakan resistor

masing pin menyediakan resistor pull-up pull-up internal yang bisainternal yang bisa diaktifkan untuk masing-masing bit.

diaktifkan untuk masing-masing bit. Port D juga

Port D juga memiliki berbagai macam fungsi alternatif,memiliki berbagai macam fungsi alternatif, sebagaiman

sebagaimana da ditunjukkan pada Tabel 1.3itunjukkan pada Tabel 1.3  /RESET

 /RESET Masukan Reset. Level rendah pada pin ini selama Masukan Reset. Level rendah pada pin ini selama lebih dari lamalebih dari lama waktu minimum yang ditentukan akan menyebabkan reset,

waktu minimum yang ditentukan akan menyebabkan reset, walaupun

walaupun clock clock tidak dijalankan.tidak dijalankan. XTAL1

XTAL1 Masukan ke penguat osilator terbalik (Masukan ke penguat osilator terbalik (invertinginverting) dan masukan ke) dan masukan ke rangkaian

rangkaian clock clock internal.internal. XTAL2

XTAL2 Luaran dari penguat osilator terbalik Luaran dari penguat osilator terbalik  AVCC

AVCC Merupakan masukan tegangan catu daya untuk Port Merupakan masukan tegangan catu daya untuk Port A sebagaiA sebagai ADC, biasanya dihubungkan ke Vcc, walaupun ADC-nya tidak  ADC, biasanya dihubungkan ke Vcc, walaupun ADC-nya tidak  digunakan

digunakan. . Jika ADC dJika ADC digunakan sebaiknyigunakan sebaiknya da dihubihubungkan ke Vccungkan ke Vcc melalui tapis lolos-bawah (

melalui tapis lolos-bawah (low-paslow-pass s filter filter ).). AREF

AREF Merupakan tegangan referensi untuk ADCMerupakan tegangan referensi untuk ADC

Gambar 6. Diagram blok Mikrokontroler AVR

(12)

Gambar 7. Diagram blok Mikrokontroler AVR

Gambar 7. Diagram blok Mikrokontroler AVR ATMega16 – Bagian IIATMega16 – Bagian II

Pada Tabel 1, 2 dan 3 ditunjukkan masing-masing alternatif fungsi dari Port B, Port C dan Port D. Pada Tabel 1, 2 dan 3 ditunjukkan masing-masing alternatif fungsi dari Port B, Port C dan Port D. Dalam buku saya ini sengaja penjelasan dari masing-masing fungsi tersebut (kecuali antarmuka Dalam buku saya ini sengaja penjelasan dari masing-masing fungsi tersebut (kecuali antarmuka JTAG) akan dibahas pada saat digunakan, sehingga Anda bisa memahami langsung dengan JTAG) akan dibahas pada saat digunakan, sehingga Anda bisa memahami langsung dengan mencoba, istilah kerennya “

mencoba, istilah kerennya “ Learning by Doing Learning by Doing”...”...

Tabel 1. Alternatif fungsi

(13)

Tabel 2. Alternatif fungsi

Tabel 2. Alternatif fungsi PORTCPORTC

Tabel 3. Alternatif fungsi

Tabel 3. Alternatif fungsi PORTDPORTD

3.

3. Pengen

Pengenalan

alan Bahasa

Bahasa C un

C untuk

tuk Mikrokontr

Mikrokontroler

oler AVR

AVR

Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler, Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat, termasuk mikrokontroler, khususnya seri AVR dari Atmel. Ada yang menyebutkan bahwa bahasa ini merupakan

khususnya seri AVR dari Atmel. Ada yang menyebutkan bahwa bahasa ini merupakan  High Level High Level  Language

 Language sisanya menyebut sebagaisisanya menyebut sebagai Midle Level Language Midle Level Language. Dengan demikian seorang. Dengan demikian seorang  programmer  programmer  dapat menuangkan (menuliskan) algoritmanya dengan mudah.

dapat menuangkan (menuliskan) algoritmanya dengan mudah.

3.

3.1.

1.

St

Stru

rukt

ktur

ur Pe

Penu

nuli

lisa

san B

n Bah

ahas

asa C

a C

Perhatikan struktur penulisan dalam Bahasa C

Perhatikan struktur penulisan dalam Bahasa C sebagai berikut...sebagai berikut... #include < [library1.h] >

#include < [library1.h] > // Opsional// Opsional #define [nama1] [nilai];

#define [nama1] [nilai]; // Opsional// Opsional [global variables]

[global variables] // Opsional// Opsional [functions]

[functions] // Opsional// Opsional int main(void)

int main(void) // Program Utama// Program Utama {

{

[Deklarasi local variable/constant] [Deklarasi local variable/constant] [Isi Program Utama]

[Isi Program Utama] }

(14)

Keterangan: Keterangan:

 Opsional artinya boleh ditulis boleh tOpsional artinya boleh ditulis boleh tidak, menyesuaiidak, menyesuaikan kebutuhan – tkan kebutuhan – tuliskan pustauliskan pustaka apaka apa saja yang digunakan dan lain sebagainya

saja yang digunakan dan lain sebagainya 

 Penulisan variabel dilakukan di awal agar Penulisan variabel dilakukan di awal agar aman bisa digunakan sepanjang program, demikianaman bisa digunakan sepanjang program, demikian  juga dengan deklarasi fungsi-fungsi yang t

 juga dengan deklarasi fungsi-fungsi yang t erlibaterlibat 

 Silahkan ikuti (baca) terus tSilahkan ikuti (baca) terus tutorial ini untuk melihat contoh-contoh program di bagian lainutorial ini untuk melihat contoh-contoh program di bagian lain tutorial ini.

tutorial ini.

3.

3.2.

2.

Ti

Tipe

pe-t

-tip

ipe d

e dat

ata d

a dal

alam

am B

Bah

ahas

asa C

a C

 charchar : 1 byte ( -128 s/d 127 ): 1 byte ( -128 s/d 127 ) 

 unsigned charunsigned char : 1 byte ( 0 s/d 255 ): 1 byte ( 0 s/d 255 ) 

 intint: 2 byte ( : 2 byte ( -32768 s/d 32767 )-32768 s/d 32767 ) 

 unsigned intunsigned int: 2 byte ( 0 s/d 65535 ): 2 byte ( 0 s/d 65535 ) 

 longlong: 4 byte ( : 4 byte ( -2147483648 s/d 21474836-2147483648 s/d 2147483647 )47 ) 

 unsigned longunsigned long: 4 byte ( : 4 byte ( 0 s/d 4294967295 )0 s/d 4294967295 ) 

 floatfloat: bilangan desimal: bilangan desimal 

 arrayarray: kumpulan data-data yang sama tipenya.: kumpulan data-data yang sama tipenya.

3.

3.3.

3.

De

Dekl

klar

aras

asi V

i Var

aria

iabe

bel d

l dan

an Ko

Kons

nsta

tant

nta

a

 Variabel adalah memori penyimpanan data Variabel adalah memori penyimpanan data yanyang g nilainya dapat diubah-ubah.nilainya dapat diubah-ubah.

Penulisan : Penulisan :

[tipe data] [nama] = [nilai]; [tipe data] [nama] = [nilai];

 Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah. Penulisan :Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah. Penulisan :

const [nama] = [nilai]; const [nama] = [nilai];

 Global variableGlobal variable atauatau constant constant dapat diakses di seluruh bagian prodapat diakses di seluruh bagian program.gram. 

  Local variable Local variable atauatau constant constant hanya dapat diakses oleh fungsi tempat dideklarasikannya.hanya dapat diakses oleh fungsi tempat dideklarasikannya.

3

3..4

4..

P

Pe

errn

ny

ya

atta

aa

an

n

Statement 

Statement  atau pernyataan adalah setiap operasi dalam pemrograman, harus diakhiri dengan [;] atauatau pernyataan adalah setiap operasi dalam pemrograman, harus diakhiri dengan [;] atau [}]. Pernyataan tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu baris. Lebih dari 1 [}]. Pernyataan tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu baris. Lebih dari 1 baris gunakan pasan

baris gunakan pasangan [/*] gan [/*] dan [*/]. Pernyataan yang tidak dieksekusi disebut juga komentar.dan [*/]. Pernyataan yang tidak dieksekusi disebut juga komentar. Contoh:

Contoh:

suhu=adc/255*100;

suhu=adc/255*100; //contoh rumus perhitungan suhu//contoh rumus perhitungan suhu

3

3..5

5..

F

Fu

un

ng

gssii

Function atau fungsi adalah bagian program yang dapat dipanggil oleh program ut Function atau fungsi adalah bagian program yang dapat dipanggil oleh program ut ama.ama. Penulisan :

Penulisan :

[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2]) [tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2]) { { [pernyataan_1]; [pernyataan_1]; [pernyataan_2]; [pernyataan_2]; ... ... } }

3.

3.6.

6.

Pe

Pern

rnya

yata

taan be

an berk

rkon

ondi

disi d

si dan Pe

an Peng

ngul

ulan

anga

gan

n

if else

if else: digunakan untuk menyeleksi satu atau beberapa kondisi: digunakan untuk menyeleksi satu atau beberapa kondisi if ( [persyaratan] ) {

(15)

[statement1]; [statement1]; [statement2]; [statement2]; ... ... } } else else { { [statement3]; [statement3]; [statement4]; [statement4]; ... ... } } for

for : digunakan untuk pengulangan dengan jumlah yang sudah diketahui – berapa kali diulang.: digunakan untuk pengulangan dengan jumlah yang sudah diketahui – berapa kali diulang. for ( [nilai awal] ; [syarat] ; [operasi nilai] )

for ( [nilai awal] ; [syarat] ; [operasi nilai] ) { { [statement1]; [statement1]; [statement2]; [statement2]; ... ... } } while

while: digunakan untuk pengulangan (: digunakan untuk pengulangan (loopinglooping) jika dan sealama memenuhi suatu kondisi masih) jika dan sealama memenuhi suatu kondisi masih dipenuhi (pengulangan selama benar

dipenuhi (pengulangan selama benar while ( [persyaratan] ) while ( [persyaratan] ) { { [statement1]; [statement1]; [statement2]; [statement2]; ... ... } } do while

do while: digunakan untuk pengulangan jika dan selama memenuhi syarat tertentu, namun min 1 kali: digunakan untuk pengulangan jika dan selama memenuhi syarat tertentu, namun min 1 kali do do { { [statement1]; [statement1]; [statement2]; [statement2]; ... ... } } while ([persyaratan]) while ([persyaratan]) switch case

switch case: d: digunaigunakan untuk kan untuk seleksi dengan banyak kondisiseleksi dengan banyak kondisi switch ( [nama variabel] )

switch ( [nama variabel] ) {

{

case [nilai1]: [statement1]; case [nilai1]: [statement1];

 break;  break;

case [nilai2]: [statement2]; case [nilai2]: [statement2];

 break;  break; ... ... } }

3.

3.7.

7.

Op

Oper

eras

asi L

i Log

ogik

ika d

a dan

an Bi

Bila

lang

ngan

an Bi

Bin

ner

er

Operator Logika Operator Logika

(16)

AND:

AND: &&&& NOT: NOT: !! OR : OR : |||| Biner Biner AND:

AND: && OR : OR : || XOR : XOR : ^^ Shift right: Shift right: >>>> Shift left : Shift left : <<<<

Lebih besar sama dengan:

Lebih besar sama dengan: >=>= Lebih kecil/besar:

Lebih kecil/besar: < , >< , > Lebih kecil sama dengan :

Lebih kecil sama dengan : <=<=

3

3.8

.8..

Op

Ope

era

rasi

si A

Arrit

itme

meti

tik

ka

a

O

Oppeerraattoorr KKeetteerraannggaann

+, -, *, /

+, -, *, / Tambah, kurang, kali dan bagiTambah, kurang, kali dan bagi

+=, -=, *=, /= +=, -=, *=, /=

Nilai di sebelah kiri

Nilai di sebelah kiri operator ditambah,operator ditambah, dikurangi, dikali atau dibagi dengan nilai di dikurangi, dikali atau dibagi dengan nilai di

sebelah kanan operator. sebelah kanan operator.

%

% Sisa pembagianSisa pembagian

++,

--++, -- Ditambah 1 (Ditambah 1 (increment increment ) atau ) atau dikudikurangi saturangi satu

((decrement decrement )) Contoh: Contoh: a = 5 * 6 + 2 / 2 – 1 a = 5 * 6 + 2 / 2 – 1  hasilnya 30hasilnya 30 a *= 5

a *= 5  jika nilai awal a=30, maka hasilnya 150jika nilai awal a=30, maka hasilnya 150 a += 3

a += 3  jika nilai awal a=30, maka hasilnya 33jika nilai awal a=30, maka hasilnya 33 a++

a++  jika nilai awal a=5, maka hasilnya 6jika nilai awal a=5, maka hasilnya 6

a--a--  jika nilai awal a=5, maka hasilnya 4, dstjika nilai awal a=5, maka hasilnya 4, dst

3.

3.9.

9.

Pe

Peng

ngul

ulan

anga

gan

n Te

Teru

rus-m

s-men

ener

erus

us at

atau

au

Infi

Infi ni

nite L

te Loo

ooping

ping

Apa itu

Apa itu Pengulangan terus-menerusPengulangan terus-menerus atauatau infinite loopinginfinite looping?? Yaitu suatu pengulangan atau kalangYaitu suatu pengulangan atau kalang (loop) yang dilakuka terus-menerus tanpa batas, hingga rangkaian tidak lagi mendapatkan sumber (loop) yang dilakuka terus-menerus tanpa batas, hingga rangkaian tidak lagi mendapatkan sumber catu daya.

catu daya.

Yang perlu Anda ingat, bahwa kode-kode program yang dijalankan, dalam kaidah Bahasa C, adalah Yang perlu Anda ingat, bahwa kode-kode program yang dijalankan, dalam kaidah Bahasa C, adalah yang ada di fungsi utama a

yang ada di fungsi utama atau main, seperti contoh berikut...tau main, seperti contoh berikut... void main()

void main() {

{

//

// pernyataan-pepernyataan-pernyataan program rnyataan program  }

(17)

Program akan dijalankan berurutan dari atas ke bawah dan program tersebut hanya akan dijalankan Program akan dijalankan berurutan dari atas ke bawah dan program tersebut hanya akan dijalankan sekali

sekali saja. Jika menggunakansaja. Jika menggunakan infinite loopinfinite loop (ada yang mengatakan sebagai pengulangan tak-hingga(ada yang mengatakan sebagai pengulangan tak-hingga atau kalang tak-hingga, gak masalah, artinya sama saja kok), maka program yang ada di dalam atau kalang tak-hingga, gak masalah, artinya sama saja kok), maka program yang ada di dalam pengulan

pengulangan tgan tersebut akan dijalankan berulang-ulang tersebut akan dijalankan berulang-ulang t erus-meneerus-menerus, contoh...rus, contoh... void main()

void main() {

{

//

// pernyataan-pepernyataan-pernyataan program rnyataan program  w whhiille e ((11));; /// / iinnffiinniitte e lloooopp { { // pernyataan2 // pernyataan2 } } } } Untuk 

Untuk keluar dari infinite loopingkeluar dari infinite looping gunakan perintahgunakan perintah break;break; Mengapa terjadi Infinite Looping ??

Mengapa terjadi Infinite Looping ?? Perhatikan pada contoh tersebut, pernyataan atau instruksiPerhatikan pada contoh tersebut, pernyataan atau instruksi while (1) menyatakan bahwa kondisi SELALU BENAR, sehingga selalu dilakukan pengulangan while (1) menyatakan bahwa kondisi SELALU BENAR, sehingga selalu dilakukan pengulangan terus-meneru

terus-menerus! s! Coba bedakan dengan contoh berikut...Coba bedakan dengan contoh berikut... void main()

void main() {

{

//

// pernyataan-pepernyataan-pernyataan program rnyataan program  w whhiille e ((iinnddeexx<<55));; /// / iinnffiinniitte e lloooopp { { // pernyataan2 // pernyataan2 Index += 1; Index += 1; } } } }

Program di dalam kurung kurawa setelah instruksi while (index<5) akan dijalankan selama nilai dari Program di dalam kurung kurawa setelah instruksi while (index<5) akan dijalankan selama nilai dari index

index kurang dari 5,kurang dari 5, indexindex merupakan variabel sehingga nilainya bisa berubah. Nah, jikamerupakan variabel sehingga nilainya bisa berubah. Nah, jika indexindex lebihlebih dari atau

dari atau sama dengan 5, maka pengulangan dihentikan.sama dengan 5, maka pengulangan dihentikan.

4.

4. Meng

Menggun

gunakan AV

akan AVR Stud

R Studio deng

io dengan WinA

an WinAVR GCC

VR GCC

AVR Studio 4 merupakan perangkat lunak gratis (

AVR Studio 4 merupakan perangkat lunak gratis (  free software  free software) yang bisa anda unduh di internet) yang bisa anda unduh di internet melalui websitenya Atmel

melalui websitenya Atmel55. Perangkat lunak ini bisa Anda gunakan untuk menulis program bahasa. Perangkat lunak ini bisa Anda gunakan untuk menulis program bahasa mesin (

mesin (assemblyassembly) dan, jika diintegrasikan dengan winAVR GCC) dan, jika diintegrasikan dengan winAVR GCC66, bahasa C, mensimulasi program, bahasa C, mensimulasi program yang Anda buat

yang Anda buat77 dan kemudian mendebug program sehingga menghasilkan berkas dengan ekstensidan kemudian mendebug program sehingga menghasilkan berkas dengan ekstensi .hex yang bisa anda unduh kedalam IC mikrokontroller anda.

.hex yang bisa anda unduh kedalam IC mikrokontroller anda.

Untuk pertama kali, Anda harus melakukan instalasi AVR Studio 4 ini ke komputer anda, jika ingin Untuk pertama kali, Anda harus melakukan instalasi AVR Studio 4 ini ke komputer anda, jika ingin diintegrasikan dengan WinAVR GCC, lakukan instalasi WinAVR GCC terlebih dahulu sebelum diintegrasikan dengan WinAVR GCC, lakukan instalasi WinAVR GCC terlebih dahulu sebelum AVR Stdui 4.0. Cara

AVR Stdui 4.0. Cara menginstalnymenginstalnya pun a pun mudah layaknya anda menginstal perangkat lunak komputermudah layaknya anda menginstal perangkat lunak komputer

5 5 http://www.atmel.com http://www.atmel.com 6 6 Unduh WinAVR GCC di Unduh WinAVR GCC di 7 7

Pengertian simulasi disini adalah simulasi dalam tingkat register bukan simulasi dengan piranti (

Pengertian simulasi disini adalah simulasi dalam tingkat register bukan simulasi dengan piranti (devicedevice). Jika Anda). Jika Anda menginginkan simulasi dengan rangkain dan piranti, gunakan

menginginkan simulasi dengan rangkain dan piranti, gunakan free software free softwarelainnya yaitu VMLAB yang bisa diunduhlainnya yaitu VMLAB yang bisa diunduh di

(18)

yang lain. Gambar 8 adalah contoh tampilan utama dari AVR Studio 4.0 saat pertama kali Anda yang lain. Gambar 8 adalah contoh tampilan utama dari AVR Studio 4.0 saat pertama kali Anda  jalankan.

 jalankan.

Gambar 8. Tampilan awal AVR Studio 4.0 –

Gambar 8. Tampilan awal AVR Studio 4.0 – Wizard DialogWizard Dialog

Tampilan yang ditunjukkan pada Gambar 8 bukan merupakan tampilan utama dari AVR Studio 4, Tampilan yang ditunjukkan pada Gambar 8 bukan merupakan tampilan utama dari AVR Studio 4, melainkan kotak dialog wizard yang akan menuntun kita, khususnya, membuat program baru (lihat melainkan kotak dialog wizard yang akan menuntun kita, khususnya, membuat program baru (lihat pada tanda panah, bahwa dialog ini diaktifkan setiap kali AVR Studio 4 dijalankan, hilangkan tanda pada tanda panah, bahwa dialog ini diaktifkan setiap kali AVR Studio 4 dijalankan, hilangkan tanda centan

centang jika g jika Anda tidak ingin mengaktifkan kotak dialog ini dAnda tidak ingin mengaktifkan kotak dialog ini di awal program).i awal program). Okey, sekarang kita klik 

Okey, sekarang kita klik  New ProjectNew Project, sehingga akan ditampilkan pilihan dan isian-isian yang, sehingga akan ditampilkan pilihan dan isian-isian yang ditunjukkan pada Gambar 9.

ditunjukkan pada Gambar 9.

Perhatikan tanda panah di Gambar 9, lakukan pilihan bahasa apa yang akan Anda gunakan, apakah Perhatikan tanda panah di Gambar 9, lakukan pilihan bahasa apa yang akan Anda gunakan, apakah Atmel AVR Assembler

Atmel AVR Assembler atauatau AVR GCCAVR GCC? Karena kita akan belajar pemrograman mikrokontroler? Karena kita akan belajar pemrograman mikrokontroler AVR menggunakan Bahasa C, maka dipilih AVR GCC.

AVR menggunakan Bahasa C, maka dipilih AVR GCC.

Langkah berikutnya adalah, perhatikan tanda panah di Gambar 10, mengisi

Langkah berikutnya adalah, perhatikan tanda panah di Gambar 10, mengisi Project nameProject name (atau(atau nama proyek),

nama proyek), Initial fileInitial file (nama file utama proyek yang bersangkutan) dan(nama file utama proyek yang bersangkutan) dan LocationLocation (tempat(tempat menyimpan proyek Anda, klik pada tanda panah

menyimpan proyek Anda, klik pada tanda panah jika Anda menginginkan lokasi lainnya). Kemudianjika Anda menginginkan lokasi lainnya). Kemudian klik 

(19)

Gambar 9. Halaman 2 kotak dialog

Gambar 9. Halaman 2 kotak dialog wizard wizard 

Gambar 10. Halaman 2 kotak dialog wizard saat dipilih AVR GCC Gambar 10. Halaman 2 kotak dialog wizard saat dipilih AVR GCC

(20)

Gambar 11. Halaman 3 kotak dialog wizard

Gambar 11. Halaman 3 kotak dialog wizard – memilih mikrokontroler AVR– memilih mikrokontroler AVR

Langkah selanjutnya adalah memilih mikrokontroler AVR yang digunakan, perhatikan tanda panah Langkah selanjutnya adalah memilih mikrokontroler AVR yang digunakan, perhatikan tanda panah pada Gambar 11, dan akhiri dengan klik 

pada Gambar 11, dan akhiri dengan klik  FinishFinish. Sehingga ditampilkan jendela utama dari AVR. Sehingga ditampilkan jendela utama dari AVR Studio 4, sebagaimana ditunjukkan pada Gambar 12, dengan editor (perhatikan tanda panah pada Studio 4, sebagaimana ditunjukkan pada Gambar 12, dengan editor (perhatikan tanda panah pada Gambar 12) siap digunakan untuk mengetikkan program Anda.

Gambar 12) siap digunakan untuk mengetikkan program Anda.

Gambar 12. Jendela utama AVR Studio 4 Gambar 12. Jendela utama AVR Studio 4

Okey, misalnya sekarang kita ketikkan program berikut, ketik saja dulu, ntar kita terangkan atau Okey, misalnya sekarang kita ketikkan program berikut, ketik saja dulu, ntar kita terangkan atau berikan penjelasan tentang program ini d

(21)

Simpan berkas (program) Anda dengan

Simpan berkas (program) Anda dengan Ctrl+SCtrl+S atau pilih menuatau pilih menu FileFile  SaveSave. Kemudian lakukan. Kemudian lakukan kompilasi (tekan F7), jika t

kompilasi (tekan F7), jika tidak ada kesalahan akan ditampilkan laporan sepeidak ada kesalahan akan ditampilkan laporan seperti contoh rti contoh berikuberikut...t...

Wow! Anda sudah berhasil membuat program mikrokontroler AVR Anda yang pertama, selamat ya! Wow! Anda sudah berhasil membuat program mikrokontroler AVR Anda yang pertama, selamat ya! Luar biasa!

Luar biasa!

Lha terus habis gini ngapain? Oya, Anda langsung bisa mensimulasikan-nya (

Lha terus habis gini ngapain? Oya, Anda langsung bisa mensimulasikan-nya ( Ctrl+Shift+Alt+F5Ctrl+Shift+Alt+F5)) dengan AVR Studio 4 (perhatikan Gambar 13) atau men-download-kan hex-nya ke board dengan AVR Studio 4 (perhatikan Gambar 13) atau men-download-kan hex-nya ke board mikrokontroler AVR Anda

mikrokontroler AVR Anda88..

8 8

Untuk urusan mendownload program (HEX) ke mikrokontroler silahkan merujuk ke artikel saya yang terkait di ??, dan Untuk urusan mendownload program (HEX) ke mikrokontroler silahkan merujuk ke artikel saya yang terkait di ??, dan ikuti diskusi-nya.

(22)

Gambar 13. Jendela Debugger AVR Studio 4 Gambar 13. Jendela Debugger AVR Studio 4

Okey, sampai disini pendahuluan AVR Studio 4-nya, sekarang kita mulai bahas konsep Okey, sampai disini pendahuluan AVR Studio 4-nya, sekarang kita mulai bahas konsep pemrogramannya, antara lain:

pemrogramannya, antara lain:

 Konsep Masukan/Luaran atau I/O, danKonsep Masukan/Luaran atau I/O, dan 

 Timer/Counter pada Mikrokontroler AVRTimer/Counter pada Mikrokontroler AVR

5.

5. Masu

Masukan/

kan/Luar

Luaran (I/O) pada Mikr

an (I/O) pada Mikrokont

okontrol

roler AVR

er AVR

Mohon silahkan melihat kembali berbagai macam fitur ATMega16 (sebagai contoh mikrokontroler Mohon silahkan melihat kembali berbagai macam fitur ATMega16 (sebagai contoh mikrokontroler AVR) pada halaman-halaman sebel

AVR) pada halaman-halaman sebelum ini. Saum ini. Salah satunya adalah memiliki 4 x 8 lah satunya adalah memiliki 4 x 8 saluran masukan dansaluran masukan dan luaran digital (berlogika 0 atau 1), totalnya 32 bit atau

luaran digital (berlogika 0 atau 1), totalnya 32 bit atau 32 pin! Masing-ma32 pin! Masing-masing diberi nama A, B, sing diberi nama A, B, CC dan D (masing-masing 8 pin atau 8 bit).

dan D (masing-masing 8 pin atau 8 bit). Kali ini

Kali ini kita akan membahakita akan membahas tentang hal dass tentang hal dasar berkaitan denar berkaitan dengan konsep I/O atau masugan konsep I/O atau masukan/luarankan/luaran pada mikrokontroler AVR:

pada mikrokontroler AVR:

 Membaca tingkat tegangan masukan, apakah berlogika 0 (tegangan disekitar 0 volt) atau 1 (teganganMembaca tingkat tegangan masukan, apakah berlogika 0 (tegangan disekitar 0 volt) atau 1 (tegangan

sekitar 5 volt maksimal); sekitar 5 volt maksimal);

 Mengeluarkan tingkat tegangan 0 (sekitar 0 volt) atau 1 (sekitar 5 volt);Mengeluarkan tingkat tegangan 0 (sekitar 0 volt) atau 1 (sekitar 5 volt);

Untuk keperlua tersebut, AVR memiliki beberapa register yang t

Untuk keperlua tersebut, AVR memiliki beberapa register yang t erkait, yaitu DDRx, PORTx danerkait, yaitu DDRx, PORTx dan PINx

PINx99, berikut penjelasan masing-masing..., berikut penjelasan masing-masing...

9 9

Tanda ‘x’ diganti dengan A, B, C atau D menyesuaikan dengan pin masukan/luaran yang digunakan. Tanda ‘x’ diganti dengan A, B, C atau D menyesuaikan dengan pin masukan/luaran yang digunakan.

(23)

5

5..1

1..

R

Re

eg

giisstte

er

r D

DD

DR

Rx

x

Digunakan untuk menentukan apakah sebuah pin pada sebuat PORT (A, B, C atau D) sebagai Digunakan untuk menentukan apakah sebuah pin pada sebuat PORT (A, B, C atau D) sebagai masukan atau luaran atau disebut sebagai arah (

masukan atau luaran atau disebut sebagai arah ( directiondirection) dari pin yang bersangkutan:) dari pin yang bersangkutan:

 BerikanBerikan logika 1 (satu)logika 1 (satu) pada bit yang terkait agar dijadikan sebagaipada bit yang terkait agar dijadikan sebagai luaranluaran atauatau output output.. 

 BerikanBerikan logika 0 (nol)logika 0 (nol) pada bit yang terkait agar dijadikan sebagaipada bit yang terkait agar dijadikan sebagai masukanmasukan atauatau inputinput..

Misal PORTA semua bit akan digunakan sebagai masukan, maka untuk mengaturnya kita gunakan Misal PORTA semua bit akan digunakan sebagai masukan, maka untuk mengaturnya kita gunakan perintah...

perintah...

DDRA= 0x00; //seluruh pin-pin pada Port A digunakan sebagai input DDRA= 0x00; //seluruh pin-pin pada Port A digunakan sebagai input

Misalnya lagi, PORTA.0 akan dijadikan masukan sedangkan PORTA.2 sampai PORTA.7 akan Misalnya lagi, PORTA.0 akan dijadikan masukan sedangkan PORTA.2 sampai PORTA.7 akan digunakan sebagai luaran, maka perintahnya...

digunakan sebagai luaran, maka perintahnya... DDRA= 0xFE;

DDRA= 0xFE; Perhatikan

Perhatikan 0xFE (heksa) = 0b11111110 (biner), perhatikan baik-baik konversi biner ini, setiap bit0xFE (heksa) = 0b11111110 (biner), perhatikan baik-baik konversi biner ini, setiap bit nilai biner mewakili Pin-Pin pada PortA.

nilai biner mewakili Pin-Pin pada PortA.

5

5..2

2..

R

Re

eg

giisstte

er P

r PO

OR

RT

Tx

x

Sebaga

Sebagaimana dijelaskan sebelumnya, jika sebuah imana dijelaskan sebelumnya, jika sebuah PORT, semua atau sebagian, dikonfigurasi sebagaiPORT, semua atau sebagian, dikonfigurasi sebagai masukan, maka register ini berfungsi sebagai penentu apakah kondisi pin yang terkait

di-masukan, maka register ini berfungsi sebagai penentu apakah kondisi pin yang terkait di- pullup pullup atauatau  Floating

 Floating. Begitu juga jika dikonfigurasi sebagai luaran, maka register ini menentukan kondisi pin. Begitu juga jika dikonfigurasi sebagai luaran, maka register ini menentukan kondisi pin yang terkait terbaca

yang terkait terbaca HIGH  HIGH atauatau LOW  LOW . Untuk memahami hal ini, perhatikan Gambar 14.. Untuk memahami hal ini, perhatikan Gambar 14.

Gambar 14. Kondisi

Gambar 14. Kondisi pullup pullup pada suatu PORTpada suatu PORT Penjelasan: Jika

Penjelasan: Jika PIN.1PIN.1 dihubungkan ke VCC (tegangan 5 Volt) melalui resistor (R), maka inilahdihubungkan ke VCC (tegangan 5 Volt) melalui resistor (R), maka inilah yang di maksud dengan

yang di maksud dengan  pullup pullup.. Saat tidak ada tegangan dari luar,Saat tidak ada tegangan dari luar, PIN.1PIN.1 akanakan cenderungcenderung berkondisi HIGH (logika 1)

berkondisi HIGH (logika 1). Sedangkan. Sedangkan PIN.2PIN.2 dibiarkan begitu saja sehingga kondisi logik daridibiarkan begitu saja sehingga kondisi logik dari PIN.2

PIN.2 begitu rentan terhadap pengaruh disekitarnya.begitu rentan terhadap pengaruh disekitarnya. PIN.2PIN.2 bisa berlogikabisa berlogika HIGHHIGH, bisa juga, bisa juga berlogika

berlogika LOWLOW, ini artinya logika, ini artinya logika PIN.2PIN.2 mengambang (mengambang ( floating floating).). Kondisi

Kondisi floating floating biasanya diperlukan saat PIN sebuah mikrokontroler dihubungkan ke suatu sensor.biasanya diperlukan saat PIN sebuah mikrokontroler dihubungkan ke suatu sensor. Karena jika di

Karena jika di  pullup pullup, dikhawatirkan kondisi logik PIN tersebut mengganggu kondisi logik pin-pin, dikhawatirkan kondisi logik PIN tersebut mengganggu kondisi logik pin-pin sensor yang bersangkutan.

(24)

Perhatikan contoh-contoh berikut... Perhatikan contoh-contoh berikut... DDRA=0x00;

DDRA=0x00; PORTA = 0xFF; PORTA = 0xFF;

Ini berarti seluruh pin-pin pada PORTA dijadikan sebagai masukan dan

di-Ini berarti seluruh pin-pin pada PORTA dijadikan sebagai masukan dan di- pullup pullup, artinya pada, artinya pada rangkaian yang terkait, jika menggunakan tombol atau

rangkaian yang terkait, jika menggunakan tombol atau  pushbutton pushbutton, jika tidak ditekan akan terbaca, jika tidak ditekan akan terbaca HIGH dan jika ditekan akan terbaca LOW. Gunakan contoh rangkaian pada Gambar 15 dan HIGH dan jika ditekan akan terbaca LOW. Gunakan contoh rangkaian pada Gambar 15 dan perhatikan tanda panah,

perhatikan tanda panah,  pushbutton pushbutton satu ujung dihubungkan ke pin yang terkait sedangkan ujungsatu ujung dihubungkan ke pin yang terkait sedangkan ujung lainnya di-GND-kan. INGAT! Ini bukan satu-satu-nya cara membuat rangkaian masukan dengan lainnya di-GND-kan. INGAT! Ini bukan satu-satu-nya cara membuat rangkaian masukan dengan  pushbutton

 pushbutton, tetapi ini cara , tetapi ini cara yang mudyang mudah dan murah meriah... ah dan murah meriah... he he he...he he he... Contoh lainnya... Contoh lainnya... DDRB= 0x00; DDRB= 0x00; PORTB=0x0F; PORTB=0x0F;

Ini artinya seluruh pin-pin PORTB dijadikan masukan, dengan konfigurasi 0x0F (0b00001111) atau Ini artinya seluruh pin-pin PORTB dijadikan masukan, dengan konfigurasi 0x0F (0b00001111) atau PO

PORRTBTB.0 .0 ssamamppai ai POPORRTBTB.3 .3 didi-- pullup pullup, sedangkan PORTB.4 sampai PORTB.7 dikonfigurasi, sedangkan PORTB.4 sampai PORTB.7 dikonfigurasi  floating

 floating..

5

5..3

3..

R

Re

eg

giisstte

er

r P

PIIN

Nx

x

Digunakan untuk membaca masukan pada pin yang bersangkutan, akan dijelaskan pada contoh Digunakan untuk membaca masukan pada pin yang bersangkutan, akan dijelaskan pada contoh program di halaman-halaman berikutnya.

program di halaman-halaman berikutnya.

Gambar 15. Contoh rangkaian aktif rendah tombol

Gambar

Gambar 5. Diagram Pin
Gambar 6. Diagram blok Mikrokontroler AVR
Gambar 7. Diagram blok Mikrokontroler AVR ATMega16 – Bagian II ATMega16 – Bagian II
Gambar 8. Tampilan awal AVR Studio 4.0 –
+7

Referensi

Dokumen terkait

Kompetensi Dasar Materi Pokok dan Uraian Materi Nilai Budaya Dan Karakter Bangsa Kewirausah- aan/ Ekonomi Kreatif Gagasan Kegiatan Pembelajaran Indikator Pencapaian Kompetensi

Tujuan Pengembangan Sistem Informasi Manajemen Pengawasan (SIMWAS) adalah terciptanya suatu Sistem Informasi Pengawasan yang terintegrasi antara sistem perencanaan,

Jenis pakan alami yang diberikan dalam pemeliharaan larva ikan kerapu adalah rotifera dan artemia. Untuk menjaga agar rotifera dan artemia tetap hidup maka diberi

 Antarmuka ini merupakan suatu teknik untuk manajemen window atau tugas yang terdiri dari beberapa kumpulan tampilan yang terorganisir seperti tabbed-notebook.  Antarmuka

Saran dari penelitian ini adalah perlu dilakukan penelitian lebih lanjut terkait optimasi suhu dan lama sonikasi dalam pembuatan nanoliposom dan pengamatan morfologi

SMA DIK TUK BA POLRI Dik Bang Spes

Hasil penelitian yang diperoleh dari hasil perhitungan uji wilcoxon test dijelaskan bahwa terdapat pengaruh penerapan media audio visual terhadap hasil shooting

Kabupaten Tapanuli Selatan adalah sebagaimana dimaksud dalam Undang-Undang Darurat Nomor 7 Tahun 1956 tentang Pembentukan Daerah Otonom Kabupaten-Kabupaten Dalam