P. 1
49577248 Tutorial Pemrograman Mikrokontroler AVR v1 0

49577248 Tutorial Pemrograman Mikrokontroler AVR v1 0

|Views: 58|Likes:
Published by Muhammad Faisal

More info:

Published by: Muhammad Faisal on Aug 03, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

03/18/2013

pdf

text

original

Sections

  • 2.Pengetahuan Dasar Mikrokontroler AVR
  • 2.1.Pendahuluan
  • 2.2.Memilih AVR “yang benar”
  • 2.3.1.Ringkasan Fitur-fitur Mikrokontroler AVR ATMega16
  • 2.3.2.Diagram Pin dan Diagram Blok Mikrokontroler AVR ATMega16
  • 2.3.3.Penjelasan Singkat Pin-pin pada Mikrokontroler AVR ATMega16
  • 3.Pengenalan Bahasa C untuk Mikrokontroler AVR
  • 3.1.Struktur Penulisan Bahasa C
  • 3.2.Tipe-tipe data dalam Bahasa C
  • 3.3.Deklarasi Variabel dan Konstanta
  • 3.4.Pernyataan
  • 3.5.Fungsi
  • 3.6.Pernyataan berkondisi dan Pengulangan
  • 3.7.Operasi Logika dan Bilangan Biner
  • 3.8.Operasi Aritmetika
  • 3.9.Pengulangan Terus-menerus atau Infinite Looping
  • 4.Menggunakan AVR Studio dengan WinAVR GCC
  • 5.Masukan/Luaran (I/O) pada Mikrokontroler AVR
  • 5.1.Register DDRx
  • 5.2.Register PORTx
  • 5.3.Register PINx
  • 6.Latihan Tahap-I
  • 6.1.Percobaan-1: LED berkedip-kedip
  • 6.2.Percobaan-2: Membunyikan buzzer!
  • 6.3.Percobaan-3: Aplikasi Pushbutton untuk ON/OFF LED
  • 7.Timer/Counter pada Mikrokontroler AVR
  • 7.1.Percobaan-4: Menggunakan Timer1
  • 7.2.Percobaan-5: Menggunakan Timer2
  • 7.3.Percobaan-6: Menggunakan Timer0
  • 8.Komunikasi Serial
  • 8.1.Penghasil Detak -Clock Generator
  • 8.2.Mengirim Data – USART Transmitter
  • 8.3.Menerima Data – USART Receive
  • 8.4.Percobaan-7: Komunikasi Serial
  • 9.Setelah Ini kemana?
  • Bonus-1: Hasil kompilasi Flowcode AVR 3.0 yang unik?!
  • Bonus-2: FlowCode AVR 3.0: Aplikasi I/O Sederhana
  • Bonus-3: FlowCode AVR 3.0: Aplikasi LCD 2x16 karakter
  • Bonus-4: FlowCode AVR 3.0: Menghitung Sapi!
  • Bonus-5: Animasi LED Mikrokontroler ATMega32 dengan C dan Assembly
  • Bonus-6: Aplikasi Pushbutton Mikrokontroler ATMega32 dengan Assembly
  • Belajar Mikrokontroler AT89C51/52/55: Teori dan Aplikasi, Edisi 2
  • PLC: Konsep, Pemrograman dan Aplikasi Omron Sysmac dan ZEN
  • Penapis Aktif Eltronika: Teori dan Praktek
  • Belajar Bahasa Assembly dengan Emu8086
  • Pengendalian Mobile Robot (MOBOT) dengan MOBOTSIM v1.0
  • Pasti Ada Hikmahnya...!

FREE e-book v1.0 Tutorial Pemrograman Mikrokontroler AVR dengan WinAVR GCC (ATMega16/32/8535) http://klikdisini.

com/embedded

oleh Agfianto Eko Putra (agfi68@gmail.com) dan Dhani Nugraha (dhan_t46@yahoo.com) Dapatkan ebook ini gratis di http://klikdisini.com/embedded

FREE EBOOK!! Jika Anda merasa ebook ini bermanfaat silahkan mendistribusikan ebook ini dengan GRATIS di website Anda atau dimana saja, selama tidak merubah isi yang ada di e-book ini. Terima kasih…

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha - 1

Tutorial Pemrograman Mikrokontroler AVR dengan WinAVR GCC (ATMega16/32/8535)
Disusun oleh: Agfianto Eko Putra – agfi68@gmail.com dan Dhani Nugraha - dhan_t46@yahoo.com

Daftar Isi
1. 2. Apakah Mikrokontroler itu? ...................................................................................................... 3 Pengetahuan Dasar Mikrokontroler AVR .................................................................................. 6 2.1. Pendahuluan ....................................................................................................................... 6 2.2. Memilih AVR “yang benar” ............................................................................................... 7 2.3. Ada apa dengan Mikrokontroler AVR ATMega16? ............................................................ 8 2.3.1. Ringkasan Fitur-fitur Mikrokontroler AVR ATMega16 ............................................... 8 2.3.2. Diagram Pin dan Diagram Blok Mikrokontroler AVR ATMega16 ............................... 9 2.3.3. Penjelasan Singkat Pin-pin pada Mikrokontroler AVR ATMega16 ............................ 10 3. Pengenalan Bahasa C untuk Mikrokontroler AVR ................................................................... 13 3.1. Struktur Penulisan Bahasa C ............................................................................................. 13 3.2. Tipe-tipe data dalam Bahasa C .......................................................................................... 14 3.3. Deklarasi Variabel dan Konstanta ..................................................................................... 14 3.4. Pernyataan ........................................................................................................................ 14 3.5. Fungsi ............................................................................................................................... 14 3.6. Pernyataan berkondisi dan Pengulangan............................................................................ 14 3.7. Operasi Logika dan Bilangan Biner .................................................................................. 15 3.8. Operasi Aritmetika............................................................................................................ 16 3.9. Pengulangan Terus-menerus atau Infinite Looping ............................................................ 16 4. Menggunakan AVR Studio dengan WinAVR GCC ................................................................. 17 5. Masukan/Luaran (I/O) pada Mikrokontroler AVR ................................................................... 22 5.1. Register DDRx ................................................................................................................. 23 5.2. Register PORTx................................................................................................................ 23 5.3. Register PINx ................................................................................................................... 24 6. Latihan Tahap-I ....................................................................................................................... 25 6.1. Percobaan-1: LED berkedip-kedip .................................................................................... 25 6.2. Percobaan-2: Membunyikan buzzer! ................................................................................. 26 6.3. Percobaan-3: Aplikasi Pushbutton untuk ON/OFF LED.................................................... 28 7. Timer/Counter pada Mikrokontroler AVR ............................................................................... 29 7.1. Percobaan-4: Menggunakan Timer1 .................................................................................. 33 7.2. Percobaan-5: Menggunakan Timer2 .................................................................................. 35 7.3. Percobaan-6: Menggunakan Timer0 .................................................................................. 37 8. Komunikasi Serial ................................................................................................................... 38 8.1. Penghasil Detak - Clock Generator ................................................................................... 40 8.2. Mengirim Data – USART Transmitter .............................................................................. 44 8.3. Menerima Data – USART Receive ................................................................................... 46 8.4. Percobaan-7: Komunikasi Serial ....................................................................................... 47 9. Setelah Ini kemana? ................................................................................................................ 49 Bonus-1: Hasil kompilasi Flowcode AVR 3.0 yang unik?! .............................................................. 51 Bonus-2: FlowCode AVR 3.0: Aplikasi I/O Sederhana ................................................................... 55
Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha - 2

Bonus-3: FlowCode AVR 3.0: Aplikasi LCD 2x16 karakter ........................................................... 58 Bonus-4: FlowCode AVR 3.0: Menghitung Sapi! ........................................................................... 62 Bonus-5: Animasi LED Mikrokontroler ATMega32 dengan C dan Assembly ................................. 73 Bonus-6: Aplikasi Pushbutton Mikrokontroler ATMega32 dengan Assembly ................................. 78 Belajar Mikrokontroler AT89C51/52/55: Teori dan Aplikasi, Edisi 2 .............................................. 83 PLC: Konsep, Pemrograman dan Aplikasi Omron Sysmac dan ZEN ............................................... 84 Penapis Aktif Eltronika: Teori dan Praktek ..................................................................................... 85 Belajar Bahasa Assembly dengan Emu8086 .................................................................................... 86 Pengendalian Mobile Robot (MOBOT) dengan MOBOTSIM v1.0 ................................................. 87 Pasti Ada Hikmahnya...! ................................................................................................................. 88

1. Apakah Mikrokontroler itu?
Jika kita bicara tentang Mikrokontroler, maka tidak terlepas dari pengertian atau definisi tentang Komputer itu sendiri, mengapa? Ada kesamaan-kesamaan antara Mikrokontroler dengan Komputer (atau Mikrokomputer), antara lain: Sama-sama memiliki unit pengolah pusat atau yang lebih dikenal dengan CPU (Central Processing Unit); CPU tersebut sama-sama menjalankan program dari suatu lokasi atau tempat, biasanya dari ROM (Read Only Memory)1 atau RAM (Random Access Memory)2; Sama-sama memiliki RAM yang digunakan untuk menyimpan data-data sementara atau yang lebih dikenal dengan variabel-variabel; Sama-sama memiliki beberapa luaran dan masukan (I/O) yang digunakan untuk melakukan komunikasi timbal-balik dengan dunia luar, melalui sensor (masukan) dan aktuator (luaran), perhatikan bagan yang ditunjukkan pada Gambar 1. Masukanmasukan • sensor cahaya • sensor suhu • sensor tekanan, dll Pemroses • uC AT89 • uC AVR • uC PIC16F, dll Luaran-luaran • aktuator motor • relay • speaker, dll

Gambar 1. Bagan masukan, pemrosesan hingga luaran Lantas apa yang membedakan antara Mikrokontroler dengan Komputer atau Mikrokomputer? Begitu 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: Mikrokontroler adalah versi mini dan untuk aplikasi khusus dari Mikrokomputer atau Komputer!

1 2

Memori yang hanya bisa dibaca saja. Memori yang bisa dibaca juga bisa ditulisi.

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha - 3

yang jauh lebih sederhana. dalam orde MHz (misalnya. sedangkan RAM pada mikrokontroler ada di dalam chip dan kapasitasnya rendah. sedangkan CPU pada Mikrokontroler berada didalam (internal) sebuah chip. agar Anda mendapatkan gambaran tentang mikrokontroler lebih jelas. Perhatikan Gambar 2. artinya tetap akan tersimpan walaupun tidak diberi catu daya. Jika CPU pada mikrokomputer menjalankan program dalam ROM atau yang lebih dikenal dengan BIOS (Basic I/O System) pada saat awal dihidupkan. Sifat memori program dalam mikrokontroler ini nonvolatile. Sedangkan mikrokontroler adalah special purpose computer atau komputer untuk tujuan khusus.4 . Jika diamati lebih lanjut. bisa dikatakan bahwa Mikrokomputer atau Komputer merupakan komputer serbaguna atau general purpose computer. Sedangkan mikrokontroler sejak awal menjalankan program yang tersimpan dalam ROM internal-nya (bisa berupa Mask ROM atau Flash PEROM atau Flash ROM). RAM pada mikrokomputer bisa mencapai ukuran sekian GByte dan bisa di-upgrade ke ukuran yang lebih besar dan berlokasi di luar CPU-nya. bisa dimanfaatkan untuk berbagai macam aplikasi (atau perangkat lunak). Luaran dan masukan (I/O) pada mikrokomputer jauh lebih kompleks dibandingkan dengan mikrokontroler. Diagram Blok mikrokontroler (yang) disederhanakan Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . 256 byte dan seterusnya dan ukuran yang relatif kecil inipun dirasa cukup untuk aplikasi-aplikasi mikrokontroler. misalnya 128 byte. kecepatan kerja atau operasionalnya masih cukup rendah. Kecepatan yang relatif rendah ini sudah mencukupi untuk aplikasi-aplikasi berbasis mikrokontroler. pada mikrokontroler akses keluaran dan masukan bisa per bit.Berikut saya berikan kembali daftar kesamaan yang pernah kemukakan sebelumnya dengan menekankan pada perbedaan antara Mikrokontroler dan Mikrokomputer: CPU pada sebuah Komputer berada eksternal dalam suatu sistem. selain itu. 40 MHz dan lain sebagainya). hanya satu macam aplikasi saja.5 GHz. Gambar 2. 24 MHz. kemudian mengambil atau menjalankan program yang tersimpan dalam hard disk. sampai saat ini kecepatan operasionalnya sudah mencapai lebih dari 2.

Hanya membutuhkan daya yang (cukup) rendah (low power) sekitar 50 mWatt (Anda bandingkan dengan komputer yang bisa mencapai 50 Watt lebih). Terdedikasi untuk satu macam aplikasi saja (lihat contoh-contoh yang akan saya terangkan pada bagian lain dari buku ini). digunakan untuk mengubah data-data analog menjadi digital untuk diolah atau diproses lebih lanjut. Memiliki beberapa keluaran maupun masukan yang terdedikasi.000. Instruction Decoder bertugas menerjemahkan setiap instruksi yang ada di dalam Program Memory (hasil dari pemrograman yang kita buat sebelumnya). mikrokontroler AVR di pasaran saat ini juga relatif murah sedangkan Basic Stamp bisa mencapai Rp. Jantungnya berasal dari detak OSC (lihat pada Gambar 1. untuk tujuan atau fungsifungsi khusus.5 . sebagaimana ditunjukkan pada Gambar 1. Biasanya sebuah mikrokontroler bisa memiliki lebihd dari 1 timer.ALU. EEPROM (sama seperti RAM hanya saja tetap akan menyimpan data walaupun tidak mendapatkan sumber listrik/daya) dan port-port I/O untuk masukan/luaran. 15. 500.2 sebelah kiri atas). Hasil penerjemahan tersebut merupakan suatu operasi yang harus dikerjakan oleh ALU (Arithmetic Logic Unit).COM/PELATIHANAVR Beberapa catatan mikrokontroler lainnya adalah: ‘Tertanam’ (atau embedded) dalam beberapa piranti (umumnya merupakan produk konsumen) atau yang dikenal dengan istilah embedded system atau embedded controller. Mikrokontroler yang beredar saat ini dibedakan menjadi dua macam. merupakan Otak-nya mikrokontroler yang bersangkutan.000.2. sedangkan SFR (Special Function Register) sebagian ada yang langsung berhubungan dengan I/O dari mikrokontroler yang bersangkutan dan sebagian lain berhubungan dengan berbagai macam operasional mikrokontroler. Timer atau Counter digunakan sebagai pewaktu atau pencacah. sebagai pewaktu fungsinya seperti sebuah jam digital dan bisa diatur cara kerjanya.00.00). Accumulator dan Control Logic. Memori RAM atau RAM Memory bisa digunakan sebagai tempat penyimpan sementara. Seringkali tahan-banting. untuk melakukan komunikasi dengan periferal eksternal mikrokontroler seperti sensor dan aktuator. Instruction Decoder. INFORMASI PELATIHAN PRIVATE AVR DI HTTP://KLIKDISINI. ADC atau Analog to Digital Converter (tidak setiap mikrokontroler memiliki ADC internal). Kecil dan relatif lebih murah (seri AT89 di pasaran serendah-rendahnya bisa mencapai Rp. mungkin dengan bantuan memori sementara Accumulator yang kemudian menghasilkan sinyal-sinyal kontrol ke seluruh periferal yang terkait melalui Control Logic. Sedangkan di sekeliling ‘Otak’ terdapat berbagai macam periferal seperti SFR (Special Function Register) yang bertugas menyimpan data-data sementara selama proses berlangsung). berdasarkan arsitekturnya: Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . terutama untuk aplikasi-aplikasi yang berhubungan dengan mesin atau otomotif atau militer. Sedangkan pencacah lebih digunakan sebagai penghitung atau pencacah event atau bisa juga digunakan untuk menghitung berapa jumlah pulsa dalam satu detik dan lain sebagainya.

memiliki SRAM hingga 32 KByte. AVR32 UC3 Unjuk-kerja tinggi. AVR32 AP7 Unjuk-kerja tinggi. Memiliki flash hingga 512 KByte dan SRAM 128 KByte. dilengkapi EEPROM 4K Bytes dan SRAM 8K Bytes. o Tipe RISC atau Reduced Instruction Set Computing yang justru lebih kaya fasilitas internalnya tetapi jumlah instruksi secukupnya (seri PIC16F hanya ada sekitar 30-an instruksi). dilengkapi Pengali Perangkat keras (Hardware Multiplier). Pengetahuan Dasar Mikrokontroler AVR 2. Pendahuluan Keluarga Mikrokontroler AVR merupakan mikrokontroler dengan arsitektur modern (emang selama ini ada yang kuno kali??). hanya 8 sampai 32 pin) serbaguna dengan Memori Flash untuk menyimpan program hingga 16K Bytes. prosesor aplikasi AVR32 32-bit daya rendah. mampu menyimpan program hingga 256 KBytes.1.o Tipe CISC atau Complex Instruction Set Computing yang lebih kaya instruksi tetapi fasilitas internal secukupnya saja (seri AT89 memiliki 255 instruksi). mikrokontroler flash AVR32 32-bit daya rendah. Gambar 3. sistem Event dan DMA yang ditingkatkan. serta merupakan pengembangan keluarga AVR untuk pasar low power dan high performance (daya rendah dan unjuk-kerja tinggi). yaitu: TinyAVR (tidak ada kaitannya ama mbak Tini yang jualan gudeg…) Mikrokontroler (mungil. AVR XMEGA Mikrokontroler AVR 8/16-bit XMEGA memiliki periferal baru dan canggih dengan unjukkerja.6 . MegaAVR (nah yang ini sudah mulai banyak yang nulis bukunya…) Mikrokontroler dengan unjuk-kerja tinggi. Atmel membuat 5 (lima) macam atau jenis mikrokontroler AVR. Mikrokontroler Atmel: Sukses melalui inovasi Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . dilengkapi SRAM dan EEPROM 512 Bytes. 2. Perhatikan Gambar 3.

Cuman yang populer di Indonesia adalah tinyAVR dan megaAVR. o Low system cost. o Easy to use. ADC.1 compliant JTAG interface on megaAVRs with 44 pins or more. o On-Chip Debug through JTAG or debugWIRE interface. Gitu aja kok repot… Untuk lebih jelasnya perhatikan keterangan singkat yang saya berikan berikut ini. o Self-Programming Flash memory for maximum flexibility. o debugWIRE On-Chip Debug and In-System Programming. o High accuracy 10-bit A/D converters with up to x200 analog gain stage. o High speed. AVR32 UC3 o High CPU performance. o Accurate and flexible Clock System with dynamic clock switching. AVR XMEGA o picoPower technology for ultra low power consumption o True 1. XMEGA AVR (AVR32 pengecualian karena masuk ke mikrokontroler 32-bit) semuanya memiliki unjuk-kerja yang sama saja. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . antarmuka SRAM eksternal. o USART. UART. tetapi dengan “kompleksitas” atau fasilitas yang berbeda-beda. dengan demikian berpindahpindah (walaupun tidak disarankan) antar mikrokontroler AVR gak masalah dan mudah! Beberapa mikrokontroler AVR memiliki SRAM. EEPROM.2. o High data throughput. Timers/Counters and fast communication interfaces. o Event System and DMA Controller. high resolution 12-bit ADC and DAC. Jenis TinyAVR merupakan mikrokontroler dengan jumlah pin yang terbatas (sedikit maksudnya) dan sekaligus fitur-fiturnya juga terbatas dibandingkan yang megaAVR. megaAVR. itupun masih kalah populer dengan keluarga AT89 yang belakangan juga sudah mulai banyak yang beralih ke AVR. Bayangkan saja Anda punya TinyAVR dan MegaAVR.). he he he. maka Anda akan mendapatkan rotinya doang yang sama… 2. o Low power consumption.7 . tinyAVR o Optimized for simple applications requiring a small microcontroller. o High reliability. Memilih AVR “yang benar” Moralnya… tidak peduli tinyAVR. fitur atau fasilitas terbatas = TinyAVR. o Great performance for cost effective devices. SPI and TWI(1) compliant serial interfaces. o IEEE 1149. atau lebih dikenal dengan fitur-fiturnya.com) dan maaf masih dalam bahasa Inggris (supaya kelihatannya aura kecanggihannya..6 volt operation and CPU speed up to 32 MHz. Perbedaan jenis-jenis tersebut terletak dari fasilitas. o Crypto engine. kemudian telanjangi (maksudnya copotin) semua periferal-nya. USART dan lain sebagainya. o Fully featured with 10-bit ADCs and high speed PWMs onboard.atmel. ibaratnya begini: banyak fasilitas dan fitur = megaAVR. berdasar informasi resmi dari Atmel (http://www. pengali perangkat keras. nah Anda akan memiliki AVR Core yang sama! Kayak membuang semua isi hamburger. megaAVR o Self-Programming Flash memory with boot block.. Semua mikrokontroler AVR memiliki set instruksi (assembly) dan organisasi memori yang sama.

10-bit ADC 8 Single-ended Channels • • • 3 Jika Anda bingung dengan istilah-istilah pada fitur-fitur ini silahkan merujuk ke datasheet aslinya. o Memory management unit.3.1..000 EEPROM – Data retention: 20 years at 85°C/100 years at 25°C – Optional Boot Code Section with Independent Lock Bits In-System Programming by On-chip Boot Program True Read-While-Write Operation – Programming Lock for Software Security Antarmuka JTAG (IEEE std. • • Mikrokontroler AVR 8-bit daya-rendah dengan unjuk-kerja tinggi.AVR32 AP7 o High CPU perfromance. o Built for embedded Linux 2. ATMega16. ATMega8535. and Lock Bits through the JTAG Interface Fitur-fitur periferal – Dua Pewaktu/Pencacah 8-bit dengan Praskalar dan Mode Pembanding terpisah.000 Flash/100. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Mode Pembanding dan Capture yang terpisah. sehingga fokus pada buku ini tidak melulu pada datasheet. o Instruction & data caches. apakah yang 40 pin atau yang kurang dari itu. Arsitektur RISC tingkat lanjut – 131 Instruksi yang ampuh – Hampir semuanya dieksekusi dalam satu detak (clock) saja – 32 x 8 General Purpose Working Registers – Operasi statis penuh – Throughput hingga 16 MIPS pada 16 MHz – Pengali On-chip 2-cycle High Endurance Non-volatile Memory segments – 16K Bytes of In-System Self-programmable Flash program memory – 512 Bytes EEPROM – 1K Byte Internal SRAM – Write/Erase Cycles: 10. o Low power consumption.. 1149.3.8 . Tentu saja Anda bisa menggunakan tipe AVR lainnya. Ringkasan Fitur-fitur Mikrokontroler AVR ATMega16 Berikut ini saya ringkaskan berbagai macam fitur-fitur untuk Mikrokontroler AVR ATMega16 atau Atmega16L (Mikrokontroler AVR 8-bit dengan Flash ISP 16kByte) langsung dari datasheet-nya. – Pencacah Real Time dengan Osilator terpisah – Empat kanal PWM – 8-kanal.. Fuses. – Sebuah Pewaktu/Pencacah 16-bit Timer/Counter Dengan Praskalar.. o SIMD / DSP instructions. EEPROM. 2. Ada apa dengan Mikrokontroler AVR ATMega16? O tidak apa-apa! Dalam buku saya ini memang sengaja menggunakan mikrokontroler AVR ATMega16 karena fitur-fitur yang dibutuhkan. ATMega128.1 Compliant) – Boundary-scan Capabilities According to the JTAG Standard – Extensive On-chip Debug Support – Programming of Flash. maaf juga masih sebagian besar dalam Bahasa Inggris3. ATMega168 dan lain sebagainya. bisa ATMega88.

5V untuk Atmega16 Kecepatan (frekuensi clock) – 0 . ADC Noise Reduction. Power-save.• • • • • 7 Differential Channels in TQFP Package Only 2 Differential Channels with Programmable Gain at 1x. Gambar 4. or 200x – Byte-oriented Two-wire Serial Interface – Programmable Serial USART – Master/Slave SPI Serial Interface – Pewaktu Watchdog yang bisa diprogram dengan Osilator On-chip yang terpisah – Komparator Analog On-chip Fitur-fitur Mikrokontroler khusus – Reset saat Power-on dan Deteksi Brown-out yang bisa diprogram – Internal Calibrated RC Oscillator – Sumber interupsi Eksternal dan INternal – Enam Mode Sleep: Idle. 3V.8 MHz untuk Atmega16L – 0 .COM/PELATIHANAVR 2.35 mA – Mode Power-down: < 1 A INFORMASI PELATIHAN PRIVATE AVR DI HTTP://KLIKDISINI.16 MHz untuk Atmega16 Konsumsi daya pada 1 MHz.5.5.7 .9 . 44-lead TQFP. untuk Mikrokontroler AVR ATMega16 tipe PDIP dan TQFP/MLF atau dikenal sebagai SMD.1 mA – Idle Mode: 0.2.5 . 25°C for Atmega16L – Aktif: 1. Standby and Extended Standby I/O and Packages – 32 Programmable I/O Lines – 40-pin PDIP. 10x. masing-masing.5V untuk Atmega16L – 4. Diagram Pin Mikrokontroler AVR ATMega16 tipe PDIP Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Diagram Pin dan Diagram Blok Mikrokontroler AVR ATMega16 Pada Gambar 4 dan 5 ditunjukkan diagram pin. Power-down. and 44-pad QFN/MLF Tegangan kerja – 2.3.

Port C juga digunakan sebagai antarmuka JTAG..1 Port C berfungsi sebagai sebagai port I/O dwi-arah 8-bit. jika ADC-nya tidak digunakan. sebagaimana juga sudah saya kutipkan pada bagian sebelumnya. perhatikan begitu banyaknya fitur-fitur dalam diagram blok tersebut. Diagram Pin Mikrokontroler AVR ATMega16 tipe SMD 2.PC0) 4 Resistor pull up internal berkaitan dengan rangkaian internal pada mikrokontroler AVR yang bersangkutan. Port A berfungsi sebagai masukan analog ke ADC internal pada mikrokontroler ATMega16.Masingmasing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit.PA0) Masukan tegangan catu daya Ground. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .2 Port B (PB7. Penjelasan Singkat Pin-pin pada Mikrokontroler AVR ATMega16 Berikut kita jelaskan secara singkat fungsi dari masing-masing PIN pada Mikrokontroler AVR ATMega16. Port B juga memiliki berbagai macam fungsi alternatif.Masingmasing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit..3.. Masing-masing pin menyediakan resistor pull-up internal4 yang bisa diaktifkan untuk masing-masing bit. sebagaimana ditunjukkan pada Tabel 1.PB0) Port C (PC7. Gambar 5.3.. Vcc GND Port A (PA7.10 . Port B berfungsi sebagai sebagai port I/O dwi-arah 8-bit.. selain itu juga berfungsi sebagai port I/O dwi-arah 8-bit. sebagaimana ditunjukkan pada Tabel 1.Pada Gambar 6 dan 7 ditunjukkan diagram blok untuk Mikrokontroler AVR ATMega16. emang apalagi kalau bukan ground.

walaupun ADC-nya tidak digunakan.11 . biasanya dihubungkan ke Vcc. Luaran dari penguat osilator terbalik Merupakan masukan tegangan catu daya untuk Port A sebagai ADC. Level rendah pada pin ini selama lebih dari lama waktu minimum yang ditentukan akan menyebabkan reset.Port D (PD7.Masingmasing pin menyediakan resistor pull-up internal yang bisa diaktifkan untuk masing-masing bit. Diagram blok Mikrokontroler AVR ATMega16 – Bagian I Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . walaupun clock tidak dijalankan. Jika ADC digunakan sebaiknya dihubungkan ke Vcc melalui tapis lolos-bawah (low-pass filter). Merupakan tegangan referensi untuk ADC Gambar 6. Masukan ke penguat osilator terbalik (inverting) dan masukan ke rangkaian clock internal. sebagaimana ditunjukkan pada Tabel 1.3 Masukan Reset. Port D juga memiliki berbagai macam fungsi alternatif..PD0) /RESET XTAL1 XTAL2 AVCC AREF Port D berfungsi sebagai sebagai port I/O dwi-arah 8-bit.

Tabel 1.. 2 dan 3 ditunjukkan masing-masing alternatif fungsi dari Port B.Gambar 7. Dalam buku saya ini sengaja penjelasan dari masing-masing fungsi tersebut (kecuali antarmuka JTAG) akan dibahas pada saat digunakan. Port C dan Port D. Diagram blok Mikrokontroler AVR ATMega16 – Bagian II Pada Tabel 1. istilah kerennya “Learning by Doing”.. Alternatif fungsi PORTB Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .12 . sehingga Anda bisa memahami langsung dengan mencoba.

termasuk mikrokontroler. Alternatif fungsi PORTD 3.h] > #define [nama1] [nilai]. Dengan demikian seorang programmer dapat menuangkan (menuliskan) algoritmanya dengan mudah. Ada yang menyebutkan bahwa bahasa ini merupakan High Level Language sisanya menyebut sebagai Midle Level Language. 3. #include < [library1. [global variables] [functions] int main(void) // Program Utama { [Deklarasi local variable/constant] [Isi Program Utama] } Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Tabel 2. Struktur Penulisan Bahasa C // Opsional // Opsional // Opsional // Opsional Perhatikan struktur penulisan dalam Bahasa C sebagai berikut. khususnya seri AVR dari Atmel. Pengenalan Bahasa C untuk Mikrokontroler AVR Bahasa C luas digunakan untuk pemrograman berbagai jenis perangkat..13 .1.. Alternatif fungsi PORTC Tabel 3.

2.Keterangan: Opsional artinya boleh ditulis boleh tidak. Pernyataan berkondisi dan Pengulangan if else: digunakan untuk menyeleksi satu atau beberapa kondisi if ( [persyaratan] ) { Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Local variable atau constant hanya dapat diakses oleh fungsi tempat dideklarasikannya. } 3.4. Penulisan : const [nama] = [nilai]. Tipe-tipe data dalam Bahasa C char : 1 byte ( -128 s/d 127 ) unsigned char : 1 byte ( 0 s/d 255 ) int: 2 byte ( -32768 s/d 32767 ) unsigned int: 2 byte ( 0 s/d 65535 ) long: 4 byte ( -2147483648 s/d 2147483647 ) unsigned long: 4 byte ( 0 s/d 4294967295 ) float: bilangan desimal array: kumpulan data-data yang sama tipenya. menyesuaikan kebutuhan – tuliskan pustaka apa saja yang digunakan dan lain sebagainya Penulisan variabel dilakukan di awal agar aman bisa digunakan sepanjang program. //contoh rumus perhitungan suhu 3. harus diakhiri dengan [. Pernyataan Statement atau pernyataan adalah setiap operasi dalam pemrograman.. 3. Deklarasi Variabel dan Konstanta Variabel adalah memori penyimpanan data yang nilainya dapat diubah-ubah.14 . Penulisan : [tipe data] [nama] = [nilai]. . Konstanta adalah memori penyimpanan data yang nilainya tidak dapat diubah. demikian juga dengan deklarasi fungsi-fungsi yang terlibat Silahkan ikuti (baca) terus tutorial ini untuk melihat contoh-contoh program di bagian lain tutorial ini. Pernyataan yang tidak dieksekusi disebut juga komentar.[tipe data input 2]) { [pernyataan_1]. Global variable atau constant dapat diakses di seluruh bagian program. Penulisan : [tipe data hasil] [nama function]([tipe data input 1]. Contoh: suhu=adc/255*100. 3. Fungsi Function atau fungsi adalah bagian program yang dapat dipanggil oleh program utama.6.. [pernyataan_2].5. Pernyataan tidak akan dieksekusi bila diawali dengan tanda [//] untuk satu baris. 3.] atau [}]. Lebih dari 1 baris gunakan pasangan [/*] dan [*/].3.

for ( [nilai awal] .. . case [nilai2]: [statement2]. } else { [statement3]. [operasi nilai] ) { [statement1]. [statement2]. [statement2].15 . } while: digunakan untuk pengulangan (looping) jika dan sealama memenuhi suatu kondisi masih dipenuhi (pengulangan selama benar while ( [persyaratan] ) { [statement1].[statement1]. break... .. [statement2]. .. [statement4]. } while ([persyaratan]) switch case: digunakan untuk seleksi dengan banyak kondisi switch ( [nama variabel] ) { case [nilai1]: [statement1]. } do while: digunakan untuk pengulangan jika dan selama memenuhi syarat tertentu. .7.. Operasi Logika dan Bilangan Biner Operator Logika Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . } 3.. break. } for : digunakan untuk pengulangan dengan jumlah yang sudah diketahui – berapa kali diulang. . .... [syarat] . [statement2]... namun min 1 kali do { [statement1].

dikali atau dibagi dengan nilai di sebelah kanan operator. seperti contoh berikut.. -=. Pengulangan Terus-menerus atau Infinite Looping Apa itu Pengulangan terus-menerus atau infinite looping? Yaitu suatu pengulangan atau kalang (loop) yang dilakuka terus-menerus tanpa batas. dalam kaidah Bahasa C.16 . hingga rangkaian tidak lagi mendapatkan sumber catu daya.9.. -. > <= 3. dikurangi.AND: NOT: OR : Biner AND: OR : XOR : Shift right: Shift left : && ! || & | ^ >> << Lebih besar sama dengan: Lebih kecil/besar: Lebih kecil sama dengan : >= < .8. Yang perlu Anda ingat. maka hasilnya 4. *=. /= % ++. dst 3. bahwa kode-kode program yang dijalankan. maka hasilnya 6 a-jika nilai awal a=5. Sisa pembagian Ditambah 1 (increment) atau dikurangi satu (decrement) Contoh: a = 5 * 6 + 2 / 2 – 1 hasilnya 30 a *= 5 jika nilai awal a=30. adalah yang ada di fungsi utama atau main. -Keterangan Tambah. Operasi Aritmetika Operator +. void main() { // pernyataan-pernyataan program } Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . *. maka hasilnya 33 a++ jika nilai awal a=5. / +=. kurang. kali dan bagi Nilai di sebelah kiri operator ditambah. maka hasilnya 150 a += 3 jika nilai awal a=30.

gunakan free software lainnya yaitu VMLAB yang bisa diunduh di http://amctools.15) Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .com/download.htm (versi terbaru saat ebook ini ditulis adalah v3. index merupakan variabel sehingga nilainya bisa berubah. jika diintegrasikan dengan winAVR GCC6. Jika Anda menginginkan simulasi dengan rangkain dan piranti. maka pengulangan dihentikan. 4. Untuk pertama kali. Mengapa terjadi Infinite Looping ?? Perhatikan pada contoh tersebut.atmel. Perangkat lunak ini bisa Anda gunakan untuk menulis program bahasa mesin (assembly) dan. pernyataan atau instruksi while (1) menyatakan bahwa kondisi SELALU BENAR. Jika menggunakan infinite loop (ada yang mengatakan sebagai pengulangan tak-hingga atau kalang tak-hingga. // infinite loop { // pernyataan2 Index += 1. sehingga selalu dilakukan pengulangan terus-menerus! Coba bedakan dengan contoh berikut. mensimulasi program yang Anda buat7 dan kemudian mendebug program sehingga menghasilkan berkas dengan ekstensi . Nah. // infinite loop { // pernyataan2 } } Untuk keluar dari infinite looping gunakan perintah break.17 . Menggunakan AVR Studio dengan WinAVR GCC AVR Studio 4 merupakan perangkat lunak gratis (free software) yang bisa anda unduh di internet melalui websitenya Atmel5.. Anda harus melakukan instalasi AVR Studio 4 ini ke komputer anda.Program akan dijalankan berurutan dari atas ke bawah dan program tersebut hanya akan dijalankan sekali saja. lakukan instalasi WinAVR GCC terlebih dahulu sebelum AVR Stdui 4.. Cara menginstalnya pun mudah layaknya anda menginstal perangkat lunak komputer 5 6 http://www. bahasa C. maka program yang ada di dalam pengulangan tersebut akan dijalankan berulang-ulang terus-menerus.. void main() { // pernyataan-pernyataan program while (1).0. void main() { // pernyataan-pernyataan program while (index<5).com Unduh WinAVR GCC di 7 Pengertian simulasi disini adalah simulasi dalam tingkat register bukan simulasi dengan piranti (device). jika ingin diintegrasikan dengan WinAVR GCC. jika index lebih dari atau sama dengan 5. } } Program di dalam kurung kurawa setelah instruksi while (index<5) akan dijalankan selama nilai dari index kurang dari 5.hex yang bisa anda unduh kedalam IC mikrokontroller anda. contoh. artinya sama saja kok). gak masalah..

18 . Tampilan awal AVR Studio 4. bahwa dialog ini diaktifkan setiap kali AVR Studio 4 dijalankan.yang lain. Perhatikan tanda panah di Gambar 9. sekarang kita klik New Project. Gambar 8 adalah contoh tampilan utama dari AVR Studio 4. maka dipilih AVR GCC. lakukan pilihan bahasa apa yang akan Anda gunakan.0 – Wizard Dialog Tampilan yang ditunjukkan pada Gambar 8 bukan merupakan tampilan utama dari AVR Studio 4. mengisi Project name (atau nama proyek). Langkah berikutnya adalah. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Okey. hilangkan tanda centang jika Anda tidak ingin mengaktifkan kotak dialog ini di awal program). Kemudian ditampilkan Gambar 11. klik pada tanda panah jika Anda menginginkan lokasi lainnya). Kemudian klik Next jika sudah selesai. sehingga akan ditampilkan pilihan dan isian-isian yang ditunjukkan pada Gambar 9. apakah Atmel AVR Assembler atau AVR GCC? Karena kita akan belajar pemrograman mikrokontroler AVR menggunakan Bahasa C. membuat program baru (lihat pada tanda panah.0 saat pertama kali Anda jalankan. Initial file (nama file utama proyek yang bersangkutan) dan Location (tempat menyimpan proyek Anda. Gambar 8. melainkan kotak dialog wizard yang akan menuntun kita. perhatikan tanda panah di Gambar 10. khususnya.

Halaman 2 kotak dialog wizard saat dipilih AVR GCC Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Gambar 9.19 . Halaman 2 kotak dialog wizard Gambar 10.

Gambar 11.. Jendela utama AVR Studio 4 Okey. perhatikan tanda panah pada Gambar 11. ntar kita terangkan atau berikan penjelasan tentang program ini di halaman-halaman berikutnya. sebagaimana ditunjukkan pada Gambar 12. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Sehingga ditampilkan jendela utama dari AVR Studio 4. dengan editor (perhatikan tanda panah pada Gambar 12) siap digunakan untuk mengetikkan program Anda. dan akhiri dengan klik Finish. ketik saja dulu. misalnya sekarang kita ketikkan program berikut.. Gambar 12.20 . Halaman 3 kotak dialog wizard – memilih mikrokontroler AVR Langkah selanjutnya adalah memilih mikrokontroler AVR yang digunakan.

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . selamat ya! Luar biasa! Lha terus habis gini ngapain? Oya. Wow! Anda sudah berhasil membuat program mikrokontroler AVR Anda yang pertama. 8 Untuk urusan mendownload program (HEX) ke mikrokontroler silahkan merujuk ke artikel saya yang terkait di ??.21 . Kemudian lakukan kompilasi (tekan F7). dan ikuti diskusi-nya.Simpan berkas (program) Anda dengan Ctrl+S atau pilih menu File Save.. Anda langsung bisa mensimulasikan-nya (Ctrl+Shift+Alt+F5) dengan AVR Studio 4 (perhatikan Gambar 13) atau men-download-kan hex-nya ke board mikrokontroler AVR Anda8. jika tidak ada kesalahan akan ditampilkan laporan seperti contoh berikut..

C dan D (masing-masing 8 pin atau 8 bit). B. AVR memiliki beberapa register yang terkait. C atau D menyesuaikan dengan pin masukan/luaran yang digunakan. PORTx dan PINx9. berikut penjelasan masing-masing... 9 Tanda ‘x’ diganti dengan A. Mengeluarkan tingkat tegangan 0 (sekitar 0 volt) atau 1 (sekitar 5 volt). dan Timer/Counter pada Mikrokontroler AVR 5. Masukan/Luaran (I/O) pada Mikrokontroler AVR Mohon silahkan melihat kembali berbagai macam fitur ATMega16 (sebagai contoh mikrokontroler AVR) pada halaman-halaman sebelum ini. Untuk keperlua tersebut. apakah berlogika 0 (tegangan disekitar 0 volt) atau 1 (tegangan sekitar 5 volt maksimal).22 . Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . yaitu DDRx. antara lain: Konsep Masukan/Luaran atau I/O. Kali ini kita akan membahas tentang hal dasar berkaitan dengan konsep I/O atau masukan/luaran pada mikrokontroler AVR: Membaca tingkat tegangan masukan. sekarang kita mulai bahas konsep pemrogramannya. Salah satunya adalah memiliki 4 x 8 saluran masukan dan luaran digital (berlogika 0 atau 1). sampai disini pendahuluan AVR Studio 4-nya. B. totalnya 32 bit atau 32 pin! Masing-masing diberi nama A. Jendela Debugger AVR Studio 4 Okey.Gambar 13.

bisa juga berlogika LOW.23 ..2 bisa berlogika HIGH..2 dibiarkan begitu saja sehingga kondisi logik dari PIN.5.. Gambar 14. Saat tidak ada tegangan dari luar. 5. DDRA= 0xFE. Untuk memahami hal ini. PIN. DDRA= 0x00.2. Perhatikan 0xFE (heksa) = 0b11111110 (biner). perhatikan Gambar 14.1 akan cenderung berkondisi HIGH (logika 1). Sedangkan PIN. semua atau sebagian.. ini artinya logika PIN. PIN. Berikan logika 0 (nol) pada bit yang terkait agar dijadikan sebagai masukan atau input. maka inilah yang di maksud dengan pullup. Karena jika di pullup. maka register ini berfungsi sebagai penentu apakah kondisi pin yang terkait di-pullup atau Floating. Begitu juga jika dikonfigurasi sebagai luaran.7 akan digunakan sebagai luaran. Register PORTx Sebagaimana dijelaskan sebelumnya. setiap bit nilai biner mewakili Pin-Pin pada PortA. maka perintahnya. dikhawatirkan kondisi logik PIN tersebut mengganggu kondisi logik pin-pin sensor yang bersangkutan. perhatikan baik-baik konversi biner ini. Misal PORTA semua bit akan digunakan sebagai masukan. B.2 sampai PORTA. //seluruh pin-pin pada Port A digunakan sebagai input Misalnya lagi. Kondisi pullup pada suatu PORT Penjelasan: Jika PIN.1. dikonfigurasi sebagai masukan. maka register ini menentukan kondisi pin yang terkait terbaca HIGH atau LOW. Register DDRx Digunakan untuk menentukan apakah sebuah pin pada sebuat PORT (A.1 dihubungkan ke VCC (tegangan 5 Volt) melalui resistor (R). Kondisi floating biasanya diperlukan saat PIN sebuah mikrokontroler dihubungkan ke suatu sensor. PORTA.0 akan dijadikan masukan sedangkan PORTA. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .2 mengambang (floating). C atau D) sebagai masukan atau luaran atau disebut sebagai arah (direction) dari pin yang bersangkutan: Berikan logika 1 (satu) pada bit yang terkait agar dijadikan sebagai luaran atau output. maka untuk mengaturnya kita gunakan perintah. jika sebuah PORT.2 begitu rentan terhadap pengaruh disekitarnya.

Contoh rangkaian aktif rendah tombol pushbutton. jika tidak ditekan akan terbaca HIGH dan jika ditekan akan terbaca LOW.Perhatikan contoh-contoh berikut.. DDRB= 0x00. Ini artinya seluruh pin-pin PORTB dijadikan masukan. pushbutton satu ujung dihubungkan ke pin yang terkait sedangkan ujung lainnya di-GND-kan. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .. Register PINx Digunakan untuk membaca masukan pada pin yang bersangkutan... INGAT! Ini bukan satu-satu-nya cara membuat rangkaian masukan dengan pushbutton.0 sampai PORTB. DDRA=0x00.7 dikonfigurasi floating. akan dijelaskan pada contoh program di halaman-halaman berikutnya..4 sampai PORTB. Ini berarti seluruh pin-pin pada PORTA dijadikan sebagai masukan dan di-pullup. Gunakan contoh rangkaian pada Gambar 15 dan perhatikan tanda panah.3 di-pullup... he he he. tetapi ini cara yang mudah dan murah meriah. jika menggunakan tombol atau pushbutton. dengan konfigurasi 0x0F (0b00001111) atau PORTB.24 . 5. artinya pada rangkaian yang terkait. PORTB=0x0F. Contoh lainnya. sedangkan PORTB. Gambar 15.3. PORTA = 0xFF..

sedangkan contoh penempatan LED dan pushbutton (percobaan-3) pada AVR Trainer v2. Percobaan-1: LED berkedip-kedip Percobaan pertama ini menggunakan rangkaian yang ditunjukkan pada Gambar 16 10. Penempatan LED dan Pushbutton pada AVR Trainer v2. Latihan Tahap-I 6.0 ditunjukkan pada Gambar 17. Rangkaian LED pada PORTB mikrokontroler ATMega16 Gambar 17. Gambar 16.0 selengkapnya ada di cover dari ebook ini! Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .25 .6.1.0 10 Gambar AVR Trainer v2.

6. diawali dengan inisialisasi port (baris 15). dengan cara memberikan logika 1 (baris 18). penempatan buzzer pada AVR Trainer v2. Program utama ditunjukkan pada baris 13 – 23. 11 Silahkan membaca artikel saya yang menjelaskan tentang masalah sistem clock pada mikrokontroler AVR di http://agfi. Baris 7. kemudian melakukan penundaan 1 detik (baris 19). Penjelasan: Baris 1 – 4 merupakan deklarasi untuk definisi kristal yang digunakan. kemudian dilakukan pengulangan tak-hingga (baris 16). kemudian mematikan LED dengan logika 0 (baris 20) dan diakhiri dengan penundaan 1 detik (baris 21). sekarang buzzer juga akan dibunyikan. Percobaan-2: Membunyikan buzzer! Masih menggunakan rangkaian yang sama seperti sebelumnya.ac.0592MHz11. Gambar keseluruhan dari AVR Trainer v2. Demikian seterusnya.Listing program ditunjukkan sebagai berikut.2.10 merupakan subrutin untuk inisialisasi PORTB sebagai luaran (baris 9).php/2009/12/mengenal-system-clock-pada-mikrokontroler-avr/ Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Perhatikan bahwa DDRB diberi logika 1 semua (=0xFF atau 255 desimal)..id/blog/index.26 . Pustaka apa saja yang digunakan (baris 2 dan 3) dan alias untuk PORTB sebagai led (baris 4).staff..0 bisa dilihat di cover ebook ini. yaitu 11. LED akan berkedip-kedip dengan tundaan 1 detik.0 dtinjukkan pada Gambar 18.ugm. Yang dilakukan adalah menyalakan LED.

Buzzer pada AVR Trainer Board v2.0 Perhatikan listing berikut ini.7 dengan nilai logika 1 (baris 8) dan logika 0 (baris 9). Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha ... Baris 8 dan 9 digunakan untuk mendeklarasikan suatu instruksi untuk memberikan nilai pada PORTA.27 . Penjelasan: Baris 2 – 5 sama seperti penjelasan pada percobaan-1.Gambar 18.

. silahkan Anda pelajari dengan seksama. khusus tombol didefinisikan sebagai register PIND.3. jika sudah paham silahkan kembali lagi kesini. caranya bagaimana? Anda bisa langsung memberikan instruksi DDRD = 0b00001100 atau DDRB = 0x0C.28 . Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Ada 2 tombol.. Penjelasan: Baris 1 .4 sudah jelas khan? Belum? Ya monggo.. Percobaan-3: Aplikasi Pushbutton untuk ON/OFF LED Kali ini menggunakan rangkaian pushbutton yang terhubung ke PORTB (ditunjukkan pada Gambar 15.Selebihnya adalah program utama (baris 19 – 31).lain untuk mematikan LED. satu untuk menyalakan LED dan yang . berikut listing programnya. silahkan lihat dulu atau baca lagi penjelasan dari percobaan-percobaan sebelumnya. ‘satu’ dan ‘dua’. yaitu digunakan untuk membaca masukan. Artinya untuk memberikan luaran melalui register PORTx sedangkan untuk membaca masukan gunakan register PINx.. Jika Anda perhatikan. yaitu ‘tombol’. o PORTD. 6. PORTB semuanya dijadikan sebaga saluran luaran. sehingga harus diberi logika ‘0’.3 digunakan sebagai saluran masukan. sebagaimana janji saya sebelumnya register PINx saya jelaskan disini. Perhatikan sekarang pada rutin init_devices() yang berbeda dengan sebelumnya (baris 11 – 18): o DDRB=255 sama seperti sebelumnya.2 dan PORTD. Baris 6 – 8 digunakan untuk mendeklarasikan 3 macam alias.

Timer 16-bit sama seperti timer 8-bit. adalah proses memeriksa apakah tombol yang dihubungkan ke PIND.2 ditekan? Atau justru tombol di PIND. o Dilanjutkan dengan mematikan semuan led.2 (tanda ‘~” artinya NOT). o Karena rangkaian pushbutton menggunakan konfgurasi active low12. sebagaimana dituliskan pada baris 24 hingga 28.29 . OC1B dan ICF1. hanya saja nilai maksimalnya mencapai 0xFFFF.3.. TCCR1B dan juga beberapa bit-bit terkait seperti: TOV1. maka kedua pin tersebut diaktifkan pullup-nya. terlihat adanya beberapa register yang terkait. antara lain (dari atas): TCNT1. Program utama dimulai dari baris 20 hingga 29: o Diawali dengan inisialisasi device pada 22. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . TCCR1A.3 yang ditekan: Jika tombol yang ada di PIND. ICR1. Sumber clock atau pemicau dapat dibangkitkan dari sinyal eksternal maupun internal.3.}. Pada ebook ini akan dibahas mengenai Timer1. perhatikan baris 16 dan 17. 12 Jika ditekan bernilai logika ‘0’. OCR1A. 16-bit. Pada Gambar 19 ditunjukkan diagram blok dari Timer1 16-bit. baris 23. maka kita harus mempelajari terlebih dulu register-register yang berkaitan dengan Timer1 karena di register itulah tempat pengaturan Timer/Counter1 agar bisa bekerja.. Timer/Counter pada Mikrokontroler AVR Timer/Counter dalam mikrokontroler merupakan fasilitas yang salah satu fungsinya dapat digunakan sebagai pewaktu atau cacahan suatu event. Timer0 dan Timer2 memiliki kapasitas 8-bit sedangkan Timer1 memiliki kapasitas 16-bit.2 dan PORTD |= (1<<3) untuk PORTD.3 ditekan maka led dimatikan semua (baris 27)! o Mudah bukan? 7.2 ditekan maka led dinyalakan semua (baris 26). OC1A. OCR1B.DDRD &= ~(1<<2) untuk PORTD. Mikrokontroler ATMega16 memiliki 3 buah timer yaitu Timer0. perhatikan masing-masing baris 14 dan 15. Jika sumber sinyal pemicu atau clock berasal dari internal maka Timer/Counter berfungsi sebagai pewaktu atau timer dan jika sumber sinyal berasal dari luar maka disebut sebagai pencacah atau counter. sebaliknya Jika tombol yang ada di PIND. dan DDRD &= ~(1<<3) untuk PORTD. Apa yang dimaksud timer 8 bit dan 16 bit? Timer 8-bit adalah pewaktu yang bisa mencacah atau menghitung hingga maksimal nilai 0xFF heksa (dalam biner = 11111111). o Yang diulang-ulang terus menerus menggunakan instruksi for (. Timer1 dan Timer2. dan untuk dapat menjalankan atau menggunakan Timer1 ini. menggunakan instruksi masing-masing PORTD |= (1<<2) untuk PORTD.) {.

merupakan tempat pengaturan clock yang intinya agar Timer/Counter1 bisa bekerja.30 . Gambar 20.Gambar 19. Register TCCR1B Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . ditunjukkan pada Gambar 20. Diagram blok TIMERn (n diganti dengan 1) Register Timer1 yang akan kita libatkan di awal ini adalah: TCCR1B TCNT1 TIMSK TIFR Register TCCR1B. maka register TCCR1B ini jangan sampai diisi dengan 0x00 (dikosongkan).

Kondisi overflow juga bisa digunakan untuk menjalankan interrupsi. Register TIMSK. Okey! Register TCNT1 merupakan register pencacah. OCIE1A. itu artinya CS12=0. perhatikan Gambar 19. OCIE1B dan TOIE1 – masing-masing bit 5. Biasanya sumber detak yang biasa kita pakai berasal dari XTAL.31 . Timer/Counter-2: OCIE2 dan TOIE2 – masing-masing bit 7 dan 6. 1 dan 2 juga nol semua. bisa tepi naik atau tepi turun. CS11 dan CS10) ini dulu yang kita perhatikan. Apa yang terjadi jika semua bit di TCCR1B nol semua? Artinya bit 0. Register ini akan mencacah naik dari 0x0000 sampai nilai max 0xFFFF kemudian di-reset kembali lagi ke 0x0000.Kok tidak boleh berisi 0x00 atau semua bit pada TCCR1B nol semua? Coba perhatikan Tabel 1. 3 dan 2. Timer/Counter-1: TICIE1. perhatikan Gambar 22). merupakan register tempat pengaturan interupsi overflow dari Timer/Counter1 yang ingin diaktifkan atau tidak.. Perhatikan juga bit-bit lain yang berkaitan dengan masing-masing Timer: Timer/Counter-0: OCIE0 dan TOIE0 – masing-masing bit 1 dan 0. semua bisa diatur sesuai atau mengikuti aturan pada Tabel 1. sehingga mengakibatkan bit TOV1 pada register TIFR akan di-set (diberi logika 1). Besarnya maksimum sama dengan XTAL yang digunakan dan minimum XTAL/1024. Nah nilai pembagi atau 1024 inilah yang disebur nilai praskalar atau prescaler. yang ditunjukkan pada Gambar 21. Sumber clock bisa berasal dari internal mulai dari prescaler 1 hingga 1024 atau bisa juga dari sumber eksternal. Dengan memberikan logika 1 pada bit TOIE1 (bit-2 pada TIMSK). CS11=0 dan CS10=0 dan itu menurut Tabel 1 “No clock source (Timer/Counter stopped)” Timer berhenti bekerja! Atau tidak bekerja!! Tabel 1. Overflow (melimpah) terjadi saat kondisi dari 0xFFFF ke 0x0000. maka interupsi Timer/Counter1 aktif dengan catatan bit interupsi global diaktifkan (bit-7 di register Status SREG. Jika sumbernya dari dalam (internal) pencacahan dilakukan pada saat tepi naik. Konfigurasi sumber clock atau detak pada TCCR1B Tiga bit (CS12. Apa nilai praskalar itu? Timer1 (juga timer/counter lainnya) membutuhkan sumber detak atau clock source.. artinya nilai di dalamnya akan dinaikkan setiap kali ada pemicu. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . 4.

sebagaimana ditunjukkan pada Gambar 23.32 .Gambar 21. Gambar 23. Pada Timer/Counter1. selengkapnya silahkan merujuk datasheet ATMega16.(waktu *( XTAL / praskalar) ) Waktu waktu yang diinginkan XTAL frekuensi kristal yang dipakai praskalar nilai prescaler (lihat penjelasan berikut ini) 13 Hanya saya tuliskan yang terkait saja. gunakan persamaan berikut: TCNT1 = (1+0xFFFF) . Register TIMSK Gambar 22 Register SREG Penjelasan register SREG13: I – Global Interrupt Enable: digunakan untuk mengaktifkan interupsi menyeluruh (global). digunakan sebagai indikator atau penanda apakah sudah terjadi overflow atau belum. Register TIFR Persamaan untuk mencari waktu jeda yang ingin digunakan adalah berdasarkan nilai awal yang harus dimasukkan ke dalam TCNT1. kondisi overflow ditandai dengan logika 1 pada bit TOV1 (bit-2) pada register TIFR. T – Bit copy storage H – Half Carry Flag S – Sign bit V – Two’s Complement Overflow Flag N – Negative flag Z – Zero flag C – Carry flag Sedangkan register TIFR (Timer/Counter Interrupt Flag Register). Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .

techideas.(1detik*10800) 65536-10800 54736 (desimal) D5D0 (heksadesimal) Alternatif lain. TCNT1 = = = = = (1+65535)-(1detik * (11059200/1024)) 65536 .200Hz.nz.059. Waktu yang diinginkan 1 detik.33 . Anda bisa menggunakan programnya AVR Timer yang bisa diunduh melalui website http://www. Perhatikan hasilnya (Gambar 24). d. Nilai XTAL-nya 11. 2..co. Contoh penggunaan ATMega Timer Calculator – TIMER1 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .7. Okey.0592MHz atau ditulis 11. Pilih nilai prescale sebesar 1024. Bedakan dengan Percobaan-1 dan 2 yang hanya menggunakan fungsi delay yang sama sekali tidak menggunakan fasilitas Timer/Counter.nz.. Percobaan-4: Menggunakan Timer1 Menyalakan dan mematikan LED pada PORTB dengan jeda 1 detik menggunakan Timer1.200 Hz.techideas. b. sekarang kita cari dulu nilai TCNT1-nya. Lakukan pengisian beberapa nilai sebagaimana ditunjukkan pada Gambar 23. langkah selanjutnya adalah menjalankan AVRTimer1Clac. Gambar 24. Nilai praskalarnya 1024.1. c. menyesuaikan dengan kebutuhan yang telah kita tetapkan tadi: a.(waktu *( XTAL / prescaler) ).059.. Isikan Timer1 Interrupts per second (berapa kali interupsi/detik) sebesar 1 kali.exe untuk perhitungan atau kalkulasi Timer1.co.. Setelah mengunduh program AVR Timer dari http://www. Frekuensi kristal: 11. Langkah-langkah penggunakan program ini kita jelaskan berikut: 1. maka Gunakan TCNT1 = (1+0xFFFF) .0592MHz atau 11. jadi.

yang lainnya sama seperti penjelasan percobaanpercobaan sebelumnya: o Baris-15 merupakan pengisian register TCCR1B agar digunakan nilai prescale sebesar 1024. o Baris-17 menunggu hingga terjadi overflow – ini merupakan proses pooling bukan interupsi. Cukup saya jelaskan saja subrutin delay1detik().0592MHz dibagi dengan 1024.Listing programnya. o Jika sudah terjadi overflow atau melimpah... maka flag TOV1 di-reset (baris 18) dan Timer1 dimatikan (baris 19). Penjelasan: Program ini pada dasarnya sama seperti percobaan-1.34 . sekaligus mengaktifkan Timer1.736 (desimal) atau 0xD5D0 (heksadesimal). yaitu mengisi dengan nilai awal 54. o Baris-16 memberikan nilai awal pada TCNT1 sesuai dengan perhitungan atau kalkulasi yang telah dilakukan sebelumnya. Gampang tho!? Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . hanya saja sekarang tundaan atau jeda menggunakan fasiltas Timer1 yang ada di ATMega16. artinya nilai kristal 11.

Gambar 25.35 . Untuk 10 milidetik diisi 100 kali interupsi per detik.7. Contoh penggunaan ATMega Timer Calculator – TIMER2 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .2. Percobaan-5: Menggunakan Timer2 Okey sekarang saya tunjukkan contoh lainnya menggunakan Timer2 dan penggunaan AVRTimer2Calc ditunjukkan pada Gambar 25.

cara paling gampang untuk mendapatkan tundaan 1 detik atau 1..20 desimal..... perhatikan pada baris 14....16 kali subrutin delay10ms()? Perhatikan baris 24 – 27.19 heksadesimal atau ...15..... hanya saja digunakan fasilitas Timer2 untuk melakukan penundaan 1 detik.. 14 15 Jawaban: 2 (dua) Jawaban: delay1detik() 16 Jawaban: 100 (seratus) 17 Jawaban: 8 (delapan) 18 Jawaban: 1024 19 Jawaban = 94 20 Jawaban = 148 (seratus empat puluh delapan) Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha ...... Register TCCR2 o Baris 16 digunakan untuk menunggu terjadinya ..18 atau nilai clock dibagi dengan nilai prescale tersebut. Kemudian perhatikan juga Tabel 2 untuk semua kemungkinan nilai CS22....14 subrutin yaitu delay10ms() dan .....36 . Anda perhatikan pada 12 hingga 28: o Terdapat .17 bit.. 1 dan 2 pada Gambar 23. maka nilai register TCNT2 (pada baris 15) diberi nilai sebesar .... Timer2 merupakan timer .... adalah sebesar ... artinya dengan kemampuan seperti itu tidak bisa dilakukan langsung tundaan 1 detik.... o Mengapa kok tidak langsung dilakukan tundaan 1 detik? Mengapa harus melakukan pengulangan ........ Gambar 26...21 pada Timer2.. o Ingat..000 milidetik adalah mengulang 100 kali tundaan 10 milidetik... mengikuti Tabel 2..Penjelasan (waktu ngisi titik-titik jangan lihat kuncinya dulu ya): Percobaan-5 ini sebenarnya juga mirip/sama dengan percobaan-4 (sebelumnya)... o Nilai prescale yang digunakan.... o Agar terjadi penundaan sekitar 10 milidetik.... kemudian bit overflow tersebut direset (baris-17). o Perhatikan register TCCR2 bit 0.... CS21 dan CS20..

.o Timer2 kemudian dihentikan dengan memberi nilai . parameter-nya sama seperti Timer2. Percobaan-6: Menggunakan Timer0 Bagaimana kalau menggunakan Timer0? Pengaturan pewaktuan menggunakan AVRTimer0Calc ditunjukkan pada Gambar 27.. Tabel 2....22 pada register TCCR2..3. Contoh penggunaan ATMega Timer Calculator – TIMER0 21 22 Jawaban: overflow Jawaban: 0 (nol) atau 0x00 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Gambar 27. Untuk penundaan 10 milidetik sebanyak 100 kali. Konfigurasi sumber clock atau detak pada TCCR2 7...37 .

...38 . 8. Komunikasi Serial Komunikasi serial pada mikrokontroler AVR menggunakan fasilitas USART singkatan dari Universal Syncronous and Asyncronous Receiver Transmitter sangat handal dan berguna dalam berbagai aplikasi yang berhubungan antarmuka komunikasi serial dengan PC atau sesama Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Berikut listing programnya.. Penjelasan: Silahkan tulis beberapa paragraf yang menjelaskan program ini – mengikuti kaidah-kaidah yang sudah dijelaskan sebelumnya.

Gambar 28. Diagram blok fasilitas komunikasi serial AVR Berikut fitur-fitur komunikasi serial atau USART pada ATMega16: • • • • • • • Full Duplex Operation (Independent Serial Receive and Transmit Registers) Asynchronous or Synchronous Operation Master or Slave Clocked Synchronous Operation High Resolution Baud Rate Generator Supports Serial Frames with 5. or 9 Data Bits and 1 or 2 Stop Bits Odd or Even Parity Generation and Parity Check Supported by Hardware Data OverRun Detection Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Diagram bloknya ditunjukkan pada Gambar 28. misalnya program pemantauan suhu ruangan sekaligus pengontrolan AC atau kipas menggunakan antarmuka program PC Visual Basic atau Delphi. 6.0 (RXD) dan PORTD.mikrokontroler AVR atau bahkan mikrokontroler lain yang memiliki fasilitas komunikasi serial.1 (TXD). 8.39 . perhatikan pin-pin yang terkait pada Gambar 4 dan 5. dan lain-lain. Jalur komunikasi serial pada mikrokontroler AVR ATMega16/32/8515 terdapat pada pin PORTD. 7.

8. Gambar 29. Diagram blok logik penghasil detak untuk komunikasi serial Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . yaitu terdapat 4 (empat) mode penghasil detak. Double Speed asynchronous. yaitu: • • • • Normal asynchronous. and RX Complete Multi-processor Communication Mode Double Speed Asynchronous Communication Mode Pembahasan komunikasi serial USART dipisahkan menjadi 3 bagian yaitu Penghasil detak (clock generator).40 . TX Data Register Empty.1. dan Slave synchronous. Pada Gambar 29 ditunjukkan diagram blok logik penghasil detak yang terkait dengan beberapa register seperti UBRR (16-bit: UBRRL dan UBRRH) dan lain-lain.Clock Generator Penghasil detak atau Clock Generator tergantung pada mode data transfer. Master synchronous. Mengirim data (Data Transmit) dan Menerima data (Data Receive).• • • • • Framing Error Detection Noise Filtering Includes False Start Bit Detection and Digital Low Pass Filter Three Separate Interrupts on TX Complete. Penghasil Detak .

Misalkan digunakan frekuensi osilator untuk mikrokontroler sebesar 8 MHz (atau 8. maka nilai seseungguhnya dari baudrate adalah 9615 (bukan 9600). jika dibagi dengan 9600 diperoleh 1.com/web/AtmelAVR). maka sebuah clock dibangkitkan. Dengan error tersebut USART masih dapat bekerja tetapi tidak sempurna.000.41 .esnips.Kebanyakan yang digunakan adalah Asynchronous Internal Clock Generator.0016 dan karena itu error-nya adalah 0. Dengan nilai UBRR =51. setelah dihitung menggunakan persamaan diatas diperoleh nilai UBRR sebesar 51.083333333. program ini juga bisa digunakan sebagai alternatif dari AVR Timer Calculator yang telah dijelaskan sebelumnya.net/avrbaudcalc. kita bulatkan menjadi 51.000 Hz) dan baudrate yang diinginkan adalah 9600.16%. Anda bisa juga memanfaatkan website http://www. maka persamaan yang digunakan adalah BAUD = fclk/(8(UBRR+1)) Informasi detil tentang clock generator ini bisa dilihat di datasheet AVR ATMega16. Tampilan awal ditunjukkan pada Gambar 30. Register penentuan baudrate atau kecepatan komunikasi serial atau UBRR digunakan dimana nilai yang diberikan adalah untuk down-counter.wormfood. Setiap kali nilai down-counter mendekati nol.php untuk menghitung secara online. jika menggunakan mode Double Speed Asynchronous. Contoh penggunaan AVR Assistant v1. Anda bisa menghitung berapa nilai UBRR yang sesuai dengan baudrate yang diinginkan mengacu pada osilator atau kristal yang digunakan oleh mikrokontroler menggunakan persamaan BAUD = fclk/(16(UBRR+1)) Persamaan ini digunakan untuk Asynchronous Normal Mode. Gambar 30. Anda bisa menggunakan AVR Assistant yang dibuat oleh Mike Henning (bisa Anda unduh program tersebut di http://www.3 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .

42 . sedangkan bagian kanan digunakan untuk mengatur Timer0. Perhatikan perbedaan error %-nya. dengan kristal 8MHz. hasil perhitungannya ditunjukkan pada Gambar 31 kiri. Contoh penggunaan AVR Assistant v1. 1 dan 2 (jadi satu antarmukanya). sedangkan untuk kristal 7.372MHz ditunjukkan pada Gambar 31 kanan. ditunjukkan pada Gambar 32. Gambar 31.Penjelasan Gambar 30: • • Bagian kiri digunakan untuk mengatur baudrate. dengan frekuensi kristal 11.3 untuk dua frekuensi MPU berbeda • Untuk contoh pengaturan Timer1 agar menunda interupsi terjadi 100 kali per detik (seperti kasus timer yang dijelaskan sebelumnya). Contoh untuk baudrate 9600. Gambar 32. Contoh penggunaan untuk TIMER1 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .059MHz.

Untuk mengatasi ketidak-akuratan baudrate tersebut.372MHz dan 11.43 . Nilai-nilai UBRR dengan 8MHz.372MHz atau 11.php Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .0592MHz. Tabel 3. biasanya digunakan kristal dengan frekuensi 7. 23 Hasil perhitungan dari http://www. Perhatikan informasi selengkapnya untuk nilai UBRR di Tabel 3. Pemanggilannya menggunakan instruksi initserial(MYUBRR).0592MHz23 Berikut adalah subrutin yang digunakan untuk menghitung nilai UBRR pada winAVR GCC Variabel MYUBRR digunakan untuk menyimpan nilai UBRR setelah dilakukan perhitungan sebagaimana ditunjukkan pada listing tersebut. 7.wormfood.net/avrbaudcalc.

Untuk mengatur berapa stop bit. Gambar 34. Register UCSRB Saat bit TXEN diberi logika 1. mode kerja dan format data sebelum mengirimkan data-data melalui port serial. UCSZ1 dan UCSZ0 (di register UCSRC) mengikuti Tabel 4. artinya USART Transmitter diaktifkan. dengan demikian pin TxD pada PORTD. Jumlah data bit yang ditentukan UCSZ2.0 Jika Anda menggunakna mode sinkron. digunakan USBS pada register UCSRC. Lakukan terlebih dahulu inisialisasi baudrate. perhatikan register UCSRB yang ditunjukkan pada Gambar 33. Gambar 33. sedangkan mengatur lebar bit data digunakan UCSZ2 (di register UCSRB).1 hanya bisa digunakan untuk pengiriman data pada komunikasi serial.0) hanya boleh digunakan untuk mengirimkan detak atau clock transmisi. Berikut adalah subrutin yang digunakan untuk mengaktifkan UASRT Transmitter pada winAVR GCC. maka pin XCK (PORTB.44 . Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .8..2. Register UCSRC Tabel 4. Mengirim Data – USART Transmitter Pengirim USART atau UASRT Transmitter dapat diaktifkan dengan memberikan logika satu di bit TXEN yang terdapat dalam register UCSRB pada bit-3.

Namun sebelum menuliskan atau mengisi register UDR. data dikirimkan dengan cara menuliskan sebuah kode karakter ke register UDR. maka URSEL harus diberi logika 1 untuk mengakses UCSRC dengan instruksi (1<<URSEL). Berikut adalah subrutin (b dan uart_putc()) yang digunakan untuk mengirimkan sebuah data (karakter) Penjelasan: Pada subrutin pertama. perhatikan baris 18. uart_putc().Penjelasan: Perhatikan baris 12 (selain TXEN=1. perhatikan Gambar 35. maksudnya jika UDRE=1 berarti UDR-nya kosong dan siap mengirim data berikutnya. perhatikan baris 19.45 . ditunggu dulu nilai bit UDRE (bit5) pada register UCSRA (Gambar 36) agar bernilai 1 (satu). Format datanya 8-bit data (lihat Tabel 4) dengan instruksi (3<<UCSZ0). sekaligus untuk mengakifkan UASRT Receiver di RXEN=1). Karena UCSRC menggunakan lokasi yang sama dengan UBBRH. 1-bit stop dengan instruksi (1<<USBS). Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .

Jika RXC bernilai 1 artinya UDR Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . perhatikan kembali Gambar 33. dengan demikian pin RxD pada PORTD. USART Receiver dapat kita aktifkan dengan memberikan logika 1 pada bit RXEN yang terdapat dalam register UCSRB. perhatikan terjadinya pengulangan subtrutin uart_putc() pada baris 27 dan 28. Berikut adalah cara yang digunakan untuk menerima data (karakter). Register UCSRA Subrutin kedua. yaitu dengan memeriksa apakah bit RXC (bit ke 7) pada register UCSRA bernilai 1? Perhatikan Gambar 36 dan baris 50. yaitu uart_puts() digunakan untuk mengirimkan serangkaian data (tidak hanya satu karakter saja).46 .Gambar 35. artinya USART Reciever diaktifkan. Menerima Data – USART Receive Untuk menerima data.3. 8. Register UDR Read dan Write Gambar 36.0 hanya bisa digunakan untuk penerimaan data pada komunikasi serial. Saat bit RXEN diberi logika 1. ada di dalam program utama (main()): Untuk menerima data caranya mudah.

sehingga setelah terdeteksi RXC=1. Percobaan-7: Komunikasi Serial Percobaan komunikasi serial ini bertujuan menampilkan dua kalimat pembuka dan mengirim kembali apapun yang diketikkan melalui terminal serial (hasil-nya ditunjukkan pada Gambar 37). 8.47 . misalnya. sebagaimana ditunjukkan pada baris 52.4. maka karakter “a” ini dikirim kembali ke serial. perhatikan baris 52 dan 53 pada listing program berikut: Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . jika diketik “a”. dilanjutkan dengan menyalin isi UDR ke suatu variabel (pada contoh digunakan tempserial).berisi data yang diterima secara serial.

Gambar 37.0 ditunjukkan pada Gambar 38. Ragkaian untuk komunikasi serial dan contoh running hasil aplikasi Konektor komunikasi serial pada AVR Trainer Board v2. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .48 .

antarmuka I2C (misalnya EEPROM eksternal. Koneksi serial RS232 pada AVR Trainer Board v2. akses EEPROM internal. antara lain interupsi.ac.id.com/pelatihanavr 24 Waktu minimal pelatihan. ADC dan lain sebagainya.Gambar 38. Silahkan ikuti pelatihan mikrokontroler AVR di http://klikdisini.selesai --- INFORMASI TENTANG PELATIHAN MIKROKONTROLER Hanya dengan minimal 5 JAM24 (karena langsung dibimbing oleh Pakarnya) Anda bisa memahami konsep dasar dan membuat aplikasi mikrokontroler AVR! Ditambah dengan konsultasi GRATIS Anda bisa meningkatkan kemampuan Anda dalam mikrokontroler AVR! Anda juga bisa menghasilkan INCOME TAK TERBATAS! Dengan memanfaatkan kemampuan Anda di bidang mikrokontroler! Pelatihan yang saya selenggarakan memberikan konsep dasar dan tip/trik pembuatan aplikasi mikrokontroler AVR! Informasi & pendaftaran silahkan akses ke http://klikdisini.0 9. terima kasih! --. Anda juga bisa menambah jumlah jam jika masih merasa kurang – tingkat lanjut! Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .49 . Setelah Ini kemana? Masih banyak yang harus dipelajari selain I/O dasar dan Timer/Counter pada Mikrokontroler AVR.com/pelatihanavr! Apa saja yang akan Anda dapatkan dalam pelatihan tersebut? Silahkan klik link tersebut! Catatan: Saran dan masukan untuk ebook ini silahkan kirim email ke agfi68@ugm. dan lain sebagainya). RTC DS1307.

INFORMASI PERANGKAT KERAS UNTUK BELAJAR MIKROKONTROLER AVR

Anda mengalami kesulitan dalam belajar Mikrokontroler AVR?? Bingung memilih/menentukan hardware yang bisa dipakai dengan mudah untuk belajar Mikrokontroler AVR? Pengin yang simpel, murah dan komplit untuk belajar Mikrokontroler AVR?
Kekhawatiran Anda akan berakhir! Kesulitan Anda akan segera teratasi Apa yang Anda cari akan segera ditemukan! Dapatkan PENAWARAN ISTIMEWA selama promosi! Dapatkan informasi selengkapnya di http://klikdisini.com/jualavrbasic

Saya tersugesti, klo baca bukunya pak agfi, saya baru bisa paham... padahal saya juga uda punya buku mikro yg lain, spt nya gak enak, klo gak baca punya pak agfi, aneh memang... Teguh Budiman Waduh, emang sip banget penjelasannya pak Agfi, salah satu yang saya kagumi dari pak Agfi adalah kalo pak Agfi njelasin sesuatu pasti dengan ringkas, padat, berisi, to the point dan mudah di mengerti.. saya juga senang baca buku-bukunya pak Agfi lho, nah.. itu adalah tanda-tanda dari dosen, entrepreneur dan sekaligus penulis yang profesional..| salut dah buat pak Agfi.. Seandainya sebagian besar dosen bisa aktif seperti pak Agfi, pasti Indonesia makin maju neh.. Herlambang (http://indomicron.co.cc)

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha - 50

Bonus-1: Hasil kompilasi Flowcode AVR 3.0 yang unik?!
Kali ini saya coba-coba menggunakan perangkat lunak Flowcode AVR versi 3.025 (tampilan awal ditunjukkan pada Gambar 1.1) untuk melakukan kompilasi program mikrokontroler AVR hanya dengan menggambarkan diagram alir atau flowchartnya. Apaan? Cukup pake diagram alir? Yup betul!

Gambar 1.1 Baiklah, untuk percobaan, saya buka berkas baru dengan tampilan seperti Gambar 1.2. Tampak awal dari diagram alir dan daftar pin dari mikrokontroler AVR ATmega32 yang saya gunakan sebagai contoh kali ini.

Gambar 1.2
25

Pada saat ebook ini ditulis sudah tersedia versi 4.3.3.6, silahkan di-unduh di http://www.4shared.com/file/kTQ_NYyL/Flowcode_AVR_Professional_4366.html dan jika suka silahkan dibeli.

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha - 51

Selanjutnya, singkat cerita saya buat sebuah diagram alir yang intinya menghidupan dan mematikan LED pada PORTA secara bergantian dengan selang 500 milidetik atau 0,5 setik (perhatikan Gambar 1.3). Hasilnya LED akan berkedip-kedip dengan tundaan 500 milidetik (tampilan simulasi pada Gambar 1.4).

Gambar 1.3

Gambar 1.4 (kiri LED mati, kanan LED menyala) Justru yang saya ulas disini adalah hasil kompilasi yang aneh atau barangkali unik atau barangkali itulah ciri khas dari Flowcode AVR? Sebagaimana ditunjukkan pada Gambar 1.5 dan Gambar 1.6.

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha - 52

5 keunikan terjadi karena inisialisasi PORTA yang seharusnya cukup sekali saja dilakukan justru dilakukan pada tiap instruksi untuk mengirimkan nilai 0 (LED mati semua) dan 255 (LED hidup semua). perhatikan tanda panah pada Gambar 1.Gambar 1. Mengapa tidak sekali saja yach? Mungkin untuk jaga-jaga kali yaaa…?? Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .5.53 .5 Pada Gambar 1.

Gambar 1.6 Pada Gambar 1.6 terjadi pengulangan instruksi yang sama persis (lihat tanda panah), kenapa tidak dibuat subrutin-nya skalian yach?? Kesimpulannya: Enakan pake ASM atau Native C langsung untuk membuat program mikrokontroler AVR, agar kita bisa langsung menulis kode-kode secara efisien dan efektif. Bagaimana dengan BASCOM AVR? Boleh-boleh saja, cuman tetap harus hati-hati…
Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha - 54

Bonus-2: FlowCode AVR 3.0: Aplikasi I/O Sederhana
Kali ini Flowcode AVR kita gunakan untuk mencoba membuat sebuah aplikasi sederhana yang melakukan pembacaan masukan di PORT A kemudian menampilkan hasil pembacaan tersebut, yang sebelumnya melalui suatu variabel DATANYA, ke PORT B. Rancangan Flowcode AVR-nya ditunjukkan pada Gambar 2.1.

Gambar 2.1 Kemudian kita kompail dan disimulasikan hasilnya (juga) bisa dilihat pada Gambar 2.1 tersebut. Perhatikan bahwa tidak semua masukan PORT A kita buat berlogika 1, hanya A7, A5, A3 dan A1. Hasilnya juga tidak semua LED pada PORT B menyala, hanya sesuai dengan PORT A saja, yaitu B7, B5, B3 dan B1. Nah sekarang pertanyaannya: Bagaimana dengan hasil kompilasi dalam bahasa C-nya (juga dalam bahasa ASM-nya)? Berikut saya cuplik sebagian hasil kompilasi dalam bahasa C (baris 59-96), cukup yang utama dulu, selebihnya Anda bisa mencermati bahwa di awal program C-nya merupakan inisialisasi variabel, pemetaan mikrokontroler dan lain-lain. Perhatikan Gambar 2.2.

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha - 55

Gambar 2.2 Pada cuplikan listing tersebut saya sudah memberikan catatan. Bagaimana dengan Anda? Apa yang dilakukan pada bagian inisialisasi, baris 76 dan 77? Instruksi MCUCSR = 0×00; digunakan untuk mereset (memberikan logika 0) pada semua bit di register MCUCSR (MCU Control and Register), perhatikan penjelasan pada Gambar 2.3. Sedangkan WDTCR = 0×10; digunakan untuk mematikan watchdog, perhatikan penjelasan register WDTCR (Watchdog Control Register) di Gambar 2.4. Langkah ini dilakukan oleh Flowcode AVR, menurut saya, untuk keamanan atau play safe saja. Karena kemungkinan kompailer C yang digunakan tidak mematikan watchdog secara otomatis (ada beberapa kompailer yang bisa melakukan-nya secara otomatis selama tidak secara eksplisit dinyatakan penggunaan watchdog). Listing program selebihnya adalah sesuai dengan yang diharapkan, baca masukan seperti pada baris 85, namun sebelumnya ada inisialisasi PORT A sebagai masukan, mengapa tidak langsung aja DDRA = 0×00? Kok harus di-AND-kan segala dengan 0, khan hasilnya sama saja logika-0 khan? Aneh? Kemudian dilanjutkan dengan mengirimkan isi variabel dari pembacaan PORT A ke PORTB, lihat baris 91, yang sebelumnya (juga) diawali dengan inisialisasi PORT B sebagai luaran (nah kalo ini caranya langsung).

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha - 56

4 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Gambar 2.57 .3 Gambar 2.

keunikan juga terjadi lagi seperti saya jelaskan pada artikel sebelumnya26. hasilnya juga sama saja. merupakan deklarasi fungsi-fungsi makro untuk menangani LCD (baris 66 . hanya sekedar menampilkan dua kalimat. seperti pada Gambar 2. dan 26 27 Lihat pembahasan Bonus-1 Lihat pembahasan Bonus-1 dan Bonus-2 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .74).2. masing-masing di baris-1 dan baris-2. digunakan untuk menuliskan string.0: Aplikasi LCD 2x16 karakter Wow enaknya belajar pemrograman aplikasi mikrokontroler AVR menggunakan Flowcode 3 for AVR sebagaimana sudah saya tulis artikel-nya sejak awal27.1 (termasuk hasil simulasinya).5 Bonus-3: FlowCode AVR 3.Jika Anda berikan loop pada program. Hasil kompilasi kedalam Bahasa C saya tunjukkan satu persatu. diagram atau flow-nya ditunjukkan pada Gambar 3.58 . char MSZ_String). sebagaimana ditunjukkan pada Gambar 3. Gambar 2. FCD_LCDDisplay0_PrintString(char* String. yaitu: FCD_LCDDisplay0_Start(). Kali ini dicoba membuat aplikasi dengan tampilan LCD 2×16.5. Terdapat 9 macam fungsi makro LCD dan hanya 3 yang akan digunakan dalam program. Pada bagian pertama. digunakan untuk inisialisasi LCD.

2 Untuk fungsi FCD_LCDDisplay0_Start() listing programnya ditunjukkan pada Gambar 3. digunakan untuk menempatkan kursor dengan posisi kolom. Apa yang dilakukan oleh fungsi ini adalah melakukan inisialisasi tampilan LCD dengan antarmuka 4 bit data (Flowcode 3 AVR hanya menyediakan antarmuka 4-bit data LCD walaupun bisa juga digunakan rangkaian antarmuka 8-bit data LCD).FCD_LCDDisplay0_Cursor(char x.59 .baris).3. char y). Gambar 3. Rangkaian yang digunakan menggunakan pemetaan PORT dan pin LCD sebagai berikut: Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .1 Gambar 3.

60 .#define #define #define #define #define #define LCD_2360334_BIT0 LCD_2360334_BIT1 LCD_2360334_BIT2 LCD_2360334_BIT3 LCD_2360334_RS LCD_2360334_E 2 3 4 5 0 1 ` Gambar 3. Fungsi ini membutuhkan dua parameter.4. Fungsi ini digunakan untuk menampilkan string ke LCD pada posisi kursor saat itu. string yang akan ditampilkan dan jumlah karakter pada string tersebut. Gambar 3.3 Untuk fungsi FCD_LCDDisplay0_PrintString() listingnya ditunjukkan pada Gambar 3.4 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .

Fungsi ini membutuhkan dua parameter yaitu x (untuk posisi kolom) dan y (untuk posisi baris).com/file/HVLCKV_0/serial_lcd01. 28 29 Lihat pembahasan Bonus-2 Klik http://www. Program selengkapnya bisa diunduh disini29. Diikuti dengan menampilkan string “Halo Flowcode3 (baris 386.5.5 Nah program utama ditunjukkan pada Gambar 3. char nMask). angka 14 merupakan jumlah karakter pada string yang bersangkutan). jika dituliskan FCD_LCDDisplay0_Cursor(0. menempatkan kursor pada baris kedua kolom pertama (baris 391).html Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . demikian seterusnya… Gambar 3. Kemudian dilanjutkan dengan melakukan inisialisasi LCD (baris 381) menggunakan fungsi FCD_LCDDisplay0_Start(). char y) listingnya ditunjukkan pada Gambar 3. Pendefinisian fungsi ini ada di dalam fungsi FCD_LCDDisplay0_GetDefines(). Jika Anda perhatikan baik-baik pada ketiga fungsi tersebut.1) artinya menempatkan kursor pada kolom pertama baris kedua. Diawali dengan inisialisasi register MCUCSR dan WDTCR pada baris 373 dan 374 (baca artikel saya sebelumnya28).61 .4shared.Untuk fungsi FCD_LCDDisplay0_Cursor(char x. menampilkan string “by ATMega32 (baris 396) dan diakhiri dengan infinite-loop atau kalang-takhingga (baris 399).6. yang digunakan untuk mengirimkan satu karakter. maka bisa Anda temukan pemanggilan fungsi lain yaitu LCD_2360334_RawSend(char nIn.

Pada blok Calculation masih kita kosongkan… Okey. silahkan di-unduh di http://www.3.62 . langkah selanjutnya lakukan klik-ganda pada blok Calculation.3.com/file/kTQ_NYyL/Flowcode_AVR_Professional_4366.0: Menghitung Sapi! Kali ini kita akan belajar membuat program menggunakan Flowcode AVR30 untuk menghitung sapisapi kita yang masuk kandang. sehingga dimunculkan kotak dialog yang ditunjukkan pada Gambar 4. Silahkan membuat kerangka diagram alir menggunakan acuan Gambar 4.1.6.3.6 Bonus-4: FlowCode AVR 3. Kemudian lanjutkan menuliskan persamaan untuk menghitung total sapi sebagai berikut: TOTAL = TOTAL + SAPI (pada bagian isian Calculations). Sementara ini hasil perhitungan ditampilkan melalui LED pada PORT B. bisa juga melalui 7segmen biar keren. Ganti nama “Calculation” (pada Display Name) menjadi “Total Sapi” (tanpa tanda petik). Sensor ini akan memicu proses perhitungan jumlah atau cacah sapi.4shared. Perhatikan Gambar 4. tapi itu entar aja dech. Caranya bagaimana? Kita gunakan sensor detektor sapi melalui PORT A (yang disimulasikan menggunakan pushbutton) untuk mendeteksi sapi-sapi yang masuk ke kandang.Gambar 3.html Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .2. 30 Pada saat ebook ini ditulis sudah tersedia versi 4.

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . ya artinya nilai pada variabel SAPI tetap 0 (nol) dan tidak merubah nilai dari TOTAL.63 . penekanan tombol pada PORTA.1 Gambar 4.Gambar 4. Jika tidak ditekan. demikian seterusnya. Jika tombol ditekan maka akan menghasilkan nilai 1 yang kemudian disimpan ke dalam variabel SAPI. Dengan demikian.0 akan menambah nilai TOTAL sebesar 1.2 Sensor detektor sapi disimulasikan menggunakan tombol tekan atau pushbutton yang dipasang pada PORTA.0.

Variabel yang akan kita definisikan adalah TOTAL dan SAPI.4 Sekarang kita lanjutkan dengan mendefinisikan variabel-variabel yang terkait tersebut. nanti baru kembali lagi kesini… Klik pada tombol Add New Variable… sehingga dimunculkan kotak dialog Create sebagaimana ditunjukkan pada Gambar 4. Penggunaan kedua variabel ini sudah saya jelaskan sebelumnya. Gambar 4. Ketik “SAPI” (tanpa tanda petik) pada isian Name of New Variable Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .3 Gambar 4.5.Klik Variables pada kotak dialog Calculations untuk mulai mendefinisikan variabel-variabel yang terkait. Akan ditampilkan kotak dialog seperti pada Gambar 4. jika belum paham silahkan ditengok lagi.4.64 .

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . akhiri dengan klik Ok. Gambar 4.7.65 . Sehingga sekarang isi dari variabel kita seperti ditunjukkan pada Gambar 4.dan pilih Byte pada Variable Type. Hasil dari diagram alir sampai tahap ini ditunjukkan pada Gambar 4. Lakukan hal yang sama untuk variabel TOTAL.5 Gambar 4.6 Klik Close.6. kemudian kembali lagi ke kotak dialog Calculations dan akhiri dengan klik Ok.

8 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Gambar 4. Gambar 4.8. Klik pada blok Loop sehingga ditampilkan kotak dialog seperti pada Gambar 4.66 .7 Sekarang saatnya mengatur pengulangan (loop).

Langkah selanjutnya adalah menentukan luaran melalui PORT B. Okey. artinya dianggap selalu benar.Silahkan Anda cermati kotak dialog tersebut. sehingga ditampilkan Gambar 4. Pada isian Loop while. klik saja Cancel untuk membatalkan. pilih variabel TOTAL dengan cara yang sama seperti sebelumnya. Klik tombol Variables. Apakah pengujian dilakukan di awal pengulangan (Start) atau diakhir (End)? Hal ini tentu saja berpengaruh terhadap jumlah pengulangan yang terjadi. Hasil akhir dari diagram alir ditunjukkan pada Gambar 4. Gambar 4. Anda bisa memilih antara Loop While dengan Loop Count. Misalnya.9 Ubah Display name (panah teratas) menjadi “Cek sensornya”. cacah = 0 dan lain sebagainya. tertulis angka 1 pada kotak dialog tersebut. so akhiri dengan klik Ok. Isian Loop Count merupakan bentuk pengulangan yang pasti. Sementara ini biarkan isian seperti itu. Anda bisa mengisikan angka yang sesuai dengan kepentingan program. kita lanjutkan dengan klik ganda pada blok Input. kita bisa mengisikan berbagai macam kondisi syarat pengulangan. berapa kali dilakukan pengulangan. misalnya cacah < 4. Klik tombol Variables… (sebelah kanan panah tengah). sehingga terjadilah pengulangan terus menerus (infinite loop).9 (perhatikan 3 tanda panah-nya). klik pada variabel SAPI dan klik tombol Use Variable.10. Perhatikan isian Port yang sudah terisi dengan PORT A dan ini sudah sesuai dengan program kita. yaitu Start dan End. Perhatikan juga pilihan Test the loop at. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Mirip dengan cara menentukan masukan sebagaimana sudah saya jelaskan.67 . Klik ganda pada blok Output. Atau Anda bisa mengisikan syarat-syarat tertentu untuk pengulangan. Ganti isian Port menjadi PORT B.

bit 0 sampai dengan 7 untuk masing-masing LED.10 Berikutnya adalah menambahkan tampilan LED pada Flowcode AVR untuk kepentingan simulasi.13.. klik pada panah kebawah di LED dan pilih Component Connections…. Gantilah PORT A pada kotak dialog Component Connections.68 . Sekarang tambahkan pushbutton pada Flowcode AVR dengan klik ikon Switch (di sebelah kanan ikon LED yang telah Anda klik sebelumnya). Klik pada ikon LED (ada di sebelah kiri atas gambar LED berjejer miring). perhatikan (panah pada) Gambar 4. Untuk menghubungkan LED ini dengan PORT B. tersebut dengan PORT B.12. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Gambar 4. Maka pada Flowcode AVR akan ditampilkan kotak LED.11. sehingga ditampilkan kotak dialog seperti Gambar 4. Perhatikan Gambar 4.

12 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Gambar 4.11 Gambar 4.69 .

Gambar 4.14.13 Kita atur Properties dari switch ini dengan klik tanda panah kebawah dan pilih Properties. Lanjutkan dengan klik pada Tab Switch label dan ketik seperti pada Gambar 4. ganti angka pada Number of switch menjadi 1 (perhatikan tanda panah yang terkait).16) dan nikmati hasilnya! Kenapa? Wow pencacahan dilakukan dengan sangat cepat. Jumlah pushbutton cuman 1. Kemudian jalankan lagi simulasinya… Listing program utama (main()) dalam Bahasa C ditunjukkan pada Gambar 4. Klik Run (tanda panah pada Gambar 4.17. ketikan kli pada pushbutton LED pada PORT B berubah secara cepat (sekali)! Bagaimana mengatasinya? Sisipkan tundaan di dalam flowchart sebagaimana ditunjukkan pada Gambar 4.! Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .16.70 . sehingga ditampilkan Gambar 4..15. hasil akhir dari tampilan Flowcode AVR ditunjukkan pada Gambar 4. tugas membuat program sudah selesai. Selanjutnya sudah bisa dilakukan simulasi.18 Terima kasih. Okey..

14 Gambar 4.15 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .71 .Gambar 4.

Gambar 4.17 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .72 .16 Gambar 4.

Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Gambar 4. sehingga untuk menyalakan LED harus dikirimkan logika ‘0 .73 . sengaja LED disusun secara CA atau common Anoda.3728MHz) untuk membuat animasi LED berjalan dari pin 0 hingga 7. Rangkaian yang digunakan ditunjukkan pada Gambar 5.18 Bonus-5: Animasi LED Mikrokontroler ATMega32 dengan C dan Assembly Artikel ini sengaja saya tulis sebagai awal pembelajaran bagaimana membuat sebuah program aplikasi mikrokontroler AVR (khususnya ATMega32 dengan frekuensi kristal 7.1.

====== program utama ==================== Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .----------inisialisasi konstanta dan register .3728MHz .staff. bukan instruksi assembly mikrokontroler AVR: .nolist dan .nolist .74 .include) karena akan digunakan pustaka ATMega32 dalam program kita.ugm.atmel.http://agfi.include "m32def.Gambar 5.portb-7 ON .inc" .frekuensi kristal 7.inc” kita sertakan (directive .1 Untuk kompilasi digunakan AVR Studio versi 4.tidak perlu ditampilkan dalam .temp sebagai alias untuk R16 .’ merupakan directive dari AVR Studio.ac.com).0 (silahkan unduh GRATIS dari http://www. tetapi tidak perlu disertakan dalam hasil berkas LIST-nya (hasil kompilasi program) menggunakan directive .bagian ini .id . Program kita awali dengan beberapa macam deklarasi.animasi LED berjalan dalam bahasa Assembly . perhatikan instruksi yang diawali dengan ‘. Selanjutnya dilakukan inisialisasi awal: . keterangan sengaja saya masukkan dalam listing program untuk memudahkan pembelajaran langsung dari listingnya.untuk mikrokontroler Atmel AVR ATMega32 .list .equ led=0b01111111 .berkas list Ingat berkas “m32def.list.-----------------------------------------.def temp=r16 .-----------------------------------------.

brokoli.high(ramend) out sph. ada baiknya tidak terlalu mengandalkan simulator mikrokontroler semacam Proteus. silahkan saja kalo mo diganti dengan alamat lain asalkan tidak konflik dengan kepentingan lainnya dalam program.cseg) dan dimulai alamat0×0000 (. Hal ini berlaku juga untuk penjelasan terkait berikut ini… Berikutnya.6 SP4).--------portb telah di seting menjadi luaran -----ldi temp.75 .cseg .0b01111111)): .awal kode program pada alamat 0x0000 Variabel LED digunakan untuk menyimpan data yang akan dikeluarkan melalui PORTA.tuliskan ke register DDRA Selanjutnya program utama dituliskan: . Karena digunakan PORTA maka digunakan register DDRA (penulisan ke DDRA (out ddra. Berikut cuplikan program untuk menginisialisasi stack di akhir ruang RAM (RAMEND).set semua bit register temp out ddra. dalam hal ini melalui variabel TEMP baru kemudian dipindahkan ke SPL dan SPH. Ragu-ragu? Ya sudah ikuti saja pake alamat 0×0000.isi register temp dengan led7 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .. Saran saya.Stack Pointer .harus dituliskan sebagai inisialisasi SP pada RCALL .inisialisasi port--------------------ldi temp. di rangkaian sesungguhnya. Karena STACK pada ATMega32 ukuran 16bit atau 2byte. sehingga digunakan variabel TEMP (ldi temp. artinya program seakan-akan stuck. tahu. Fungsi Low() dan High()masing-masing digunakan untuk mendapatka bagian LOW atau HIGH dari variabelRAMEND yang suda tersimpan dalam “m32def.0b11111111 .temp Jika Anda lupa atau tidak melakukan inisialisasi stack.inc”. Pengisian register pada AVR tidak bisa dilakukan langsung. artinya LED-0 akan dinyalakan terlebih dahulu.----------.org) ini paling logis kita siapkan di alamat tersebut. ada kemungkinan besar akan terjadi kemacetan pada program. misalnya.org 0000 . program akan berjalan tanpa kesalahan. namun ketika dicobakan ke rangkaian sesungguhnya program akan berhenti (stuck).low(ramend) out spl. wortel dan lain sebagainya (emang buat sayur yach? he he he)… Program diawali dengan mendeklarasikan segmen kode (.jika tidak dilakukan program akan macet! ldi temp. Anda boleh menggunakan nama alias apa saja.temp) tidak bisa langsung. jika masing-masing bit pada register DDRx diberi nilai ‘1 artinya sebagai luaran (jika ‘0 sebagai masukan). aman dech…! Selanjutnya kita lakukan INISIALISASI STACK: .menyiapkan alamat SP . maka pengisian SP dilakukan dua kali untuk SP Low atau SPL dan SP High atau SPH. usahakan untuk mencoba di dunia nyata. karena kita menggunakan mikrokontroler AVR. awalnya diisi 0b01111111. Jika Anda menggunakan simulator semacam Proteus (yang pernah saya coba menggunakan Proteus 7. Variabel TEMP digunakan variabel alias untuk R16 (register-16).temp .temp ldi temp.led . sudah wajib kita menentukan sebuah PORT sebagai masukan atau luaran.

set carry flag (agar carry=1.tunda sesaat 0. Bagian akhir dari program adalah subrutin penundaan sekitar 0.25detik (lihat pada listing program lengkap). sebagaimana screen shoot-nya ditunjukkan pada Gambar 5.2. LED mati) porta.25 detik tidak akan akurat.temp tunda temp putar .2 Program selengkapnya sebagai berikut (ingat akhiri program dengan . Untuk menggeser dan memutar bit pada variabel TEMP digunakan instruksi ROR (Rotate Right Using Carry).temp).led). silahkan unduh gratis di-sini31.sec putar: out rcall ror rjmp .lompat ke label putar Data disimpan terlebih dahulu di variabel TEMP (ldi temp. tidak bisa langsung dikirim ke PORTA. karena melewati Carry sedangkan Carry biasanya isinya ‘0 .putar satu bit ke kanan melalui carry . Pengulangan dilakukan dengan melompat kembali ke label ‘putar’ menggunakan rjmp putar. kemudian baru dikeluarkan ke PORTA (out porta. Kok bisa ya? Ya pake saja program AVR Delay Loop Generator.76 .electronics-lab. maka harus diberi ‘1 dulu dengan instruksi SEC. Jika Anda ingin akurat.exit)… 31 http://www. Memang menggunakan pengulangan register.php?fid=23 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .25 detik .com/downloads/cnt/fclick.kirim data ke porta (LED) . Gambar 5. penundaan 0. tetapi lumayan buat melakukan penundaan sesaat. gunakan fasilitas Timer/Counter pada mikrokontroler AVR yang bersangkutan.

def temp=r16 . $D3 WGLOOP2: dec R19 brne WGLOOP2 dec R18 brne WGLOOP1 dec R17 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha ..animasi LED berjalan dalam bahasa Assembly . penundaan 0.-----------------------------------------.tunda sesaat 0. delaying 1843182 cycles: tunda: ldi R17.inc" . $A1 WGLOOP1: ldi R19.equ led=0b01111111 .----------inisialisasi konstanta dan register . 1843200 cycles: .--------portb telah di seting menjadi luara -----ldi temp.http://agfi. delay loop generator .low(ramend) out spl.Stack Pointer .staff.cseg .ac.set semua bit register temp out ddra.tuliskan ke register DDRA .set carry flag (agar carry=1.25 detik ror temp .berkas list . LED mati) putar: out porta.temp .0b11111111 .led .putar satu bit ke kanan melalui carry rjmp putar .77 .awal kode program pada alamat 0x0000 .25 detik .untuk mikrokontroler Atmel AVR ATMega32 .id .bagian ini .3728MHz .temp ldi temp.jika tidak dilakukan program akan macet! ldi temp.lompat ke label putar .list .temp .tidak perlu ditampilkan dalam .ugm.isi register temp dengan led7 sec . $12 WGLOOP0: ldi R18.frekuensi kristal 7. ============================= .kirim data ke porta (LED) rcall tunda . untuk frek 7.nolist .3728MHz .temp sebagai alias untuk R16 .-----------------------------------------.----------.menyiapkan alamat SP .inisialisasi port--------------------ldi temp.harus dituliskan sebagai inisialisasi SP pada RCALL .portb-7 on . ----------------------------.temp .include "m32def.high(ramend) out sph.org 0000 .====== program utama ==================== .

hanya saja sekarang kita tambahkan 2 buah pushbutton yang dihubungkan ke PORTD. Yang mungkin Anda pertanyakan adalah pengganti perintah ROR yaitu menggunakan instruksi “temp=(temp<<7)|(temp>>1). } // data untuk LED // PORT sebagai luaran //tulis ke port //lakukan penundaan sesaat //ROR dalam bahasa C Silahkan Anda cermati perbedaan penulisan menggunakan Assembly dan Native C (gcc). Rangkaian yang kita gunakan mirip dengan animasi LED. while(1){ PORTLED=temp.exit .} return(0). Sedangkan inisialisasi PORT sama seperti pada Assembly. maka kali ini kita akan belajar tentang konsep masukan menggunakan pushbutton. untuk urusan penundaah digunakan fungsi _delay_ms() yang sudah didefinisikan di berkas “delay. ============================= ret . dalam dunia aplikasi. temp=(temp<<7)|(temp>>1). Demikian penjelasan singkat saya tentang aplikasi animasi LED berjalan menggunakan bahasa assembly dan C untuk mikrokontroler AVR ATMega32. Semoga bermanfaat dan sukses selalu untuk Anda! Bonus-6: Aplikasi Pushbutton Mikrokontroler ATMega32 dengan Assembly Jika pada kesempatan sebelumnya saya bahas tentang animasi LED menggunakan ASsembly dan C.1.78 . masukan digital ini bisa berasal dari berbagai macam sensor.h” dan berlaku untuk frekuensi operasional 1MHz. $06 WGLOOP3: dec R17 brne WGLOOP3 . ----------------------------.0 dan PORTD. _delay_ms(250).akhir program Sedangkan dalam Bahasa C Native (menggunakan AVR Studio 4 dan GCC) ditunjukkan lengkap sebagai berikut: //======================================== // animasi LED di PORTA //========================================= #include #include //pustaka DELAY untuk frek 1MHz #define PORTLED PORTB //penentuan alias untuk PORTB #define DDRLED DDRB //penentuan alias untuk DDRB int main (void) { unsigned char temp=0x80.“. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . ============================= . delaying 18 cycles: ldi R17.brne WGLOOP0 .“.” menjadi “unsigned char temp=0×01.” dan “unsigned char temp=0×80. DDRLED=0xFF. untuk ROL tinggal Anda ganti dengan “temp=(temp<<1)|(temp>>7). perhatikan Gambar 1.

Gambar 6.2 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Gambar 6.1 Selanjutnya kita buat programnya dengan diagram alir yang ditunjukkan pada Gambar 6.2.79 .

persiapan data untuk animasi LED kanan: out sbis rjmp rcall ror rjmp kiri: out sbis rjmp rcall rol portb. menyiapkan alamat SP .Program selengkapnya sebagai berikut: .putar satu bit ke kiri Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .TIDAK! .def delay2=r18 .temp ldi temp.temp .80 portb.inisialisasi untuk pin di out ddrb.YA! lompat ke label kanan .YA! lompat ke label kiri .lagi! .1 HIGH .TIDAK! .id .deklarasi segmen untuk kode/program ----------.def delay1=r17 .temp .equ led=0b10000000 .program aplikasi pushbutton dan animasi LED .1 kanan tunda temp .inc" .variabel LED sebagai data .cseg .--.PORTD agar aktif semua internal pullup-nya ldi temp.-----------inisialisasi port---------------------------------------------ldi temp.high(ramend) out sph.Stack Pointer ---------------.0b11111111 .def delay3=r19 .temp .temp pind.nolist .http://agfi.def temp=r16 .cek apakah pind.org 0000 .include "m32def.temp .ac.led .temp pind.keluarkan melalui OPRTB .low(ramend) out spl.PORTD sebagai masukan semua ser temp . harus dituliskan sebagai inisialisasi SP pada RCALL ldi temp.-----------inisialisasi konstanta dan register-------------------------------.inisialisasi untuk pin di out ddrd.======================================================================= .staff.ugm.PORTB sebagai luaran semua clr temp .0 HIGH .0 kiri tunda temp kanan .cek apakah pind.list .======================================================================= .putar satu bit ke kanan .keluarkan melalui PORTB .inisialisasi untuk pin di out portd.awal kode program pada alama 0x0000 .

0b00000000 yang mengakibatkan adanya kesalahan saat kompilasi. C atau D menyesuaikan dengan penggunaan port yang digunakan. ============================= . masing-masing untuk PORTB danPORTD. misalnya. ----------------------------. $BC WGLOOP1: ldi R19. Gak percaya? Ya silahkan dicoba sendiri… Selanjutnya label ‘KANAN‘ dan ‘KIRI‘ digunakan untuk melakukan animasi LED sesuai dengan pushbutton yang ditekan.lagi! . delaying 1999998 cycles: tunda: ldi R17. Karena yang diperiksa adalah PORTD. melakukan rotasi bit ke kanan pada TEMP (ROR TEMP) dan mengulang lagi (RJMP KANAN). Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Logika ‘1 untuk luaran. maka instruksi RJMP KIRI akan diabaikan.exit . Hal di atas berlaku juga untuk label KIRI. ‘out ddrd. kemudian diikuti dengan instruksi SBISyang merupakan instruksi “Skip if Bit in I/O Register is Set“. Sekali lagi penulisan ke DDRx tidak bisa dilakukan langsung. delaying 2 cycles: nop nop ret . dan program melanjutkan ke penundaan sesaat (RCALL TUNDA).81 . Pada label KANAN. untuk menentukan apakah suatu PORT digunakan sebagai luaran atau masukan digunakan register DDRx. dengan x diisi A. Perhatikan blok inisialisasi PORT.akhir program Penjelasan: Untuk penjelasan tentang inisialisasi stack dan rutin tundaan silahkan lihat artikel bonus-5. dan konfigurasinya adalah aktif rendah (ditekan berarti HIGH). logika ‘0 untuk masukan. artinya abaikan instruksi berikutnya jika bit yang diperiksa bernilai HIGH atau berlogika ‘1 . 2000000 cycles: . artinya Anda tidak bisa memberikan instruksi.0. $12 WGLOOP0: ldi R18. $C4 WGLOOP2: dec R19 brne WGLOOP2 dec R18 brne WGLOOP1 dec R17 brne WGLOOP0 . B. sehingga jika tidak ditekan (dalam kondisi 1 atau SET).rjmp kiri . ----------------------------. Dalam kasus ini digunakan DDRB dan DDRD. ============================= . demikian seterusnya. diawali dengan mengeluarkan data TEMP ke PORTB. delay loop generator .

82 ..com/) btw. saya sendiri juga sedang belajar untuk mengembangkan bidang otomasi. thanx atas bukunya mas.. salut buat jiwa “technopreneur” yang kuat dan inovatif. esp.wordpress..INFORMASI TENTANG PELATIHAN MIKROKONTROLER Hanya dengan minimal 5 JAM32 (karena langsung dibimbing oleh Pakarnya) Anda bisa memahami konsep dasar dan membuat aplikasi mikrokontroler AVR! Ditambah dengan konsultasi GRATIS Anda bisa meningkatkan kemampuan Anda dalam mikrokontroler AVR! Anda juga bisa menghasilkan INCOME TAK TERBATAS! Dengan memanfaatkan kemampuan Anda di bidang mikrokontroler! Pelatihan yang saya selenggarakan memberikan konsep dasar dan tip/trik pembuatan aplikasi mikrokontroler AVR! Informasi & pendaftaran silahkan akses ke http://klikdisini. PLC dan SCADA Handy (http://learnautomation. murah dan komplit untuk belajar Mikrokontroler AVR? Kekhawatiran Anda akan berakhir! Kesulitan Anda akan segera teratasi Apa yang Anda cari akan segera ditemukan! Dapatkan PENAWARAN ISTIMEWA selama promosi! Dapatkan informasi selengkapnya di http://klikdisini. Anda juga bisa menambah jumlah jam jika masih merasa kurang – tingkat lanjut! Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Btw..saya jadi bisa memahami mikon. Saya bisa lihat di tulisan tulisan Bapak.com/jualavrbasic Pak Agfi.saya juga sudah bisa membuat alat yg berbasis mikon.saya sudah mempunyai buku mikon mas dah lama bgt..khususnya at89sxx Ruby 32 Waktu minimal pelatihan.com/pelatihanavr INFORMASI PERANGKAT KERAS UNTUK BELAJAR MIKROKONTROLER AVR Anda mengalami kesulitan dalam belajar Mikrokontroler AVR?? Bingung memilih/menentukan hardware yang bisa dipakai dengan mudah untuk belajar Mikrokontroler AVR? Pengin yang simpel.

set instruksi (termasuk cara pengeditan program hingga siap untuk disimpan ke dalam Flash PEROM AT89C). Inc. Buku yang terdiri dari 7 bagian ini mengupas tuntas AT89C (sudah obsolette diganti dengan seri AT89S) atau AT89S mulai dari awal tentang arsitektur dasar keluarga AT89 atau seri MCS-51. Anda bisa mendownload daftar isi33 dan/atau contoh bab34 yang ada di buku ini… monggo… Untuk pemesanan secara online: http://www. sekaligus bisa juga dihapus.2 dan program pendukung untuk kompilasi dan informasi lainnya.gavamedia. Selain itu juga dalam rangka memperkaya pustaka nasional dalam bidang elektronika maupun sistem elektronika.) dalam aplikasi pengontrolan elektronik. selain itu buku ini dilengkapi dengan CDROM yang berisi dokumentasi lengkap Pemrogram Easy Downloader 2. Edisi 2 Buku ini ditujukan bagi mereka yang ingin memanfaatkan mikrokontroler tipe CISC yaitu AT89C51/52/55 (seri AT89 dari Atmel.net/products-page/microcontroller-robotika-dan-plc/belajar-mikrokontrolerat-89c515255-teori-dan-aplikasi-edisi-2/ 33 34 http://www.esnips.Belajar Mikrokontroler AT89C51/52/55: Teori dan Aplikasi. karakteristik timer dan counter. karena tidak memerlukan memori program luar seperti EPROM maupun EEPROM.com/doc/cef364e2-6759-462f-9303-4b99c62f7db0/mcs51_03 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . keunggulan ini dapat dimanfaatkan sebagai sarana belajar mikrokontroler. Program mikrokontroler disimpan ke dalam Flash PEROM-nya AT89.83 .2. Sehingga pada bagian terakhir dibahas secara singkat pembuatan alat untuk mengisi (sekaligus menghapus) program dari mikrokontroler AT89 menggunakan Pemrogram Easy Downloader 2.com/doc/e2fdc2b1-84e6-4a54-a7dd-6b311894e1a4/isi_mcs51 http://www. kanal serial dan penanganan sistem interupsi. yang membutuhkan peralatan pengisian dan penghapusan yang merepotkan.esnips. kanal paralel (termasuk karakteristik dari masing-masing port dan aplikasinya).

area memori hingga catatan khusus untuk pengguna PLC Omron Sysmac jika ingin menggunakan ZEN Programmable Relay.esnips. Sysmac dan ZEN Programmable Relay dibahas pada Bab 6 dan Bab 7. Buku ini tersusun dalam 7 Bab. Pada Bab 2 dibahas tentang PLC Omron seri Sysmac atau yang dikenal dengan tipe CPM1A/CPM2A mulai dari konsep jalur keluaran dan masukan hingga struktur memori di dalam PLC tersebut. ZEN Support Software v3. Khusus untuk PLC Sysmac.4. khususnya Omron Sysmac dan ZEN Programmable Relay. Pada Bab 3 dibahas tentang ZEN Programmable Relay secara garis besar.net/products-page/microcontroller-robotika-dan-plc/plc-konseppemrograman-dan-aplikasi/ 35 36 http://www.0 karya Tang Tung Yan yang bisa digunakan untuk belajar pemrograman diagram tangga tanpa harus memiliki PLC Sysmac yang harganya mahal. Aplikasi untuk masing-masing PLC. fitur-fitur yang dimiliki.0 (serta simulatornya) dan PLC Simulator v1. yaitu dasar dan lanjut. sedangkan pada ZEN dikelompokkan berdasar fungsi-fungsi yang ada pada ZEN tersebut. saya membagi dua macam aplikasi.PLC: Konsep. Pemrograman dan Aplikasi Omron Sysmac dan ZEN PLC atau Programmable Logic Controller adalah alat kontrol terprogram yang sudah banyak dijumpai dan dipakai dalam industri-industri untuk pengontrolan prosesproses produksi. Anda bisa mendownload daftar isi35 dan/atau contoh bab36 yang ada di buku ini… monggo… Untuk pemesanan secara online: http://www.gavamedia. Pada Bab 5 dijelaskan tentang perangkat lunak yang digunakan dalampemrograman PLC. baik Syswin v3. Kemudian di Bab 4 dijelaskan konsep-konsep pemrograman diagram tangga ditinjau dari PLC Omron Sysmac.esnips.com/doc/c7a08a88-3662-4f33-b6d9-7f44d81f572f/isi_plc http://www. konsep dasar PLC hingga jalur-jalur keluaran dan masukan PLC secara umum.84 . buku ini ditujukan kepada siapa saja yang ingin belajar PLC. Bab 1 membahas dasardasar atau konsep dasar PLC (Programmable Logic Controller) mulai dari sejarah.com/doc/d2484bf8-0d3d-4234-a2e3-dab82aafa8e7/plc06 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .

Penapis Aktif Eltronika: Teori dan Praktek Buku ini ditujukan bagi para hobist maupun mahasiswa D3 dan S1 jurusan atau program studi Elektronika atau Elektronika dan Instrumentasi agar dapat digunakan untuk membantu mengetahui sekaligus memahami tentang seluk-beluk Penapis Aktif Elektronika secara teori dan praktek.85 .esnips.net/products-page/komputer-dan-teknologi-informasi/penapis-aktifelektronika-teori-dan-praktek/ 37 38 http://www. high-pass.esnips. bandpass dan notch) Penapis aktif lolos-rendah dan tinggi Order Pertama Penapis VCVS Order Kedua Penapis Ragam-umpanbalik Order Kedua Penapis-penapis Order Tinggi Penapis aktif Notch dan Lolos-pita Penapis Peubah-kondisi (state variable).com/doc/4808c7b5-55f0-4838-a6e7-f0b3551b9c02/filters Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .gavamedia.esnips. Anda bisa mendownload daftar isi37 dan/atau contoh bab38 serta bonus39 yang ada di buku ini… monggo… Untuk pemesanan secara online: http://www.com/doc/ddd17fc3-cc8f-4eff-b131-b838d9003e7f/tapis04 39 http://www.com/doc/d5dd6e60-4940-4d7b-b58d-dec153ba4ca7/isi_tap http://www. Cakupan buku (terdiri atas 8 bab) ini meliputi antara lain: Dasar-dasar penggunaan penguat operasional sebagai dasar rangkaian penapis aktif Dasar-dasar penapis (low-pass.

termasuk operasi aritmetika yang terkait. Bab 2 membicarakan tentang perkembangan prosesor atau CPU pengertian Bahasa Assembly termasuk penggunaan secara umum Emu8086.com/doc/72832fb6-3e0f-485a-a403-720c02e34c06/program 42 http://agfi. jika Anda suka dengan elektronika.ac. Termasuk dalam bab ini dibahas tentang larik (array). Anda bisa mendownload daftar isi42 dan/atau contoh bab43 yang ada di buku ini… monggo… Untuk pemesanan secara online: http://www. Inc). transfer kontrol.Belajar Bahasa Assembly dengan Emu8086 Segala sesuatu untuk mempelajari Bahasa Assembly dapat Anda peroleh menggunakan perangkat lunak Emu8086 (Emu8086.pdf 43 http://agfi.id/pdf/daftar_isi_asm.jsp?searchmode=2&searchName=emu8086 http://www.com/network/search. dilengkapi dengan contoh-contoh program. Bab 3 menjelaskan cara-cara pengaksesan memori dalam pemrograman Bahasa Assembly termasuk pengertian memori stack dan wataknya.ugm.net/products-page/komputer-dan-teknologi-informasi/belajar-bahasaassembly-dengan-emu-8086/ 40 41 http://www.staff. interupsi dan kontrol prosesor. Bab 6 dibahas tentang cara membuat dan menggunakan prosedur dan makro dibicarakan pada bab ini. string. pengalamatan variabel dan konstanta serta tentang stack. Juga diberikan penjelasan tentang variabel dalam permograman Bahasa Assembly serta cara-cara penggunaannya.esnips. manipulasi bit. Program EMU8086 bisa diunduh disini40 sedangkan listing program dalam buku bisa diunduh disini41.ac. Pada Bab 4 dibicarakan secara singkat instruksi-instruksi pada prosesor 80×86 yang meliputi instruksi untuk transfer data.4shared.pdf Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .id/pdf/sampel_asm03.ugm. yang digunakan dalam buku ini adalah versi 2.86 .58. Bab 1 Membicarakan tentang pengertian sistem bilangan dalam dunia komputer terutama dalam pemrograman Bahasa Assembly. maka dijelaskan bahwa dengan Bahasa Assembly-pun Anda bisa melakukan pengamatan dan pengendalian perangkat keras di luar komputer (yang biasa juga dikenal sebagai Teknik Antarmuka PC).staff. aritmetika. Emulator dan Drive semu (virtual drive). Sedangkan pada Bab 7. Bab 5 diulas berbagai macam interupsi Prosesor 8086 dan cara penggunaannya.gavamedia. Selain itu program Emu8086 dilengkapi fungsi-fungsi siap pakai yang memudahkan dalam pembuatan program Bahasa Assembly. tentunya bisa disimulasikan dengan piranti semu (virtual devices) yang telah disediakan oleh Emu8086.

0 Buku ini menjelaskan teknik-teknik pengendalian robot mobile atau mobot menggunakan bantuan perangkat lunak simulasi mobot MOBOTSIM v1. sedangkan perangkat lunak MOBOTSIM bisa digunakan untuk belajar teknik pengendalian sekaligus melakukan berbagai eksperimen pengendalian mobot.0.net/products-page/microcontroller-robotika-dan-plc/pengendalian-mobilerobot-mobot-dengan-mobotsim-v1-0/ 44 45 http://www. seperti penghindaran rintangan (obstacle avoidance). kemudian dilanjutkan pada Bab 2 dibahas tentang teknik pengendalian mobot dasar tanpa menggunakan sensor.0 edisi evaluasi serta berbagai macam informasi yang berkaitan dengan robotika terutama mobot atau Mobile Robot serta bonus-bonus lainnya khusus untuk para pembaca. Akhirnya pada Bab 5 dijelaskan teknik penghindaran rintangan dengan metode VFF dan VFH yang dikembangkan sejak tahun 1989 oleh Borenstein dan kawan-kawan dari Michigan University.87 .Pengendalian Mobile Robot (MOBOT) dengan MOBOTSIM v1.0 dari mobotsoft. Buku ini juga dilengkapi dengan CDROM yang isinya perangkat lunak MOBOTSIM v1. Anda bisa mendownload daftar isi44 dan/atau contoh bab45 yang ada di buku ini… monggo… Untuk pemesanan secara online: http://www.com/doc/cec2661a-0c49-4e83-8bb5-f1840871a0a5/isi_mobot http://www.esnips. sedangkan pada Bab 3 dan 4 masing-masing dibahas bagaimana cara mengendalikan mobot dengan bantuan sensor posisi dan sensor jarak (dalam dunia nyata biasanya berupa sensor ultrasonik atau sejenisnya).esnips. Buku ini tersusun atas 5 Bab. penerapan kecerdasan buatan dan lain sebagainya. Pada Bab 1 diberikan penjelasan tentang perangkat lunak MOBOTSIM v1.com/doc/ebb66bc3-823e-4606-b124-3b4157b63185/mobot02 Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Buku ini cocok untuk siapa saja yang akan menekuni teknik pengendalian robotika dasar terutama mobot atau Mobile Robot.gavamedia.

88 ... Hadikusuma pengalaman hidup yang LUAR BIASA!!!!!!!!!!! membuka mata n hati. serta memiliki tujuan-tujuan yang mulia. Saya merasa tidak digurui.. salut ma pak agfi. Insya Allah Anda-pun juga bisa mengalaminya. dengan rasa syukur dan sabar... lebih terasa sebagai share pengalaman sendiri sehingga terasa menyampaikan dengan hati dan mengena.bisa berbagi pengalaman hidup sambil dakwah melalui media yang ringan tpi sangat mengenaaaa.. jadi ketika membaca. – Eni Cute Model penulisan per kasus yang simpel. dan lalai untuk mensyukuri anugerahNYA . buku ini dapat mengubah mindset seseorang. dari yang berpikir tidak memiliki harapan menjadi memiliki smngt yang besar tuk menjalani kehidupan ini. karena dari sebuah pengalaman yg sangat kecill bisa menjadi pelajaran hdup bagi smua umat.!!!" saya menemukan sesuatu yang amat sangat istimewa. – Sri Supadmi Buku ini COCOK untuk Anda maupun HADIAH dari untuk keluarga maupun sahabatsahabat dekat Anda Buku ini mengungkap renungan-renungan perjalanan hidup seorang dosen Elektronika & Instrumentasi (ELINS)...yang tiap harinya hanya berdoa n meminta. tidak berteletele..Pasti Ada Hikmahnya. dilihat dari covernya begitu sederhana namun ketika membuka halaman buku ini trnyata "WAH. langsung ke inti dari buku ini membuat yang membaca tidak cepat bosan. Dan seseorang yang beruntung adalah dia yang dapat mengambil Hikmah dari setiap kejadian.! Subhanallah. Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha ... mengingatkan saya. saya merasa akrab. Wallahu'alam – M. Hal lain yang menarik adalah isi yang ditulis juga dialami oleh Pak Agfi. AGFIANTO EKO PUTRA. yang banyak di-share kepada kolega maupun mahasiswa2-nya.F. mungkin karena memang isinya dapat terjadi sehari-hari (tidak mengadaada).. sehingga banyak di antara mereka mulai memandang kehidupan ini menjadi lebih optimis dan bersemangat.. tapi saya merasa diingatkan. sukses selalu pak. terima kasih Pak.

Dalam buku ini..89 .U. Mewaspadai pikiran-pikiran kotor. Ikhlas dan Tawakal... Mengetahui rahasia besar dalam film Kun Fayakun. Mengetahui apa dan bagaimana menangani Virus Kebiasaan Menemukan jawaban Mengapa Hasil Seminar Motivasi tidak bertahan lama. Mengetahui bahaya dari sikap "ntar dulu ach.. Bagaimana dompet yang (nyaris) hilang juga bisa memberikan pelajaran atau hikmah....com/pah Pemesanan langsung secara ONLINE di http://klikdisini.T ... Usaha..." Menyadari bahwa Kegagalan adalah.Doa. Bagaimana sebuah Laptop yang error bisa memberikan pelajaran bagi pemiliknya..I...com/jual_pah Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . Anda akan. Total lebih dari 40 kisah/artikel ditambah dengan 10 artikel BONUS! Unduh ebooknya di http://klikdisini.... dan masih banyak lagi lainnya. Mengenal secara sekilas kekuatan D....

Btw. pasti Indonesia makin maju neh. sehingga diharapkan bisa menjadi ilmu bermanfaat bagi calon-calon Technopreneur di Indonesia. salut buat jiwa “technopreneur” yang kuat dan inovatif.| salut dah buat pak Agfi. saya baru bisa paham… padahal saya juga uda punya buku mikro yg lain. saya juga senang baca buku-bukunya pak Agfi lho.gavamedia.. Herlambang (http://indomicron.90 .com/) Pesan secara ONLINE di http://www.... Seandainya sebagian besar dosen bisa aktif seperti pak Agfi. berisi. terutama ilmu dan pengembangan aplikasi atau terapan mikrokontroler keluarga Atmel AT89 dan Atmel AVR. padat. aneh memang… Teguh Budiman Waduh. Saya bisa lihat di tulisan tulisan Bapak. emang sip banget penjelasannya pak Agfi. PLC dan SCADA Handy (http://learnautomation. Juga saya tambahkan sebuah artikel bagaimana cara mendapatkan penghasilan dengan menguasai teknologi mikrokontroler.wordpress. nah. salah satu yang saya kagumi dari pak Agfi adalah kalo pak Agfi njelasin sesuatu pasti dengan ringkas. itu adalah tandatanda dari dosen.. saya sendiri juga sedang belajar untuk mengembangkan bidang otomasi. Banyak hal yang penulis dapatkan selama itu. klo baca bukunya pak agfi.net/products-page/buku-baru/tip-dan-trikmikrokontroler-at89-dan-avr/ Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha . amin! saya tersugesti.co. to the point dan mudah di mengerti. esp.Tip dan Trik Mikrokontroler AT89 dan AVR: Tingkat Pemula hingga Lanjut Buku ini merupakan kumpulan berbagai macam catatan atau artikel selama penulis melakukan berbagai macam penelitian dan eksperimen hingga tahun 2009. spt nya gak enak. entrepreneur dan sekaligus penulis yang profesional.cc/) Pak Agfi. Semoga para pembaca juga mendapatkan hal yang sama serta bisa ikut serta dalam menyumbangkan acuan dalam bidang mikrokontroler AT89 dan AVR. klo gak baca punya pak agfi.

S3) Copyright (c) 2010 by Agfianto Eko Putra and Dhani Nugraha .Untuk Kerjasama Seminar/Proyek/Coaching silahkan hubungi 08886931260 atau email ke agfi@ugm. S2.id Seminar Teknologi Embedded Electronics (mikrokontroler. fpga. Coaching Tugas Akhir (S1.ac. plc) Seminar/Talkshow Pasti Ada Hikmahnya & Transformasi Diri Otomasi Sistem.91 .

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->