Top Banner
1 MODUL PRAKTIKUM MIKROKONTROLER DAN INTERFACING Modul ajar ini dibiayai dari dana DIPA Nomor : 0622/023-04.2.01/15/2012 tanggal 9 Desember 2011 Politeknik Negeri Malang Oleh : Ir. Azam Muzakhim Imammuddin, MT NIP. 196705041994031004 POLITEKNIK NEGERI MALANG 2012
85

Praktikum Mikrokontroler Dasar ATMega16-Azam

Feb 09, 2016

Download

Documents

Malvin Faizal

m
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Praktikum Mikrokontroler Dasar ATMega16-Azam

1

MODUL

PRAKTIKUM MIKROKONTROLER DAN INTERFACING

Modul ajar ini dibiayai dari dana DIPA Nomor : 0622/023-04.2.01/15/2012 tanggal 9 Desember 2011

Politeknik Negeri Malang

Oleh : Ir. Azam Muzakhim Imammuddin, MT

NIP. 196705041994031004

POLITEKNIK NEGERI MALANG

2012

Page 2: Praktikum Mikrokontroler Dasar ATMega16-Azam

2

HALAMAN PENGESAHAN

MODUL AJAR

1. Judul Modul Ajar : Praktikum Mikrokontroler dan Interfacing

Digunakan Pada Mata Kuliah Semester

: : :

Praktikum Mikrokontroler dan Interfacing (3) tiga

2. Penulis Utama 1. Nama Lengkap 2. NIP 3. Pangkat/golongan 4. Jabatan 5. Program Studi 6. Jurusan

: : : : : : :

Ir. Azam Muzakhim Imammuddin, MT 196705041994031004 IV/a Staf Pengajar Teknik Telekomunikasi Teknik Elektro

3. Jumlah AnggotaTim Penulis a. Nama Anggota 1 b. Nama Anggota 2

: : :

- orang ………………………………..... ……………………………….....

4. Bidang Ilmu : Mikroprosesor 5. Sumber Dana : Modul ajar ini dibiayai dengan dana

DIPA Nomor : 0622/023-04.2.01/15/2012 tanggal 9 Desember 2011 Politeknik Negeri Malang

Malang, 10 Nopember 2012 Menyetujui, Ketua Jurusan Teknik Elektro Penulis Utama, Supriatna Adhisuwignjo. S.T., M.T. Ir. Azam Muzakhim I., M.T. NIP. 19710108 199903 1 001 NIP. 19670405 199403 1 004 Mengetahui,

Direktur Politeknik Negeri Malang

Ir. Tundung Subali Patma, M.T. NIP. 19590424 1988031 002

Page 3: Praktikum Mikrokontroler Dasar ATMega16-Azam

3

SURAT PERNYATAAN Yang bertanda tangan di bawah ini:

Nama Lengkap : Ir. Azam Muzakhim Imammuddin, MTnuri, ST. NIP : 196705041994031004 Bidang Ilmu : Mikroprosesor Pangkat/Golongan : IV/aI Jabatan Fungsional : Lektor Kepala Jurusan/Program Studi : Teknik Elektro/Teknik Telekomunikasi Perguruan Tinggi : Politeknik Negeri Malang

Dengan ini menyatakan bahwa:

1. Naskah modul ajar bidang ilmu “Mikroprosesor” dengan judul:

”PRAKTIKUM MIKROKONTROLER DAN INTERFACING”

Belum pernah diterbitkan dan bebas dari plagiarisme.

2. Bersedia menuntaskan naskah modul ajar sesuai waktu yang ditentukan. Demikian surat pernyataan ini dibuat dengan sebenarnya.

Malang, 10 Nopember 2012

Disahkan oleh, Yang membuat, Ketua Jurusan Teknik Elektro Supriatna Adhisuwignjo. S.T., M.T. Ir. Azam Muzakhim I., M.T. NIP. 19710108 199903 1 001 NIP. 19670405 199403 1 004

Mengetahui:

Direktur

Ir. Tundung Subali Patma, M.T. NIP 19590424 198803 1 002

Page 4: Praktikum Mikrokontroler Dasar ATMega16-Azam

4

KATA PENGANTAR

Segala puji dan syukur bagi Allah SWT, atas segala berkat rahmat dan

nikmat –Nya dengan terselesaikannya modul ajar bidang ilmu “Mikroprosesor”

dengan judul “PRAKTIKUM MIKROKONTROLER DAN INTERFACING”

di Jurusan Teknik Elektro program Studi Telekomunikasi.

Dan pada kesempatan ini tak lupa kami sampaikan terima kasih kepada:

Direktur Politeknik Negeri Malang

Ketua Jurusan Teknik Elektro

Ketua Program Studi Teknik Telekomunikasi

Dan rekan-rekan pengajar jurusan Teknik Elektro terutama Program Studi

Telekomunikasi Politeknik Negeri Malang

Dan semoga hal ini dapat bermanfaat bagi kita semua

Malang, 10 Nopember 2012

Penulis

Page 5: Praktikum Mikrokontroler Dasar ATMega16-Azam

5

DAFTAR ISI

halaman

KATA PENGANTAR i

DAFTAR ISI ii

DAFTAR TABEL iii

DAFTAR GAMBAR iv

BAB I DASAR MIKROKONTROLER 1

1.1. Pendahuluan 1

1.2. Mikrokontroler ATMega 16 2

1.3. Bahasa C 8

1.3.1. Struktur Bahasa C 8

1.3.2. Indentifiers 9

1.3.3. Konstanta 9

1.3.4. Tipe Data 10

1.3.5. Operator 10

1.3.6. Kontrol Aliran Program 12

BAB II CODEVISION AVR DAN PROTEUS 16

2.1. Codevision AVR 16

2.1.1. Tata Cara Menggunakan CodeWizard 18

2.1.2. Penulisan Program Bahasa C di CodeVision AVR 23

2.2. Proteus 29

2.2.1. Langkah-Langkah Menggunakan Proteus 30

BAB III INPUT-OUTPUT 38

3.1. Teori Dasar Input-Output 38

3.2. Tampilan Seven Segmen 40

3.3. Cara Menggunakan Progisp AVR Programmer 42

3.4. Percobaan I Input Output 44

3.5. Percobaan II Input Output 45

BAB IV ANALOG TO DIGITAL CONVERTER (ADC) 46

4.1. ADC Dalam ATMega 16 46

4.2. LM35 51

Page 6: Praktikum Mikrokontroler Dasar ATMega16-Azam

6

Halaman

4.3. LDR 52

4.4. Tata Cara Inisialisasi ADC dengan CodeWizard 53

4.5. Percobaan I ADC 55

4.6. Percobaan II ADC 56

4.7. Percobaan III ADC 56

4.8. Percobaan IV ADC 57

BAB V UNIVERSAL SYNCHRONOUS AND ASYNCHRONOUS

SERIAL RECEIVER TRANSMITTER (USART) 58

5.1. USART Dalam ATMega 16 58

5.2. Cara Inisialisasi USART dengan Code Wizard 66

5.3. Percobaan I USART ATMega16 69

5.4. Percobaan II USART ATMega16 72

5.5. Percobaan III USART ATMega 16 72

DAFTAR PUSTAKA 73

Page 7: Praktikum Mikrokontroler Dasar ATMega16-Azam

7

DAFTAR TABEL

Halaman

Tabel 1.1. Fungsi Alternatif Pin-Pin Port B 5

Tabel 1.2. Fungsi Alternatif Pin-Pin Port C 6

Tabel 1.3. Fungsi Alternatif Pin-Pin Port D 6

Tabel 1.4. Tipe Data dalam Bahasa C 10

Tabel 1.5. Daftar Operator Kondisi 11

Tabel 1.6. Daftar Operator Aritmatika 11

Tabel 1.7. Daftar Operator Logika 11

Tabel 1.8. Daftar Operator Bitwise 11

Tabel 1.9. Daftar Operator Assignment 12

Tabel 3.1. Nilai Port C untuk menampilkan angka 0 sampai 9 41

Tabel 4.1. Pilihan Tegangan Referensi ADC 48

Tabel 4.2. Kanal Input ADC untuk jenis Single Ended Input 49

Tabel 4.3. Frekuensi clock ADC 50

Tabel 5.1.Pengaturan bit-bit UPM 64

Tabel 5.2. Kombinasi UCSZ2 sampai UCSZ0 untuk Pengaturan

Ukuran Karakter 65

Tabel 5.3. Pengaturan Bit UCPOL 65

Tabel 5.4. Perhitungan Baud Rate dan nilai Register UBRR 66

Page 8: Praktikum Mikrokontroler Dasar ATMega16-Azam

8

DAFTAR GAMBAR

Halaman

Gambar 1.1. Blok Diagram ATMega 16 3

Gambar 1.2. Konfigurasi Pin ATMega 16 4

Gambar1.3. Peta Memori Program ATMega 16 7

Gambar 1.4. Peta Memori Data 7

Gambar 1.5. Flowcart Perintah if 12

Gambar 1.6. Flowcart Perintah if – else 13

Gambar 1.7. Flowcart Perintah while 14

Gambar 1.8. Flowcart Perintah do – while 14

Gambar 1.9. Flowcart Perintah for 15

Gambar 2.1. Tampilan Awal Program CodeVisionAVR 18

Gambar 2.2. Langkah Awal Pembuatan Program 19

Gambar 2.3. Tampilan Setelah Pilihan File >> New 19

Gambar 2.4. Tampilan Setelah Tombol Ok dipilih 19

Gambar 2.5. Tampilan Berikutnya Setelah Pilihan Yes 20

Gambar 2.6. Menu Pertama CodeWizard untuk Pemilihan Mikrokontroler 20

Gambar 2.7. Menu Port pada CodeWizard 21

Gambar 2.8. Proses Pembuatan Program 21

Gambar 2.9. Proses Pemberian Nama file .c 22

Gambar 2.10. Proses pemberian nama file Project 22

Gambar 2.11. Tampilan untuk Penyimpanan file .cwp 22

Gambar 2.12. Tampilan Awal CodeVisionAVR Setelah Menggunakan

CodeWizard 23

Gambar 2.13. Tampilan Header file dan Deklarasi variabel Global 25

Gambar 2.14. Tampilan Penulisan Program Utama 26

Gambar 2.15. Cara melakukan Kompilasi Program 27

Gambar 2.16. Informasi Hasil Kompilasi 27

Gambar 2.17. Cara Melakukan “Build” Program 28

Gambar 2.18. Tampilan Infromasi setelah Proses “Build” Program 28

Gambar 2.19. Beberapa ToolBar Program Proteus 29

Page 9: Praktikum Mikrokontroler Dasar ATMega16-Azam

9

halaman

Gambar 2.20. Tampilan setelah tombol P di-klik 30

Gambar 2.21. Menu Terminals Mode 30

Gambar 2.21. Tampilan saat memasukkan Keyword ATMega16 31

Gambar 2.22. Meletakkan ATMega di dalam Sheet 31

Gambar 2.23. Tampilan saat Pengambilan Komponen LED-YELLOW 32

Gambar 2.24. Tampilan Saat pengambilan Resistor 32

Gambar 2.25. Rangkaian Mikrokontroler ATMega16, Resistor dan LED 33

Gambar 2.26. Tampilan saat mengambil DIPSW-8 33

Gambar 2.27. Tampilan Komponen Mode untuk Resistor Pack 34

Gambar 2.28. Rangkaian Percobaan I Input Output 34

Gambar 2.29. Tampilan Setelah ATMega 16 di-klik 35

Gambar 2.30. Tampilan Saat Mengambil File hex untuk di unduhkan ke

ATMega16 35

Gambar 2.31. Setting Clock ATMega 16 36

Gambar 2.32. Tampilan Saat Tombol Play ditekan 36

Gambar 3.1. Register-Register PORTA 39

Gambar 3.2. Tampilan Seven Segmen 41

Gambar 3.3 Tampilan ProgIsp 42

Gambar 3.4. Hasil Perubahan mikrokontroler yang digunakan 42

Gambar 3.5. Tampilan Saat hardware sudah terpasang 43

Gambar 3.6. Tampilan Menu Open Load Flash 43

Gambar 3.7. Rangkain ATMega16 untuk Percobaan Input-Output 44

Gambar 3.8. Rangkaian Mikrokontoler ATMega16

dengan LED dan 7 Segmen 44

Gambar 3.9. Flowcart untuk menampilkan Nim 1

dan Nim2 pada 7 Segmen 45

Gambar 4.1. Blok Diagram ADC ATMega 16 46

Gambar 4.2. Bit-bit dalam Register ADMUX 48

Gambar 4.3. Format Hasil Konversi Bila DLAR sama dengan 0 48

Gambar 4.4. Format Hasil Konversi Bila DLAR sama dengan 1 49

Gambar 4.5. Bit-bit dalam register ADCSRA 49

Page 10: Praktikum Mikrokontroler Dasar ATMega16-Azam

10

halaman

Gambar 4.6. Rangkaian Sensor Suhu dalam Celcius 51

Gambar 4.7. Salah Satu Bentuk Fisik LM35 51

Gambar 4.8. Karakteristik dan Simbol LDR 52

Gambar 4.9. LDR 52

Gambar 4.10. ADC dengan CodeWizard 53

Gambar 4.11. Lanjutan Inisialisasi ADC dengan CodeWizard 54

Gambar 4.12. Fungsi adc_read(adc_input) 54

Gambar 4.13. Cara Menggunakan fungsi read_adc() 55

Gambar 3.14. Rangkain ATMega16 untuk percobaan ADC 55

Gambar 4.15. Percobaan Menggunakan LDR 56

Gambar 4.16. Setting Volt Referensi sebesar 2,56 Volt 57

Gambar 5.1. Blok Diagram USART pada ATMega 16 59

Gambar 5.2. Register UDR 60

Gambar 5.3. Bit-Bit Register UCSRA 60

Gambar 5.4. Bit-bit Register UCSRB 62

Gambar 5.5. Bit-bit Register UCSRC 63

Gambar 4.6. Bit-bit Register UBRRH dan UBRRL 65

Gambar 5.7. Inisialisasi USART dengan Code Wizard 67

Gambar 5.8. Inisialisasi USART Lanjutan 67

Gambar 5.9. Fungsi interrput [USART_RXC] dan getchar(void) 68

Gambar 5.10. Letak Penulisan Program Terima Data Serial 69

Gambar 5.11. Letak Program Kirim Data Serial 69

Gambar 5.12, Rangkaian Percobaan USART ATMega16 70

Gambar 5.13. Rangkaian Percobaan II USART ATMega16 72

DAFTAR PUSTAKA 73

Page 11: Praktikum Mikrokontroler Dasar ATMega16-Azam

11

BAB I DASAR PEMROGRAMAN MIKROKONTROLER

Capaian Pembelajaran:

Setelah membaca dan mengkaji bab ini, pembaca akan mampu:

Menjelaskan tentang Mikrokontroler ATMega16 dan fasilitas-fasilitas yang

dimiliknya;

Menjelaskan stuktur dasar bahasa pemrograman C untuk pemrograman

ATMega16

1.1. Pendahuluan

Mikrokontroler adalah merupakan suatu chip tunggal yang berisi

mikroprosesor dan memori program yang biasanya bersifat Read Only Memory

(ROM), memori serbaguna atau biasa disebut Random Access Memory (RAM),

Unit Input-Output, Unit Timer/Counter dan beberapa fasilitas yang lain seperti

Analog to Digital Converter (ADC), Electrical Eresable Programmable ROM

(EEPROM) dan lain-lain. Mikrokontroler dapat juga dianggap mikrokomputer,

hal ini karena hanya dengan satu chip/Integrated Circuit(IC) sudah memiliki unit-

unit yang setara dengan semua komputer.

Salah satu perusahaan yang mengembangkan mikrokontroler adalah Atmel

dengan jenis mikrokontroler AVR (Alf and Vegard’s Risc prosesor) yang

dibangun dengan arsitektur Reduced Intruction Set Computing (RISC) 8 bit yang

mengemas semua instruksi dalam kode 16-bit dengan sebagian besar instruksi

dikerjakan/dieksekusi dalam 1 (satu) siklus clock. Dan bila dibandingkan dengan

MCS’51 untuk mengerjakan satu instruksi membutuhkan 12 siklus clock. Hal ini

terjadi karena kedua jenis mikrokontroler tersebut memiliki arsitektur yang

berbeda. AVR berteknologi RISC (Reduced Instruction Set Computing),

sedangkan seri MCS 51 berteknologi CISC (Complex Instruction Set Computing).

Atmel mengelompokkan AVR menjadi 4 keluarga yaitu keluarga ATtiny,

keluarga AT90Sxx, keluarga ATMega dan AT86RFxx. Yang membedakan antara

kelompok adalah kapasitas memori, kemampuan peripheral, dan fungsinya.

Sedangkan dari segi arsitektur dan instruksi yang digunakan hampir sama. Dan

Page 12: Praktikum Mikrokontroler Dasar ATMega16-Azam

12

yang memiliki fasilitas yang lengkap adalah keluarga ATMega. Salah satu yang

termasuk dalam keluarga ATMega adalah ATMega 16.

1.2. Mikrokontroler ATMega 16

ATMega 16 adalah sebuah mikrokontroler CMOS 8 bit yang berdaya

rendah yang berbasiskan arsitektur pengembangan RISC dengan satu instruksi

dikerjakan dalam satu clock dengan mencapai kecepatan throughputs mendekati 1

MIPS per MHz yang dapat membuat perancangan system yang lebih

mengoptimalkan konsumsi daya dibandingkan dengan kecepatan proses.

ATMega 16 merupakan prosessor AVR yang menggabungkan instruksi set

yang banyak dengan 32 register umum. Yang ke semua 32 register secara

langsung dihubungkan dengan Aritmatika Logika Unit (ALU), yang

memungkinkan dua buah register yang independen untuk diakses dalam satu

instruksi dieksekusi dalam satu siklus clock. Yang dihasilkan dari arsitektur AVR

adalah kode yang lebih efisien dengan capaian throughputs hingga sepuluh kali

lebih cepat dari konvensional CISC mikrokontroler.

ATmega16 ini menyediakan beberapa fitur sebagai berikut: 16 Kbyte In-

System Programmable Flash, Memori program dengan kemampuan Baca-Tulis-

Sementara, 512 byte EEPROM, 1 Kbyte SRAM, 32 jalur I/O, 32 register kerja,

antarmuka JTAG untuk Boundaryscan, dukungan dan pemrograman On-chip

Debugging, tiga Timer / Counter fleksibel dengan mode perbandingan, Interupsi

Internal dan Eksternal, sebuah programmable serial USART, Dua-kawat Serial

Interface berorientasi byte, serial USART (Universal Synchronous and

Asynchronous serial Receiver and Transmitter) yang dapat diprogram,8 kanal 10-

bit ADC, 4 saluran PWM (Pulse Width Modulation), Master Slave (SPI) Serial

Interface dan Watchdog Timer yang dapat diprogram dengan osilator internal,

port serial SPI, dan enam pilihan mode daya rendah.

Mikrokontroler ini diproduksi dengan menggunakan teknologi nonvolatile

memori Atmel yang canggih. Dilengkapi dengan OnChip ISP (In System

Programming) Flash memori program yang memungkinkan untuk sistem

diprogram ulang melalui interface SPI serial oleh seorang programmer atau

dengan program Boot On-chip yang berjalan pada inti AVR. Atau melalui

Page 13: Praktikum Mikrokontroler Dasar ATMega16-Azam

13

program boot yang dapat menggunakan interface untuk men-download aplikasi

program di Flash memori Aplikasi. Software di bagian flash Boot akan terus

berjalan sedangkan bagian flash Aplikasi diperbarui, sehingga menyediakan

proses Baca - Tulis saat mikrokontroler beroperasi.

Oleh karena menggabungkan sebuah CPU RISC 8-bit dengan In-System

Self Programmable Flash pada sebuah chip monolitik, sehingga Atmel

ATmega16 adalah mikrokontroler kuat yang sangat fleksibel, hemat biaya dan

solusi untuk banyak aplikasi control.

Gambar 1.1 menunjukkan Blok Diagram dari ATMega 16. Sedangkan

untuk konfigurasi Pin ATMega 16 ditunjukkan dalam Gambar 1.2.

Gambar 1.1. Blok Diagram ATMega 16 (ATMega,20120;3)

Page 14: Praktikum Mikrokontroler Dasar ATMega16-Azam

14

Gambar 1.2. Konfigurasi Pin ATMega 16(ATMega16,2010;2)

Dengan Penjelasan Pin Gambar 1.2. sebagai berikut:

- VCC Sumber Catu Daya Digital

- GND Ground

- Port A (PA7 -

PA0)

Port A berfungsi sebagai input-input analog untuk A/D

Converter.

Port A juga berfungsi sebagai 8-bit bidirectional port I / O,

jika A/D Converter tidak digunakan. pin port juga

menyediakan internal pull-up resistor yang dipilih untuk

setiap bitnya.

- Port B (PB7 –

PB0)

Port B adalah 8-bit bidirectional I /O port dengan internal

pull-up resistor (dipilih untuk setiap bit).

Masing-masing Pin Port B juga berfungsi seperti yang

Page 15: Praktikum Mikrokontroler Dasar ATMega16-Azam

15

ditunjukkan dalam Tabel 1.1

- Port C (PC7 -

PC0)

Port C adalah 8-bit bidirectional I / O port dengan internal

pull-up resistor (dipilih untuk setiap bit).

Masing-masing Pin Port C juga berfungsi seperti yang

ditunjukkan dalam Tabel 1.2

- Port D (PD7 -

PD0)

Port D adalah 8-bit bidirectional I / O port dengan internal

pull-up resistor (dipilih untuk setiap bit).

Masing-masing Pin Port D juga berfungsi seperti yang

ditunjukkan dalam Tabel 1.3

- RESET Input Reset. Reset akan terjadi saat logika 0 diberikan

selama lebih dari lebar pulsa minimum. Aktif Rendah

- XTAL1 Input Rangkaian Osilator Clock Internal

- XTAL2 Input Rangkaian Osilator Clock Internal

- AVCC AVCC adalah tegangan suplai pin untuk Port A dan A / D

Konverter. Pin Ini harus secara eksternal terhubung ke

VCC, meskipun ADC tidak digunakan. Jika ADC

digunakan, harus dihubungkan ke VCC melalui filter low-

pass.

- AREF Pin Analog Referensi untuk A/D Konverter

Tabel 1.1. Fungsi Alternatif Pin-Pin Port B (ATMega,2010;58)

Pin Fungsi Alternatif PB7 SCK (SPI Bus Serial Clock) PB6 MISO (SPI Bus Master Input/Slave Output) PB5 MOSI (SPI Bus Master Output/Slave Input) PB4 SS (SPI Slave Select Input) PB3 AIN1 (Analog Comparator Negative Input)

OC0 (Timer/Counter0 Output Compare Match Output) PB2 AIN0 (Analog Comparator Positive Input)

INT2 (Input Eksternal Interupsi 2) PB1 T1 (Timer/Counter1 External Counter Input) PB0 T0 (Timer/Counter0 External Counter Input)

XCK (USART External Clock Input/Output)

Page 16: Praktikum Mikrokontroler Dasar ATMega16-Azam

16

Tabel 1.2. Fungsi Alternatif Pin-Pin Port C (ATMega16, 2010:61)

Pin Fungsi Alternatif PC7 TOSC2 (Timer Oscillator Pin 2) PC6 TOSC1 (Timer Oscillator Pin 1) PC5 TDI (JTAG Test Data In) PC4 TDO (JTAG Test Data Out) PC3 TMS (JTAG Test Mode Select) PC2 TCK (JTAG Test Clock) PC1 SDA (Two-wire Serial Bus Data Input/Output Line) PC0 SCL (Two-wire Serial Bus Clock Line)

Tabel 1.3. Fungsi Alternatif Pin-Pin Port D (ATMega16, 2010;63)

Pin Fungsi Alternatif

PD7 OC2 (Timer/Counter2 Output Compare Match Output)

PD6 ICP1 (Timer/Counter1 Input Capture Pin)

PD5 OC1A (Timer/Counter1 Output Compare A Match

Output)

PD4 OC1B (Timer/Counter1 Output Compare B Match

Output)

PD3 INT1 (External Interrupt 1 Input)

PD2 INT0 (External Interrupt 0 Input)

PD1 TXD (USART Output Pin)

PD0 RXD (USART Input Pin)

ATMega 16 memiliki dua memori utama yaitu Memori Program dan

Memori Data dengan tambahan juga memiliki memori EEPROM untuk tempat

penyimpanan data.

ATMega 16 memiliki 16 Kbyte Flash memori untuk penyimpanan

program yang dibagi menjadi dua bagian yaitu bagian Boot program dan bagian

aplikasi program. Flash memori program memiliki daya tahan sedikitnya 10.000

proses tulis atau hapus. Dan untuk menjangkau Flash memori program ATMega

16 memiliki Register Program Counter (PC) selebar 13 bit. Yang menjangkau 8K

lokasi memori program. Sedangkan pada bagiah Boot program dilengkapi dengan

Page 17: Praktikum Mikrokontroler Dasar ATMega16-Azam

17

Boot lock bits yang digunakan untuk melindungi software yang telah ada di dalam

ATMega 16. Gambar 1.3 menunjukkan peta memori program dalam ATMega 16.

Gambar.1.3. Peta Memori Program ATMega 16(ATMega16,2010;16)

ATMega 16 Memiliki Memori Data yang terdiri dari 1120 lokasi alamat

dari Register File, I/O Memori dan data SRAM internal. 96 lokasi alamat pertama

digunakan oleh Regiter File dan I/O Memori dan 1024 lokasi alamat digunakan

untuk data SRAM Internal. Dan 96 lokasi alamat Register File dan I/O Memori

terdiri dari 32 register umum untuk kerja dan 64 Register yang digunakan untuk

I/O. Dan gambar 1.4. menunjukkan Peta Memori Data. Dan sebagai tambahan

terdapat 512data memori EEPROM di dalam ATMega 16 byte. Yang diorganisasi

secara terpisah, yang setiap byte dapat dibaca dan ditulis. EEPROM memiliki

ketahanan sedikitnya 100.000 siklus tulis atau menghapus.

Gambar 1.4. Peta Memori Data(ATMega16,2010;17)

Page 18: Praktikum Mikrokontroler Dasar ATMega16-Azam

18

1.3. Bahasa C

Pada saat ini sudah dikembangkan bahwa untuk membuat pemrograman

mikrokontroler menggunakan bahasa level tinggi bukan menggunakan bahasa

assembly maupun bahasa mesin. Salah satu bahasa level tinggi yang banyak

digunakan adalah bahasa C. Ada beberapa software pemrograman mikrokontroler

yang menggunakan bahasa C sebagai bahasa pemrogramannya seperti Codevision

AVR dan WinAVR.

1.3.1. Struktur Bahasa C

Untuk dapat memahami bagaimana suatu program ditulis, maka struktur

dari program harus dimengerti terlebih dahulu, atau sebagai pedoman penulis

program (programmer) bagaimana seharusnya program tersebut ditulis.

Dalam penulisan program dengan menggunakan bahasa C maka harus

mengetahui struktur dari program dengan menggunakan bahasa C. Program dalam

bahasa C dapat dilihat sebagai sekumpulan dari sebuah atau lebih fungsi. Dan

fungsi pertama yang harus ada di pemrogram bahasa C adalah fungsi main().

Sedangkan untuk fungsi-fungsi yang lain dapat dituliskan setelah atau

sebelum fungsi main () dengan menuliskan deskripsi prototype fungsi pada bagian

awal program. Dan dapat juga fungsi-fungsi yang lain dituliskan di file lain,

apabila diinginkan untuk digunakan maka tinggal menuliskan header file dari

fungsi-fungsi tersebut dengan preprocessor directive #include. Seperti contoh bila

kita menggunakan mikrokontroler ATMega16, maka kita harus mengambil

fungsi-fungsi untuk ATMega16 dengan perintah sebagai berikut:

#include<mega16.h>

Sebagai Contoh penulisan program untuk menyalakan LED di PORTB

// deklarasi fungsi-fungsi ekternal

#include <mega16.h> // mengambil fungsi-fungsi untuk ATMega16

#include <delay.h> // mengambil fungsi-fungsi untuk proses tunda

// deklarasi variable global

unsigned char dataout; // deklarasi dataout dalam byte

Page 19: Praktikum Mikrokontroler Dasar ATMega16-Azam

19

// penulisan program utama

void main(void)

{

// Port B initialization Port B sebagai output

PORTB=0x00;

DDRB=0xFF;

dataout=00;

// Penulisan program ada di dalam while (1)

while(1)

{

PORTB=dataout; // PB = dataout

delay_ms(100); // tunda selama 100 ms

dataout=dataout+1; // dataout ditambah 1;

}

}

1.3.2. Indentifiers

Dalam pemrogramaman bahasa C sangat perlu sekali untuk diketahui

dalam pemberiah nama atau Identifier yang diberikan pada variabel, fungsi, label

atau objek lain. Dalam pemberian nama dapat mengandung huruf yaitu besar A

sampai Z dan huruf kecil a sampai z dan angka 0 sampai 9 dan karakter ( _ ).

Nama yang digunakan bersifat Case sensitive yaitu membedakan antara huruf

besar dan huruf kecil. Dan untuk nama dapat mencapai maksimal 32 karakter.

1.3.3. Konstanta

Dalam pemrogramam bahasa C ada beberapa cara dalam penulisan

konstanta yaitu sebagai berikut: Penulisan untuk Integer dan long integer ditulis

dalam bentuk decimal (123), bila ditulis dalam bentuk biner maka harus didahului

0b seperti 0b10101001, dan jika ditulis dalam bentuk hexadecimal maka harus

didahului 0x seperti 0xA9, sedangkan untuk konstanta karakter harus dilingkungi

oleh tanda kutip seperti ‘a’.

Page 20: Praktikum Mikrokontroler Dasar ATMega16-Azam

20

1.3.4. Tipe Data

Untuk tipe tipe data yang dimiliki oleh pemrograman bahasa C

ditunjukkan dalam Tabel 1.4 berikut ini.

Tabel 1.4. Tipe Data dalam Bahasa C (Andrianto,2008;21)

Tipe Ukuran (Bit) Range

Bit 1

0,1 (Tipe data bit hanya dapat

digunakan untuk variable

global.)

Char 8 -128 to 127

Unsigned char 8 0 to 255

Signed char 8 -128 to 127

Int 16 -32768 to 32767

Short int 16 -32768 to 32767

Unsigned int 16 0 to 65535

Signed int 16 -32768 to 32767

Long int 32 -2147483648 to 214783647

Unsigned long int 32 0 to 4294967295

Signed long int 32 -2147483648 to 214783647

Float 32 ±1.175e-38 to ±3.402e38

Double 32 ±1.175e-38 to ±3.402e38

1.3.5. Operator

Dalam pemrograman operator merupakan intruksi khusus yang digunakan

untuk variable. Adab beberapa yang sering digunakan yaitu operator kondisi atau

pembanding seperti yang ditunjukan dalam Tabel 1.5, operator atirmatika

ditunjukkan dalam Tabel 1.6, operator logika ditunjukkan dalam Tabel 1.7,

operator bitwise ditunjukkan dalam Tabel 1.8, operator Assignment ditunjukkan

dalam Tabel 1.9.

Page 21: Praktikum Mikrokontroler Dasar ATMega16-Azam

21

Tabel 1.5. Daftar Operator Kondisi (Andrianto,2008;22)

Operator Kondisi Keterangan

< Lebih kecil

< = Lebih kecil atau sama dengan

> Lebih besar

> = Lebih besar atau sama dengan

= = Sama dengan

! = Tidak sama dengan

Tabel 1.6. Daftar Operator Aritmatika(Andrianto,2008;22)

Operator Aritmatika Keterangan

+ Penjumlahan

- Pengurangan

* Perkalian

/ Pembagian

% Sisa Bagi (modulus)

Tabel 1.7. Daftar Operator Logika(Andrianto,2008;22)

Operator Logika Keterangan ! Boolean NOT && Boolean AND | | Boolean OR

Tabel 1.8. Daftar Operator Bitwise(Andrianto,2008;22)

Operator Bitwise Keterangan

Komplemen Bitwise

& Bitwise NOT

| Bitwise OR

^ Bitwise Exclusive OR

>> Right Shift

<< Left Shift

Page 22: Praktikum Mikrokontroler Dasar ATMega16-Azam

22

A>30

PB=0xFF

Y

T

Tabel 1.9. Daftar Operator Assignment(Andrianto,2008;23)

Opereator Assignment Keterangan

= Untuk memasukkan nilai

+ = Untuk menambah nilai dari keadaan semula

- = Untuk mengurangi nilai dari keadaan semula

* = Untuk mengalikan nilai dari keadaan semula

/ = Untuk melakukan pembagian terhadap bilangan

semula

% = Untuk memasukkan nilai sisa bagi dari pembagian

bilangan semula

<< = Untuk memasukkan shift left

>> = Untuk memasukkan shift right

& = Untuk memasukkan bitwise AND

^ = Untuk memasukkan bitwise XOR

\ = Untuk memasukkan bitwise OR

1.3.6. Kontrol Aliran Program

Dalam pemrograman ada beberapa perintah yang dapat digunakan untuk

mengendalikan aliran program antara lain:

a. Perintah percabangan if (…){…} digunakan untuk mengecek satu kondisi

untuk satu blok jawaban dengan flowcart ditunjukkan dalam Gambar 1.5.

Gambar 1.5. Flowcart Perintah if

Dan dengan cara penulisannya sebagai berikut:

Page 23: Praktikum Mikrokontroler Dasar ATMega16-Azam

23

A >30

P B =0xFF

Y

T

P B = 0x00

if(_uji_benar_atau_salah_)

{_eksekusi_blok_ini_jika_benar_; } ;

seperti contoh:

if (A>30) // jika A lebih besar 30 maka PB = 0xff;

{ PORTB = 0xff;}

b. Perintah percabangan if(…){…} else {…} digunakan untuk mengecek satu

kondisi untuk dua blok jawaban dengan flowcart ditunjukkan dalam Gambar

1.6.

Gambar 1.6. Flowcart Perintah if – else

Dan cara penulisannya sebagai berikut:

if(_uji_benar_atau_salah_)

{_eksekusi_blok_ini_jika_benar_; }

else {_eksekusi_blok_ini_jika_salah_; } ;

seperti contoh:

if (A > 30) // Jika A lebih besar 30

{PORTB=0xff} // maka PB = 0xff;

else {PORTB=0x00;} // jika tidak PB=0x00

c. Perintah while ( … ) { … } digunakan untuk perulangan jika kondisi yang

diuji bernilai benar dengan flowcart ditunjukkan dalam Gambar 1.7

Page 24: Praktikum Mikrokontroler Dasar ATMega16-Azam

24

A > 3 0 P B = 0 x F FA = P A

Y

T

A > 3 0

Y

T

P B = 0 x f fA = P A

Gambar 1.7. Flowcart Perintah while

d. dan cara penulisannya sebagai berikut:

while (_eksekusi_blok_ini_jika_benar_atau_salah)

{_selama_benar_blok_ini_akan_selalu_dieksekusi_;};

Seperti contoh:

while (A > 30) // Ulangi selama A lebih besar dari 30,

{ PORTB = 0xff; // PB =0xff;

A = PINA; } // A=PA;

e. Perintah do {…} while (…) digunakan untuk perulangan jika kondisi yang

diuji bernilai benar. Pada perintah ini blok {…} dikerjakan dahulu baru

kemudian diuji, jika benar maka blok {…} diulangi lagi. Dengan flowcart

ditunjukkan dalam Gambar 1.8.

Gambar 1.8. Flowcart Perintah do – while

Page 25: Praktikum Mikrokontroler Dasar ATMega16-Azam

25

I< 1 0

Y

T

I= 1

P B = d a ta o u tD a ta o u t+ +

i+ +

Dan cara penulisannya sebagai berikut:

do

{_selama_benar_blok_ini_akan_selalu_dieksekusi_;}

while (_uji_benar_atau_salah_);

Seperti contoh:

do

{ PORTB = 0xff; // PB = 0xff

A = PINA;} // A= PORTA

while (A > 30); // selama A > 30 kerjakan blok diatasnya

f. Perintah for (…. ; …. ; ….) {…} digunakan untuk perulangan dengan kondisi

dan syarat yang telah ditentukan. Biasanya digunakan perulangan dengan

jumlah tertentu dengan flowcart ditunjukkan dalam Gambar 1.9.

Gambar 1.9. Flowcart Perintah for

Dan cara penulisannya sebagai berikut :

for (_kondisi _awal ; _uji_kondisi_ ; _aksi_jika_benar)

{_eksekusi_blok_ini_jika_benar_ ;} ;

Seperti contoh:

for (i=1;i<10;i++) // mengulangi blok dibawah ini sebanyak 9 kali

{ PORTB=dataout; // PB = dataout

dataout=dataout+1;} // dataout=dataout+1

Page 26: Praktikum Mikrokontroler Dasar ATMega16-Azam

26

BAB II

CODEVISION AVR DAN PROTEUS Capaian Pembelajaran:

Setelah membaca dan mengkaji bab ini, pembaca akan mampu:

Menjalankan dan menggunakan Program CodeVisionAVR untuk

pemrograman mikrokontroler ATMega16.

Menjalankan dan menggunakan Program Proteus untuk simulasi pemograman

ATMega16.

2.3. Codevision AVR

Salah satu cross-compiler C yang banyak digunakan adalah

CodeVisionAVR yang memiliki Integrated Development Environtment (IDE)

dan Automatic Program Generator yang didesain untuk mikrokontroler buatan

Atmel seri AVR. CodeVisionAVR mampu menerjemahkan hampir semua

perintah dari bahasa ANSI C yang sesuai dengan arsitektur dari AVR dengan

tambahan beberapa fitur untuk mengambil kelebihan khusus dari arsitektur AVR

dan kebutuhan pada sistem embedded dan CodeVisionAVR merupakan hak cipta

dari Pavel Haiduc, HP InfoTech s.r.l.

CodeVisionAVR setelah kompilasi menghasilkan File object COFF yang

dapat digunakan untuk keperluan debugging pada tingkatan C, dengan

pengamatan variabel, menggunakan debugger Atmel AVR Studio. Sedangkan

untuk IDE dalam CodeVisionAVR mempunyai fasilitas internal berupa software

AVR Chip In-System Programmer yang memungkinkan untuk melakukan transfer

program kedalam chip mikrokontroler setelah sukses melakukan

kompilasi/asembli secara otomatis. Software In-System Programmer dapat

bekerja dengan Atmel STK500/AVRISP/AVRProg, Kanda Systems

STK200+/300, Dontronics DT006, Vogel Elektronik VTEC-ISP, Futurlec

JRAVR dan MicroTronics ATCPU/Mega2000 programmers/development boards.

CoceVisionAVR juga dilengkapi dengan fasilitas sebuah teminal yang

menggunakan komunikasi serial untuk keperluan debugging sistem embedded.

CodeVisionAVR selain memiliki library standar C, juga mempunyai

library tertentu seperti untuk:

Page 27: Praktikum Mikrokontroler Dasar ATMega16-Azam

27

Modul LCD alphanumeric

Bus I2C dari Philips

Sensor Suhu LM75 dari National Semiconductor

Real-Time Clock: PCF8563, PCF8583 dari Philips, DS1302 dan DS1307

dari

Maxim/Dallas Semiconductor

Protokol 1-Wire dari Maxim/Dallas Semiconductor

Sensor Suhu DS1820, DS18S20, dan DS18B20 dari Maxim/Dallas

Semiconductor

Termometer/Termostat DS1621 dari Maxim/Dallas Semiconductor

EEPROM DS2430 dan DS2433 dari Maxim/Dallas Semiconductor

SPI

Power Management

Delay

Konversi ke Kode Gray

Kelebihan dari CodeVisionAVR adalah memiliki Automatic Program

Generator bernama CodeWizardAVR, yang akan membantu mempercepat dalam

menulis program dengan pemberian menu-menu sebagai berikut:

Set-up akses memori eksternal

Identifikasi sumber reset untuk chip

Inisialisasi port input/output

Inisialisasi interupsi eksternal

Inisialisasi Timer/Counter

Inisialisasi Watchdog-Timer

Inisialisasi UART (USART) dan komunikasi serial berbasis buffer yang

digerakkan oleh interupsi

Inisialisasi Pembanding Analog

Inisialisasi ADC

Inisialisasi Antarmuka SPI

Inisialisasi Antarmuka Two-Wire

Inisialisasi Antarmuka CAN

Page 28: Praktikum Mikrokontroler Dasar ATMega16-Azam

28

Inisialisasi Bus I2C, Sensor Suhu LM75, Thermometer/Thermostat

DS1621 dan

Real-Time Clock PCF8563, PCF8583, DS1302, dan DS1307

Inisialisasi Bus 1-Wire dan Sensor Suhu DS1820, DS18S20

Inisialisasi modul LCD

Untuk mendapatkan file program dapat diunduh di situs

hpinfotech.ro/html/cvavr.htm dan akan mendapatkan file evaluasi program yang

yang gratis.

2.3.1. Tata Cara Menggunakan CodeWizard

Untuk pembuatan program dengan menggunakan CodeWizard dalam

CodeVisionAVR yang harus dilakukan sebagai berikut:

- Jalankan program CodeVisionAVR sehingga muncul seperti Gambar 2.1

Gambar 2.1. Tampilan Awal Program CodeVisionAVR

- Setelah itu pilih File >> New seperti Gambar 2.2

Page 29: Praktikum Mikrokontroler Dasar ATMega16-Azam

29

Gambar 2.2. Langkah Awal Pembuatan Program

- Kemudian muncul tampilan seperti Gambar 2.3 dan pilih Project daan

tekan OK

Gambar 2.3. Tampilan Setelah Pilihan File >> New

- Dan akan muncul tampilan seperti Gambar 2.4 dan pilih Yes untuk

melanjutkan

Gambar 2.4. Tampilan Setelah Tombol Ok dipilih

Page 30: Praktikum Mikrokontroler Dasar ATMega16-Azam

30

- Setelah itu muncul tampilan seperti Gambar 2.5 dan pilih OK untuk

melanjutkan karena yang akan digunakan adalah ATMega16

Gambar 2.5. Tampilan Berikutnya Setelah Pilihan Yes

- Setelah itu muncul tampilan seperti Gambar 2.6 yang merupakan menu

CodeWizard dan ubah pada bagian chip dengan ATMega16. Dan clock =

8 MHz.

Gambar 2.6. Menu Pertama CodeWizard untuk Pemilihan Mikrokontroler

- Setelah itu pilih atau klik Port untuk memberikan inisialisasi pada Port

yang diinginkan, buat Port A input, Port B input, Port C output dan Port D

output dengan menge-klik data direction B0 sampai B7 (in = input dan out

= output) seperti Gambar 2.7

Page 31: Praktikum Mikrokontroler Dasar ATMega16-Azam

31

Gambar 2.7. Menu Port pada CodeWizard

- Untuk membuat programnya pilih menu Program >> Generate Save and

Exit seperti Gambar 2.8

Gambar 2.8. Proses Pembuatan Program

- Setelah itu muncul tampilan seperti Gambar 2.9 dan masukan nama file

dari program yang akan dibuat, tulis percobaan1 dan tekan Save

Page 32: Praktikum Mikrokontroler Dasar ATMega16-Azam

32

Gambar 2.9. Proses Pemberian Nama file .c

- Setelah itu akan muncul tampilan seperti Gambar 2.10 dan isi File name

dengan “percobaan1” dan tekan Save

Gambar 2.10. Proses pemberian nama file Project

- Setelah itu akan muncul tampilan seperti Gambar 2.11 dan isi File name

dengan “percobaan1” dan tekan Save

Gambar 2.11. Tampilan untuk Penyimpanan file .cwp

Page 33: Praktikum Mikrokontroler Dasar ATMega16-Azam

33

- Maka setelah itu akan muncul tampilan seperti Gambar 2.12, dengan

tampilan seperti ini maka program CodeVisionAVR siap untuk digunakan

membuat program untuk mikrokontroler ATMega16

Gambar 2.12. Tampilan Awal CodeVisionAVR Setelah Menggunakan

CodeWizard

- Setelah itu program dapat dituliskan dalam editor CodeVisioanAVR

2.3.2. Penulisan Program Bahasa C di CodeVision AVR

Struktur dalam penulisan bahasa C secara umum dapat disusun dalam

empat blok yaitu: Header file

Deklarasi konstanta global

Deklarasi procedure dan atau fungsi.

Fungsi Utama.

a. Header

Header file yaitu file yang berisi deklarasi fungsi dan definisi konstanta.

Beberapa file header sudah disediakan oleh CodeVisionAVR. File-file ini

Editornya CodeVisionAVR

Page 34: Praktikum Mikrokontroler Dasar ATMega16-Azam

34

mempunyai ciri bereksistensi .h. file-file header ini biasanya dipanggil

menggunakan fungsi include seperti berikut:

#include <mega16.h> // memanggil deklarasi fungsi dan difinisi konstanta untuk

mikrokontroler ATMega16. Header file ini akan selalu

ada karena mikrokontroler yang digunakan adalah

mikrokontroler ATMega16

#include <delay.h> // memanggil deklarasi fungsi dan difinisi konstanta untuk

waktu tunda. Header file ini digunakan bila dibutuhkan

waktu tunda untuk suatu keluaran.

b. Deklarasi konstansta global

Di bawah header file merupakan letak menuliskan variable global dan oleh

CodeVisionAVR sudah diberi peringat sebagai berikut:

// Declare your global variables here

unsigned char datain;

dan juga digunakan untuk inisialisasi dari Port A, Port B, Port C dan Port D, serta

inisialisasi yang lain. Dan ini contoh inisialisasi untuk Port A input, Port B input,

Port C output dan Port D output.

// Input/Output Ports initialization

// Port A initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In

DDRA=(0<<DDA7) | (0<<DDA6) | (0<<DDA5) | (0<<DDA4) | (0<<DDA3) |

(0<<DDA2) | (0<<DDA1) | (0<<DDA0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

PORTA=(0<<PORTA7) | (0<<PORTA6) | (0<<PORTA5) | (0<<PORTA4) |

(0<<PORTA3) | (0<<PORTA2) | (0<<PORTA1) | (0<<PORTA0);

// Port B initialization

// Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In

DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) |

(0<<DDB2) | (0<<DDB1) | (0<<DDB0);

// State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T

Page 35: Praktikum Mikrokontroler Dasar ATMega16-Azam

35

PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) |

(0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0);

// Port C initialization

// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out

Bit0=Out

DDRC=(1<<DDC7) | (1<<DDC6) | (1<<DDC5) | (1<<DDC4) | (1<<DDC3) |

(1<<DDC2) | (1<<DDC1) | (1<<DDC0);

// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0

PORTC=(0<<PORTC7) | (0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) |

(0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0);

// Port D initialization

// Function: Bit7=Out Bit6=Out Bit5=Out Bit4=Out Bit3=Out Bit2=Out Bit1=Out

Bit0=Out

DDRD=(1<<DDD7) | (1<<DDD6) | (1<<DDD5) | (1<<DDD4) | (1<<DDD3) |

(1<<DDD2) | (1<<DDD1) | (1<<DDD0);

// State: Bit7=0 Bit6=0 Bit5=0 Bit4=0 Bit3=0 Bit2=0 Bit1=0 Bit0=0

PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) |

(0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0);

Seperti yang ditunjukkan dalam Gambar 2.13.

Gambar 2.13. Tampilan Header file dan Deklarasi variabel Global

Page 36: Praktikum Mikrokontroler Dasar ATMega16-Azam

36

c. Deklarasi procedure dan fungsi

Sedangkan untuk deklarasi procedure dan fungsi biasa akan dibuatkan oleh

CodevisionAVR untuk berberapa fungsi dan dapat juga dibuat oleh programmer

d. Fungsi utama

Untuk fungsi utama dalam CodeVision ditempatkan pada bagian bawah program

dalam instruksi while (1) dan diberi tanda dengan tulisan // Place your code here

seperti berikut. Gambar 2.14 menunjukkan tampilan penulisan program utama

while (1)

{

// Place your code here

datain = PINA;

PORTC = datain;

}

Gambar 2.14. Tampilan Penulisan Program Utama

Setelah program utama dituliskan maka langkah berikutnya adalah

kompilasi program dengan menekan F9 atau klik menu Project >> Compile

seperti Gambar 2.15 dan hasilnya akan ditunjukkan seperti Gambar 2.16 yang

memberikan informasi hasil proses kompilasi.

Page 37: Praktikum Mikrokontroler Dasar ATMega16-Azam

37

Gambar 2.15. Cara melakukan Kompilasi Program

Gambar 2.16. Informasi Hasil Kompilasi

Setelah proses kompilasi berhasil dan tanpa adanya kesalahan maka

dilakukan proses “build” program untuk menghasilkan file hex atau coff. Proses

ini dapat dilakukan dengan menekan tombol Shift-F9 bersama-sama ataua

mengklik menu Project >> Build seperti Gambar 2.17 dan informasi hasil proses

“build” akan ditampilkan seperti Gambar 2.18.

Page 38: Praktikum Mikrokontroler Dasar ATMega16-Azam

38

Gambar 2.17. Cara Melakukan “Build” Program

Gambar 2.18. Tampilan Infromasi setelah Proses “Build” Program

Setelah itu maka program dapat ditranferkan ke dalam mikrokontroler

ATMega16. Dan ada baiknya untuk lebih menyakinkan apakah program bekerja

Page 39: Praktikum Mikrokontroler Dasar ATMega16-Azam

39

sesuai dengan rencana, maka dapat disimulasikan dengan menggunakan program

Proteus.

2.4. Proteus

Proteus ISIS merupakan salah satu program yang dapat digunakan untuk

mensimulasikan program mikrokontroler dan rangkaian elektronika yang lainnya.

Dan beberapa toolbar yang sering digunakan dalam melakukan simulasi beserta

fungsinya ditunjukkan dalam Gambar 2.19.

Gambar 2.19. Beberapa ToolBar Program Proteus

Keterangan dan fungsi Gambar 2.19 adalah sebagai berikut:

1. Selection Mode, yang digunakan untuk mengaktifkan kursor

2. Component Mode, yang digunakan untuk memunculkan part atau

komponen yang akan digunakan. Untuk memilih atau memunculkan

komponen tekan tombol P dan akan muncul tampilan seperti Gambar 2.20.

1 2

3

Page 40: Praktikum Mikrokontroler Dasar ATMega16-Azam

40

Gambar 2.20. Tampilan setelah tombol P di-klik

3. Terminals Mode, yang digunakan untuk memunculkan terminal, seperti

Power, Ground, Input, Output dan Bidir (Bidirectional), seperti Gambar

2.21.

Gambar 2.21. Menu Terminals Mode

2.4.1. Langkah-Langkah Menggunakan Proteus

Langkah-langkah menggunakan Proteus ISIS untuk simulasi mikrokontroler

ATMega16 adalah sebagai berikut:

1. Buka Program Proteus ISIS

2. Pilih Component Mode dan klik P sehingga muncul tampilan seperti

Gambar 2.20.

3. Masukkan keywords: Atmega16 sehingga akan muncul tampilan seperti

Gambar 2.21 dan klik OK.

Page 41: Praktikum Mikrokontroler Dasar ATMega16-Azam

41

Gambar 2.21. Tampilan saat memasukkan Keyword ATMega16

4. Taruh ATMega16 di dalam sheet seperti ditunjukkan dalam Gambar 2.22.

Gambar 2.22. Meletakkan ATMega di dalam Sheet

5. Ambil komponen LED seperti langkah 3 dan hasilnya seperti ditunjukkan

dalam Gambar 2.23.

Page 42: Praktikum Mikrokontroler Dasar ATMega16-Azam

42

Gambar 2.23. Tampilan saat Pengambilan Komponen LED-YELLOW

6. Ambil komponen Resistor seperti langkah 3 dan hasilnya seperti

ditunjukkan dalam Gambar 2.24.

Gambar 2.24. Tampilan Saat pengambilan Resistor

7. Dan susun seperti rangkaian dalam Gambar 2.25.

Page 43: Praktikum Mikrokontroler Dasar ATMega16-Azam

43

Gambar 2.25. Rangkaian Mikrokontroler ATMega16, Resistor dan LED

8. Tambahkan komponen Dip switch 8 seperti ditunjukkan dalam Gambar

2.26.

Gambar 2.26. Tampilan saat mengambil DIPSW-8

9. Tambahkan komponen Resistor Pack (rpak) seperti ditunjukkan dalam

Gambar 2.27.

Page 44: Praktikum Mikrokontroler Dasar ATMega16-Azam

44

Gambar 2.27. Tampilan Komponen Mode untuk Resistor Pack

10. Hubungkan dengan komponen lainnya sehingga seperti yang ditunjukkan

dalam Gambar 2.28.

Gambar 2.28. Rangkaian Percobaan Input Output

11. Setelah itu arahkan kursor ke mikrokontroler ATMega16, kemudian klik

mousenya sehingga muncul tampilan seperti yang ditunjukkan Gambar

2.29.

Page 45: Praktikum Mikrokontroler Dasar ATMega16-Azam

45

Gambar 2.29. Tampilan Setelah ATMega 16 di-klik

12. Setelah itu klik icon file open seperti yang ditunjukkan tanda panah dalam

Gambar 2.29 sehingga muncul tampilan seperti Gambar 2.30 dan ambil

file percobaan1.hex untuk diunduhkan ke ATMega16.

Gambar 2.30. Tampilan Saat Mengambil File hex untuk di unduhkan ke

ATMega16

Page 46: Praktikum Mikrokontroler Dasar ATMega16-Azam

46

13. Dan ubah juga untuk CKSEL Fuse menjadi IntRC 8 MHz seperti yang

ditunjukkan Gambar 2.31, kemudian tekan tombol OK

Gambar 2.31. Setting Clock ATMega 16

14. Setelah itu tekan tombol Play yang terletak pada sebelah kiri bawah dari

sheet seperti yang ditunjukkan dalam Gambar 2.32.

Gambar 2.32. Tampilan Saat Tombol Play ditekan

Tombol Play

Page 47: Praktikum Mikrokontroler Dasar ATMega16-Azam

47

Tugas.

1. Lakukan langkah-langkah pembuatan program dengan CodeWizard dan

langkah-langkah penggunaan Proteus, dan amati hasilnya.

Page 48: Praktikum Mikrokontroler Dasar ATMega16-Azam

48

BAB III INPUT – OUTPUT

Capaian Pembelajaran:

Setelah membaca dan mengkaji bab ini, pembaca akan mampu:

Menyusun algoritma, flowcart dan program dengan memanfaatkan unit

input-output ATMega16.

Membuat rangkaian Mikrokontroler ATMega16 untuk aplikasi LED dan 7

Segment

3.1. Teori Dasar Input-Output

Semua port AVR memiliki fungsi Baca-Tulis yang dapat dimodifikasi

ketika digunakan sebagai I/O port digital. Yang berarti setiap saat salah satu arah

pin port dapat diubah fungsi. Setiap output buffer memiliki karakteristik arus

simetris yang bagus dengan arus sink yang tinggi dan kemampuan sumber arus.

Sehingga dari pin cukup kuat untuk menjalankan LED display secara langsung.

Semua pin port memiliki individual pull-up resistor. Dan semua pin I/O memiliki

dioda pelindung untuk VCC dan Ground.

Sebagai referensi semua register dan bit ditulis dalam bentuk umum yaitu

sebuah huruf kecil "x" untuk pengganti nama port, dan sebuah huruf kecil "n"

mewakili nomor bit seperti PORTxn.

Ada tiga alamat memori I/O yang dialokasikan untuk setiap port I/O yaitu

Data Register (PORTx), Data Direction Register (DDRx) dan Port Input Pin

(PINx). Data Register (PORTx) digunakan untuk menyimpan data yang akan

ditulis/dikeluarkan ke port I/O pada saat port dikonfigurasi sebagai output

sedangkan Port Input Pin (PINx) digunakan untuk menyimpan data yang terbaca

dari port I/O pada saat port dikonfigurasi sebagai input sedangkan Data Direction

Register (DDRx) digunakan untuk menginisialisasi port sebagai input atau output.

Oleh karena itu, setiap pin port memiliki 3 bit register yaitu: DDxn, PORTxn dan

PINxn. Bit-bit DDxn beralamat di DDRx, bit-bit PORTxn beralamat di PORTx

I/O dan bit-bit PINxn juga beralamat di PORTx I/O.

Bit DDxn yang ada di dalam register DDRx menentukan arah dari pin ini.

Bila DDxn ditulis logika satu “1”, maka Pxn dikonfigurasi sebagai input dan bila

Page 49: Praktikum Mikrokontroler Dasar ATMega16-Azam

49

DDxn ditulis logic nol “0” maka Pxn dikonfigurasi sebagai output. Jika PORTxn

ditulis logika satu saat pin dikonfigurasi sebagai pin input, maka pull-up resistor

aktif dan untuk menonatifkan resistor pull-up, PORTxn harus ditulis logika nol

atau pin harus dikonfigurasi sebagai pin output. Pin port adalah tri stated ketika

kondisi reset dan bahkan jika tidak ada clock yang bekerja.

Gambar 3.1 menunjukkan register-register PORTA dan untuk register-

register PORT yang lain sama saja hanya dengan mengganti huruf A menjadi

huruf B, C dan D karena memiliki model konfigurasi yang sama dengan PORTA

tetapi memiliki alamat yang berbeda.

Gambar 3.1. Register-Register PORTA(ATMega16,2010;66)

Dalam bahasa C yang digunakan untuk pemrogramam ATMega16 nama

PORTx, DDRx dan PINx sudah dikenal dan dikemas dalam file mega16.h untuk

mikrokontroler ATMega 16 sehingga tinggal dipanggil saja file tersebut dengan

perintah #include <mega16.h>.

Sedangkan perintah-perintah yang berhubungan dengan Port adalah sebagai

berikut:

- PORTx, merupakan perintah yang digunakan untuk mengeluarkan data ke

Port x, x untuk A, B, C dan D

contoh:

PORTC = 0xff; // perintah untuk mengeluarkan data 0xff ke Port C

- PINx, merupakan perintah yang digunakan untuk membaca data dari Port

x, untuk x A, B, C dan D.

Page 50: Praktikum Mikrokontroler Dasar ATMega16-Azam

50

Contoh:

Datain = PINA; // perintah untuk membaca data dari Port A dan hasilnya

disimpan di variable Datain.

- DDRx, merupakan perintah untuk menginisialisasi atau mengisi register

DDRx dengan data sesuai untuk inisialisasi input atau output. Bila diisi 1

untuk inisialisasi Output, bila diisi 0 untuk inisialisasi input

Contoh:

DDRA = 00000000(2) = 0x00(hex)

PortA0 – PortA7 berfungsi sebagai Input

DDRB = 11111111(2) = 0xFF(hex)

PortB0 – PortB7 berfungsi sebagai Output

DDRC = 00001111(2) = 0x0F(hex)

PortC0 – PortC7 berfungsi sebagai Output dan PortC5 – PortC7

berfungsi sebagai Input.

Jika port digunakan sebagai input, maka resistor pullup diaktifkan dengan

memberikan logika 1 pada PORTx. Kemudian baru baca dapat data dari

register PINx dan jika port digunakan sebagai output, langsung dapat

digunakan sebagai saluran untuk keluar ke PORTx.

- Mikrokontroler ATMega16 memiliki juga instruksi bit yaitu PORTx.n

untuk dan PINx.n

3.2. Tampilan Seven Segmen

Tampilan seven segmen merupakan sebuah tampilan yang terdiri dari

tujuh segmen LED yang disusun untuk menampilkan angka 0 sampai 9 Seperti

yang ditunjukkan dalam Gambar 3.2. Dan untuk setiap segmen diberi kode

dengan huruf a, b, c, d, e, f, g dan d.p. Ada dua jenis seven segmen yaitu common

anoda (CA) dan common katoda (CC). Untuk common anoda (CA), karena yang

dijadikan satu adalah anoda maka CA dihubungkan dengan Vcc, sehingga untuk

menyalakan segmen maka pin dari segemen tersebut diberi logika 0 atau 0 Volt,

sedang untuk common katode (CC), karena yang dijadikan satu adalah Ground

maka untuk menyalakan segmen pin dari segmen tersebut diberi logika 1 atau 5

Volt.

Page 51: Praktikum Mikrokontroler Dasar ATMega16-Azam

51

Salah satu contoh data yang digunakan untuk menampilkan 0 sampai 9

melalui Port C ditunjukkan dalam Tabel 3.1 dengan menggunakan 7 segmen

common anoda.

Gambar 3.2. Tampilan Seven Segmen(Seven Segment Display,2002;4)

Tabel 3.1. Nilai Port C untuk menampilkan angka 0 sampai 9

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 Nilai Hex PC Tampilan dot g f e d c b a

1 1 0 0 0 0 0 0 0xC0

1 1 1 1 1 0 0 1 0xF9

1 0 1 0 0 1 0 0 0xA4

1 0 1 1 0 0 0 0 0xB0

1 0 0 1 1 0 0 1 0x99

1 0 0 1 0 0 1 0 0x92

1 0 0 0 0 0 1 0 0x82

1 1 1 1 1 0 0 0 0xF8

1 0 0 0 0 0 0 0 0x80

1 0 0 1 0 0 0 0 0x90

Page 52: Praktikum Mikrokontroler Dasar ATMega16-Azam

52

3.3. Cara Menggunakan Progisp AVR Programmer

Salah satu program yang digunakan mengisi program di dalam

mikrokontroler ATMega 16 adalah ProgIsp ver 17.2. Dan langkah-langkah untuk

memprogram chip ATMega16 adalah sebagai berikut:

1. Jalankan ProgIsp ver 1.72 dan hasilnya seperti ditunjukkan dalam Gambar 3.3

Gambar 3.3 Tampilan ProgIsp

2. Setelah itu ubah mikrokontroler yang digunakan menjadi mikrokontroler AT

Mega16 pada bagian menu Select Chip pada sebelah kiri atas seperti yang

ditunjukan dalam Gambar 3.4.

Gambar 3.4. Hasil Perubahan mikrokontroler yang digunakan

Page 53: Praktikum Mikrokontroler Dasar ATMega16-Azam

53

3. Setelah itu tancapkan hardware pasangan dari PorgIsp ver 1.72 sehingga

tulisan Prog ISP di bagiah menu State akan menyala. Seperti yang

ditunjukkan dalam Gambar 3.5.

Gambar 3.5. Tampilan Saat hardware sudah terpasang

4. Ambil Program file Hex dengan meng-klik Load Flash pada Menu File pada

bagian sebelah kanan atas dan ambil file hexnya seperti yang ditunjukkan

dalam Gambar 3.6.

Gambar 3.6. Tampilan Menu Open Load Flash

5. Setelah itu klik tombol Auto untuk mengisi program ke dalam mikrokontroler

ATMega16.

Page 54: Praktikum Mikrokontroler Dasar ATMega16-Azam

54

3.4. Percobaan I Input Output

Langkah-Langkah percobaan Input-Output sebagai berikut:

1. Buat Rangkaian seperti Gambar 3.7 di Proteus

Gambar 3.7. Rangkain ATMega16 untuk Percobaan Input-Output

2. Buat dalam Bentuk Rangkaian sesungguhnya dalam Protoboard seperti

Gambar 3.8.

Gambar 3.8. Rangkaian Mikrokontoler ATMega16 dengan LED dan 7 Segmen

3. Buat Program dari flowcart yang ditunjukkan dalam Gambar 3.9.

Page 55: Praktikum Mikrokontroler Dasar ATMega16-Azam

55

Gambar 3.9. Flowcart untuk menampilkan Nim 1 dan Nim2 pada 7 Segmen

4. Simulasikan program dengan menggunakan Proteus

5. Kirim program ke mikrokontroler ATMega16 dengan menggunakan ProgISP

Ver 1.72

6. Amati Hasil dan buat laporan tertulis.

3.5. Percobaan II Input Output

1. Dengan rangkaian yang sama buat flowcart, program dan aplikasikan dalam

simulasi Proteus dan rangkaian mikrokontroler ATMega16 dengan

menambahkan fungsi saklar sebagai berikut:

a. Bila Saklar PA0 ditekan maka akan tampil NIM 1

b. Bila Saklar PA1 ditekan maka akan tampil NIM 2

c. Bila Saklar PA2 ditekan maka akan tampil LED Geser kiri

d. Bila Saklar PA3 ditekan maka akan tambil LED Geser Kanan

2. Amati hasilnya dan buat laporan tertulis.

Page 56: Praktikum Mikrokontroler Dasar ATMega16-Azam

56

BAB IV ANALOG TO DIGITAL CONVERTER (ADC)

Capaian Pembelajaran:

Setelah membaca dan mengkaji bab ini, pembaca akan mampu:

Menyusun algoritma, flowcart dan program dengan memanfaatkan unit Analog

to Digital Convert dan unit input-output ATMega16.

Mengaplikasikan Unit ADC ATMega16 untuk tampilan 7 Segmen dan

masukan LDR(Light Dependent Resistors) dan sensor suhu LM35

4.1. ADC Dalam ATMega 16

ATMega memiliki ADC jenis successive approximation dengan data

output sebanyak 10 bit. Ada 8 kanal input ADC yang dimultiplekser dengan pin

Port A dengan acuan 0 Volt atau Ground. ADC juga dilengkapi dengan rangkaian

sample and hold yang menjamin tegangan masukan ADC berada dalam keadaan

konstan saat proses konversi dan Gambar 4.1 menunjukkan blok diagram dari

Skema ADC di mikrokontroler ATMega 16.

Gambar 4.1. Blok Diagram ADC ATMega 16 (ATMega16,2010;205)

Page 57: Praktikum Mikrokontroler Dasar ATMega16-Azam

57

Dalam operasinya ADC mengubah tegangan masukan analog ke dalam 10

bit nilai digital dengan successive approximation. Gnd sebagai nilai minimal dan

nilai maksimal mewakili tegangan di pin AREF – 1 LSB, Biasanya AVCC atau

tegangan reverensi internal 2.56 Volt atau mungkin terhubung ke pin AREF

dengan mengatur bit REFSn di register ADMUX.

ADC diaktifkan dengan mengatur bit ADC Enable, ADEN di register

ADCSRA. Tegangan referensi dan saluran masukan ADC yang dipilih tidak akan

berlaku sampai ADEN di set ‘1’.

ADC menghasilkan nilai 10-bit yang disajikan dalam dua register data

ADC yaitu ADCH dan ADCL. Secara default, hasilnya disajikan right adjusted (2

bit di ADCH dan 8 bit di ADCL), tetapi secara opsional dapat disajikan left

adjusted (8 bit di ADCH dan 2 bit di ADCL) dengan mengatur bit ADLAR di

ADMUX. Jika yang dipilih left adjusted maka ADC digunakan dalam 8 bit saja

dengan cukup mengambil data di ADCH. Untuk right adjusted, ADCL dibaca

dahulu setelah itu ADCH agar data yang didapatkan tidak hilang atau rusak.

Sebuah konversi tunggal dimulai dengan menulis logika satu ke bit Start

Convertion ADC atau ADSC di register ADCSRA. Bit ini akan tetap tinggi

selama konversi sedang berlangsung dan akan dihapus oleh hardware bila

konversi selesai. Dan Jika selesai maka bit ADIF akan bernilai satu yang

memberikan tanda bahwa konversi sudah selesai sehingga data hasil konversi

dapat dibaca di ADCH dan ADCL.

Konversi dapat juga dipicu secara otomatis oleh berbagai sumber. Auto

Trigger diaktifkan dengan memberikan logika satu pada bit ADC Auto Trigger

atau ADATE di register ADCSRA. Sumber pemicu dapat dipilih dengan

mengatur bit ADC Trigger Select atau ADTs di register SFIOR.

Modul ADC berisi prescaler, yang menghasilkan frekuensi clock ADC

diterima dari frekuensi CPU. Prescaling diatur oleh bit ADPS di register

ADCSRA. Prescaler mulai bekerja mulai ADC diaktifkan dengan memberi logika

satu di bit ADEN di ADCSRA. Dan akan berhenti jika ADEN diberi logika nol

atau rendah.

Page 58: Praktikum Mikrokontroler Dasar ATMega16-Azam

58

Ada beberapa register yang digunakan untuk ADC yaitu:

1. Register ADMUX atau register ADC Multiplexer, dinamakan demikian

karena di dalam register tersebut ada bit-bit yang digunakan untuk memilih

saluran dari input ADC, untuk bit-bit dari ADMUX ditunjukkan dalam

Gambar 4.2.

Gambar 4.2. Bit-bit dalam Register ADMUX(ATMega16,2010;217)

Keterangan dari fungsi bit-bit ADMUX Gambar 3.2 adalah sebagai berikut:

- REF0 dan REF1 (Reference) adalah bit-bit yang digunakan untuk memilih

tegangan referensi dari ADC dan table 4.1 menunjukkan beberapa

tegangan referensi yang dapat digunakan.

Tabel 4.1. Pilihan Tegangan Referensi ADC (ATMega16,2010;217)

REFS1 REFS0 Pilihan tegangan referensi

0 0 AREF (pin 32)

0 1 AVCC (pin 30)

1 0 Tidak digunakan

1 1 Vref internal 2,56V

- ADLAR (ADC Left Adjust Result) adalah bit yang digunakan untuk

menentukan format data hasil konversi ADC. Bila ADLAR = 0 maka hasil

konversi 10 bit disimpan dalam format: 2 bit disimpan di ADCH dan 8 bit

di ADCL seperti ditunjukkan dalam Gambar 4.3, sedangkan bila ADLAR

= 1 maka hasil konversi 10 bit disimpan dalam format: 8 bit disimpan di

ADCH dan 2 bit di ADCL seperti ditunjukkan dalam Gambar 4.4.

Gambar 4.3. Format Hasil Konversi Bila DLAR sama dengan 0 (ATMega16,2010;220)

Page 59: Praktikum Mikrokontroler Dasar ATMega16-Azam

59

Gambar 4.4. Format Hasil Konversi Bila DLAR sama dengan 1(ATMega16,2010;220)

- MUX4, MUX3, MUX2, MUX1 dan MUX0, adalah bit-bit yang digunakan

untuk memilih input analog yang akan dikonversi oleh ADC. Kombinasi

MUX4 sampai MUX0 untuk jenis input ADC dengan acuan Ground

(single Ended Input) ditunjukan dalam table 4.2.

Tabel 4.2. Kanal Input ADC untuk jenis Single Ended Input

MUX4 MUX3 MUX2 MUX1 MUX0 Nilai Pilihan Input

ADC

0 0 0 0 0 0 ADC0 0 0 0 0 1 1 ADC1

0 0 0 1 0 2 ADC2

0 0 0 1 1 3 ADC3

0 0 1 0 0 4 ADC4

0 0 1 0 1 5 ADC5

0 0 1 1 0 6 ADC6

0 0 1 1 1 7 ADC7

2. Register ADCSRA atau ADC Control Status Register A, dinamakan demikian

karena register ini tempat untuk mengendalikan (Control) dan dan

mengetahui keadaan (Status) dari ADC, dan untuk bit-bitnya ditunjukkan

dalam Gambar 4.5.

Gambar 4.5. Bit-bit dalam register ADCSRA(ATMega16,2010;219)

Page 60: Praktikum Mikrokontroler Dasar ATMega16-Azam

60

Keterangan dari fungsi bit-bit ADCSRA adalah sebagai berikut:

- ADEN atau ADC Enable, merupakan bit untuk mengaktifkan ADC, bila

ADEN = 1 maka ADC aktif dan Port A tidak aktif, bila ADEN = 0 maka

ADC tidak aktif dan Port A aktif.

- ADSC atau ADC Start Convertion, merupakan bit yang digunakan untuk

memberikan perintah mulai konversi, bila ADSC = 1, maka ADC mulai

bekerja untuk mengkonversi input analog dan akan berlogika 0 bila selesai

konversi.

- ADATE atau ADC Auto Trigger Enable, merupakan bit yang digunakan

untuk mengendalikan aktivasi picu otomatis. Jika ADATE = 1 maka

konversi ADC akan dimulai pada saat tepi positif pada sinyal trigger yang

digunakan.

- ADIF atau ADC Interrupt Flag, merupakan bit penanda akhir konversi

ADC. Jika ADIF = 1 maka konversi ADC pada suatu saluran telah selesai

dan siap diakses.

- ADIE atau ADC Interrupt Enabe, merupakan bit pengatur aktivasi

interupsi. Jika ADIE = 1 maka interupsi telah diaktifkan untuk melayani

proses konversi ADC.

- ADPS2, ADPS1 dan ADPS0 atau ADC Prescaler Select, merupakan bit-

bit yang digunakan untuk mengatur frukeunsi clock ADC dan Tabel 4.3

merupakan pemilihan frekuensi clok ADC dengan frekuansi osilator (fosc)

dari mikrokontroler ATMega 16 digunakan sebagai sumber clock dan nilai

ADPSn digunakan untuk memilih pembagi frekuansi.

Tabel 4.3. Frekuensi clock ADC(ATMega16,2010;220)

ADPS2 ADPS1 ADPS0 Clock ADC 0 0 0 fosc /2 0 0 1 fosc /2 0 1 0 fosc /4 0 1 1 fosc /8 1 0 0 fosc /16 1 0 1 fosc /32 1 1 0 fosc /64 1 1 1 fosc 128

Page 61: Praktikum Mikrokontroler Dasar ATMega16-Azam

61

4.2. LM35

LM35 merupakan IC sensor suhu yang presisi, dengan tegangan output

yang linear sebanding dengan suhu dalam Celcius. LM35 memiliki keuntungan

lebih linear dari sensor suhu yang dikalibrasi dalam o Kelvin sehingga LM35 tidak

memerlukan kalibrasi eksternal. LM35 memiliki impedansi keluaran rendah,

output yang linier, dan kalibrasi yang melekat membuat pembacaan antarmuka

dengan sirkuit kontrol sangat mudah. LM35 dapat digunakan dengan catu daya

tunggal, atau catu daya dengan plus dan minus. Salah satu rangkaian yang sering

digunakan dalam aplikasi ditunjukkan dalam Gambar 4.6. Sedangkan untuk salah

satu bentuk fisik tipe To-92 ditunjukkan dalam Gambar 4.7.

Gambar 4.6. Rangkaian Sensor Suhu dalam Celcius (LM35,1994;1)

Gambar 4.7. Salah Satu Bentuk Fisik LM35 (LM35,1994;1)

Untuk fitur-fitur yang dimiliki oleh LM35 adalah sebagai berikut:

Dikalibrasi langsung dalam oCelcius (celcius)

sensivitasnya atau faktor skala yang Linear = 10,0 mV / oC

Akurasi 0,5 oC (pada 25 oC)

rentang suhu dari - 55 sampai +150 oC

Cocok untuk aplikasi remote

Murah

Page 62: Praktikum Mikrokontroler Dasar ATMega16-Azam

62

Beroperasi dari 4 sampai 30 Volt

Arus Drain kurang dari 60 mA

Impedansi Output rendah, 0,1 Ohm untuk 1 beban mA

4.3. LDR

LDR atau Light Dependent Resistor merupakan resistor yang nilai

resistansinya berubah-ubah tergantung dengan besarnya intensitas cahaya yang

diserap. LDR dibuat dari cadium Sulfied (CDS), yang dihasilkan dari serbuk

keramik dan disebut juga peralatan photo conductive, selama konduktivitas atau

resistansi dari CDS bervariasi terhadap intensitas cahaya. Jika intensitas cahaya

yang diterima bertambah tinggi maka nilai resistansi LDR akan berkurang

demikian juga sebaliknya. Tetapi CDS tidak mempunyai sensitivitas yang sama

pada tiap panjang gelombang dari ultraviolet sampai dengan infra merah. Gambar

4.8 menunjukkan karakteristik dan simbol LDR. Sedangkan Gambar 4.9

menunjukkan LDR yang sesungguhnya.

a. Karakteristik LDR b. Simbol LDR

Gambar 4.8. Karakteristik dan Simbol LDR

Page 63: Praktikum Mikrokontroler Dasar ATMega16-Azam

63

Gambar 4.9. LDR

4.4. Tata Cara Inisialisasi ADC dengan CodeWizard

Untuk menginisialisasi ADC dengan Code Wizard dilakukan tata cara sebagai

berikut:

1. Gerakkan mouse ke tulisan ADC Analog to Digital Converter (nomor 1)

setelah itu centang ADC Enabled (nomor 2) seperti yang ditunjukkan dalam

Gambar 4.10.

Gambar 4.10. ADC dengan CodeWizard

2. Setelah itu centang use 8 bit (nomor 3), rubah AREF menjadi AVCC (nomor

4), rubah clock menjadi 500,000 KHz (nomor [5]), Seperti yang ditunjukkna

dalam Gambar 4.11. Setelah semuanya sudah maka inisialisasi ADC sudah

selesai.

1

2

Page 64: Praktikum Mikrokontroler Dasar ATMega16-Azam

64

Gambar 4.11. Lanjutan Inisialisasi ADC dengan CodeWizard

Dan oleh CodeVision AVR akan dibuatkan sebuah fungsi yang bernama

read_adc(adc_input) seperti yang ditunjukkan dalam Gambar 4.12.

Gambar 4.12. Fungsi adc_read(adc_input)

Sedangkan cara menggunakan fungsi adalah dengan langsung memanggilnya,

sebagai berikut:

Tegangan Input analog dihubungkan dengan ADC0 atau PA0 maka cara

untuk memdapatkan data hasil konversinya cukup dengan menuliskan dalam

variable data_adc = read_adc(0) // 0 = ADC0 seperti yang ditunjukkan dalam

Gambar 4.13

3

4

5

Page 65: Praktikum Mikrokontroler Dasar ATMega16-Azam

65

Gambar 4.13. Cara Menggunakan fungsi read_adc()

4.5. Percobaan I ADC

Langkah-langkah percobaan ADC ATMega16 sebagai berikut:

1. Buat Rangkaian untuk program Proteus dan Hardwarenya seperti yang

ditunjukan dalam Gambar 3.14.

Gambar 3.14. Rangkain ATMega16 untuk percobaan ADC

2. Buat flowcart dan program untuk menampilkan konversi tegangan input

menjadi data digital tampilan 7 segmen secara bergantian untuk ratusan,

puluhan dan satuan dengan tanda PD0 untuk Ratusan, PD1 untuk Puluhan

dan Pd2 untuk Satuan. Dan Aplikasikan ke Hardwarenya.

3. Amati dan buat laporannya

Page 66: Praktikum Mikrokontroler Dasar ATMega16-Azam

66

4.6. Percobaan II ADC

1. Kembangkan program percobaan I, dengan memberikan tampilan yang

berbeda untuk yang sesuai dengan besar tegangan input. Untuk tegangan

input antara 0 sampai 1 volt maka ATMega16 akan menampilkan di 7

segmen NIM 1, untuk tegangan input antara 1 sampai 2 volt maka

ATMega16 akan menampilkan di 7 segmen NIM 2, untuk tegangan input

antara 2 sampai 3 maka ATMega16 menampilkan LED Geser kiri, untuk

tegangan input antara 3 sampai 4 maka ATMega16 akan menampilkan LED

geser kanan, untuk tegangan input antara 4 sampai 5 volt maka ATMega16

akan menampilkan Biar Pet. Buat flowcart, Program dan aplikasikan ke

hardwarenya

2. Amati dan buat laporannya.

4.7. Percobaan III ADC

1. Ganti Potensiometer dengan Rangkaian LDR seperti yang ditunjukkan dalam

Gambar 4.15.

Gambar 4.15. Percobaan Menggunakan LDR

2. Beri Cahaya pada LDR dengan Jarak yang tertentu sehingga semua menu

pada langkah 4 dapat tampil semuanya.

3. Catat jarak antara sumber cahaya dan LDR

4. Ulangi dengan menggantikan R1 = 5K Ohm, 15K Ohm dan 22 K Ohm

Page 67: Praktikum Mikrokontroler Dasar ATMega16-Azam

67

5. Catat setiap perubahan jarak antara sumber cahaya dengan LDR untuk

masing-masing perubahan R1.

6. Buat laporan dan kesimpulan

4.8. Percobaan IV ADC

1. Modifikasi Rangkaian Gambar 4.15 menjadi sensor suhu dengan mengganti

rangkaian LDR dengan IC LM35. Dengan catatan saat inisialisasi ubah Volt.

Ref = Int. Cap. on AREF seperti ditunjukkan dalam Gambar 4.16.

Gambar 4.16. Setting Volt Referensi sebesar 2,56 Volt

Page 68: Praktikum Mikrokontroler Dasar ATMega16-Azam

68

BAB V UNIVERSAL SYNCHRONOUS AND ASYNCHRONOUS

SERIAL RECEIVER TRANSMITTER (USART)

Capaian Pembelajaran:

Setelah membaca dan mengkaji bab ini, pembaca akan mampu:

Menyusun algoritma, flowcart dan program dengan memanfaatkan unit

USART, unit ADC dan unit input-output ATMega16 untuk proses telemetri

dan telekontrol.

Mengaplikasikan program komunikasi Serial dengan menggunakan

ATMega16

5.1. USART Dalam At Mega 16

Universal Synchronous dan Asynchronous dan Transmitter (USART)

adalah perangkat komunikasi serial yang sangat fleksibel. Fitur-fitur utama adalah

sebagai berikut:

Operasi full duplex

Operasi asinkron atau sinkron

Master atau slave clock pada operasi sinkron

Generator baud rate resolusi tinggi

Mendukung frame serial dengan 5, 6, 7, 8, atau 9 bit data dan 1 atau 2 bit

stop

Paritas ganjil atau genap

Deteksi data over run

Deteksi kesalahan framing

Filter terhadap gangguan termasuk deteksi bit start palsu dan low pass

filter digital

Tiga Interrupsi terpisah di TX komplit, TX Data Register Empty, dan RX

komplit

Mode Komunikasi Multi-prosesor

Kecepatan ganda pada mode komunikasi asinkron

Page 69: Praktikum Mikrokontroler Dasar ATMega16-Azam

69

Blok diagram sederhana dari USART ditunjukkan pada Gambar 5.1 dan untuk

Register I/O dan pin I/O yang dapat diakses ditampilkan dengan huruf tebal

seperti Register UCSRA, UCSRB, UCSRC, UDR dan UBRR, serta pin RxD,

TxD dan XCK.

Gambar 5.1. Blok Diagram USART pada ATMega 16 (ATMega16,2010;144)

Dalam Gambar 5.1, kotak-kotak yang putus-putus dalam blok diagram

memisahkan tiga bagian utama dari USART yaitu: Generator Clock, Transmitter

dan Receiver. Register Kontrol dibagi ke semua unit. Clock pembangkit logika

terdiri dari logika sinkronisasi untuk masukan clock eksternal yang digunakan

oleh operasi sinkron slave dan generator baud rate. Pin XCK (Clock Transfer)

hanya digunakan oleh mode Transfer Sinkron. Transmitter terdiri dari buffer

register tulis, serial Shift regiseter, generator paritas dan kontrol logika untuk

menangani berbagai format bingkai (frame) serial. Buffer register tulis

Page 70: Praktikum Mikrokontroler Dasar ATMega16-Azam

70

memungkinkan transfer data yang berkelanjutan tanpa ada penundaan antara

frame. Pada receiver merupakan bagian paling kompleks dari modul USART

karena clock dan unit pemulihan data. Unit-unit pemulihan digunakan untuk

penerimaan data asinkron. Tambahan fungsi untuk unit pemulihan berupa

pemeriksa paritas penerima (receiver), logika kontrol, Shift Register dan dua

tingkat receive buffer (UDR). Receiver mendukung format frame yang sama

seperti transmitter, dan dapat mendeteksi kesalahan frame, overrun data dan

kesalahan paritas.

Untuk dapat menggunakan USART, perlu diketahui dari fungsi-fungsi

masing-masing register yang ada di dalam Blok diagram pada Gambar 5.1.

Register-register tersebut sebagai berikut:

1. UDR atau USART Data Register

Gambar 5.2. Register UDR (ATMega16,2010;163)

USART Transmit Data Buffer Register dan USART Receive Data Buffer

Register menggunakan alamat I/O yang sama yang disebut USART Data

Register atau UDR. Transmitter Data Buffer Register (TXB) akan menjadi

tujuan dari penulisan data ke lokasi register UDR sedangkan saat membaca

register UDR akan mendapatkan isi dari Receiver Data Buffer Register (RXB)

seperti yang ditunjukkan dalam Gambar 5.2.

2. UCSRA atau USART Control Status Register A, Nama bit-bit UCSRA ditunjukkan dalam Gambar 5.3.

Gambar 5.3. Bit-Bit Register UCSRA (ATMega16,2010;164)

Keterangan bit-bit Register UCSRA adalah sebagai berikut:

- Bit 7 – RXC: USART Receive Complete

Page 71: Praktikum Mikrokontroler Dasar ATMega16-Azam

71

Merupakan bit tanda bahwa ada data yang telah masuk secara serial

melalui pin RxD. Bernilai logika satu bila ada data masuk ke buffer

penerima dan belum dibaca, bila data sudah dibaca maka akan berubah

menjadi nol. Bit RXC ini juga digunakan untuk membangkitkan intrupsi

Receive Complete.

- Bit 6 – TXC: USART Transmit Complete

Merupakan bit tanda bila semua data sudah komplit dikirim secara serial

melalui pin TxD. Bernilai logika satu bila transmit shift register telah

kosong dan tidak ada data baru dalam transmit buffer (UDR). Bit TXC ini

akan berubah menjadi nol secara otomatis saat intrupsi transmit complete

dikerjakan atau dapat di-nol-kan dengan menuliskan satu ke bit ini. Tanda

TXC juga membangkitkan sebuah intrupsi Transmit Complete.

- Bit 5 – UDRE: USART Data Register Empty

Tanda UDRE menunjukkan jika transmit buffer (UDR) siap menerima

data. Bila UDRE berlogika satu buffer kosong, berarti siap untuk ditulis.

Tanda UDRE dapat membangkitkan intrupsi Data Register Empty. UDRE

berlogika satu untuk menunjukkan bagian transmitter siap.

- Bit 4 – FE: Frame Error

Bit berlogika satu jika karakter berikutnya dalam buffer penerima terjadi

frame error ketika menerima yaitu saat stop bit pertama dari karakter

berikutnya dalam buffer penerima (receiver) adalah nol. Bit FE adalah nol

ketika stop bit data yang diterima adalah satu. Beri bit ini nol saat menulis

ke UCSRA.

- Bit 3 – DOR: Data OverRun

Bit ini berlogika satu jika kondisi over run data terdeteksi. Sebuah data

overrun terjadi ketika buffer penerima penuh (dua karakter), ada karakter

baru yang menunggu dalam shift Registre penerima, dan start bit baru

terdeteksi. Beri bit ini ke nol saat menulis ke UCSRA.

- Bit 2 – PE: Parity Error

Bit ini berlogika satu jika karakter berikutnya dalam buffer penerima

memiliki kesalahan paritas (Parity Error) saat diterima dan pengecekan

Page 72: Praktikum Mikrokontroler Dasar ATMega16-Azam

72

paritas telah diaktifkan pada bagian UPM1 = 1. Beri bit ini nol saat

menulis ke UCSRA.

- Bit 1 – U2X: Double the USART Transmission Speed

Bit ini hanya berpengaruh untuk operasi asinkron. Beri bit ini nol bila

menggunakan sinkron operasi. Bila bit ini diberi nilai logika satu maka

akan mengurangi pembagi dari pembagi baud rate dari 16 ke 8 sehingga

secara efektif menggandakan transfer rate untuk komunikasi asinkron.

- Bit 0 – MPCM: Multi-processor Communication Mode

Bit ini memungkinkan Modus komunikasi multi-prosesor. Apabila bit

MPCM diberi logika satu, maka semua frame yang diterima oleh penerima

USART yang tidak mengandung informasi alamat akan diabaikan.

Transmiiter tidak dipengaruhi oleh pengaturan MPCM.

3. UCSRB atau USART Control Status Register B

Nama bit-bitnya ditunjukkan dalam Gambar 5.4.

Gambar 5.4. Bit-bit Register UCSRB (ATMega16,2010;165)

Keterangan bit-bit Register UCSRB adalah sebagai berikut:

- Bit 7 – RXCIE: RX Complete Interrupt Enable

Bit ini digunakan untuk mengaktifkan intrupsi saat ada data masuk di

buffer penerima atau saat RXC bernilai satu. Jika diberi logika satu maka

intrupsi diaktifkan dan bila diberi nol maka intrupsi tidak aktif.

- Bit 6 – TXCIE: TX Complete Interrupt Enable

Bit ini digunakan untuk mengaktifkan intrupsi saat data sudah selesai

dikirimkan atau saat TXC sama dengan satu. Jika diberi logika satu maka

intrupsi diaktifkan dan bila diberi nol maka intrupsi tidak aktif.

- Bit 5 – UDRIE: USART Data Register Empty Interrupt Enable

Bit ini digunakan untuk mengaktifkan intrupsi saat UDRE sama dengan

satu. Jika diberi logika satu maka intrupsi diaktifkan dan bila diberi nol

maka intrupsi tidak aktif.

- Bit 4 – RXEN: Receiver Enable

Page 73: Praktikum Mikrokontroler Dasar ATMega16-Azam

73

Bit ini digunakan untuk mengaktifkan bagian penerima (receiver)

USART, dan pin RxD digunakan sebagai jalur komunikasi serial. Bila

diberi logika satu akan aktif dan logika nol untuk non aktif

- Bit 3 – TXEN: Transmitter Enable

- Bit ini digunakan untuk mengaktifkan bagian pengirim (transmitter)

USART, dan pin TxD digunakan sebagai jalur komunikasi serial. Bila

diberi logika satu akan aktif dan logika nol untuk non aktif

- Bit 2 – UCSZ2: Character Size

Bit UCSZ2 dikombinasikan dengan bit UCSZ1 dan UCSZ0 bit dalam

register UCSRC untuk menetapkan jumlah bit data atau ukuran karakter

dalam frame untuk penerima (receiver) dan pemancar (transmitter).

- Bit 1 – RXB8: Receive Data Bit 8

RXB8 adalah bit data kesembilan dari karakter yang diterima ketika

beroperasi dengan frame serial dengan sembilan bit data. Harus dibaca

sebelum membaca bit rendah dari UDR.

- Bit 0 – TXB8: Transmit Data Bit 8

TXB8 adalah bit data yang kesembilan dari karakter yang akan dikirim

ketika beroperasi dengan frame serial dengan sembilan bit data. Harus

ditulis sebelum menulis bit rendah untuk UDR.

4. UCSRC atau USART Control Status Register C

Nama bit-bit dari Register UCSRC ditunjukkan dalam Gambar 5.5.

Gambar 5.5. Bit-bit Register UCSRC (ATMega16,2010;166)

Alamat lokasi register UCSRC berbagi dengan register UBRRH. Sedang

untuk keterangan bit-bit Register UCSRC adalah sebagai berikut:

- Bit 7 – URSEL: Register Select

Bit ini digunakan untuk memilih antara mengakses register UCSRC atau

register UBRRH. Bila diberi logika satu maka digunakan sebagai register

UCSRC.

- Bit 6 – UMSEL: USART Mode Select

Page 74: Praktikum Mikrokontroler Dasar ATMega16-Azam

74

- Bit ini digunakan untuk memilih mode operasi komunikasi serial, bila

diberi logika ‘0’ maka mode Asikron dan bila diberi logika ‘1’satu maka

mode Sinkron

- Bit 5:4 – UPM1dan UPM0: Parity Mode

Bit-bit yang digunakan untuk mengaktifkan dan menetapkan jenis generasi

dan memeriksa paritas. Jika diaktifkan, bagian pemancar akan secara

otomatis menghasilkan dan mengirim bit paritas dari data yang dikirimkan

dalam setiap frame. Dan pada bagian penerima (receiver) akan

menghasilkan nilai paritas dari data yang masuk dan bandingkan dengan

pengaturan UPM0. Jika ketidakcocokan terdeteksi, maka tanda bit PE di

UCSRA akan bernilai satu. Untuk pengaturan bit-bit UPM1 dan UPM0

ditunjukkan dalam Tabel 5.1.

Tabel 5.1.Pengaturan bit-bit UPM (ATMega16,2010;166)

- Bit 3 – USBS: Stop Bit Select

Bit ini digunakan untuk memilih jumlah Bit Stop yang akan dimasukkan

oleh bagian pengirim. Sedang untuk bagian penerima enerima

mengabaikan pengaturan ini. Bila USBS = 0 maka diatur menggunakan 1

bit stop, sedang bila USBS = 1 maka diatur mengunakan 2 bit stop.

- Bit 2:1 – UCSZ1:0: Character Size

bit UCSZ1 dan UCSZ0 dikombinasikan dengan bit UCSZ2 bit dalam

register UCSRB untuk menetapkan jumlah bit data atau ukuran karakter

dalam frame untuk penerima dan pemancar. Dan untuk pengaturan UCSZ2

sampai UCSZ0 ditunjukkan dalam Tabel 5.2.

- Bit 0 – UCPOL: Clock Polarity

Bit ini digunakan untuk mode Sinkron saja. Untuk mode Asikron diberi

logika 0. Bit UCPOL menetapkan hubungan antara perubahan output data

Page 75: Praktikum Mikrokontroler Dasar ATMega16-Azam

75

dan sampel input data, dan clock sinkron (XCK). Untuk pengaturan bit

UCPOL ditunjukkan dalam tabel 5.3

Tabel 5.2. Kombinasi UCSZ2 sampai UCSZ0 untuk Pengaturan Ukuran Karakter (ATMega16,2010;167)

Tabel 5.3. Pengaturan Bit UCPOL (ATMega16,2010;167)

5. UBRR atau USART Baud Rate Register

UBRR terdiri dari dua buah register yaitu UBRRH dan UBRRL, register-

register ini digunakan untuk mengatur kecepatan pengiriman data atau Baud

Rate. Untuk alamat register UBRRH digunakan bersama dengan register

UCSRC. Bit-bit dari UBRRH dan UBBRL ditunjukkan dalam Gambar 4.6.

Gambar 4.6. Bit-bit Register UBRRH dan UBRRL (ATMega16,2010;167)

- Bit 15 – URSEL: Register Select

Page 76: Praktikum Mikrokontroler Dasar ATMega16-Azam

76

- Bit yang digunakan untuk memilih penggunaan register UBRRH atau

UCSRC, harus diberi logika 0 saat digunakan untuk register UBRRH

- Bit 14 sampai 12, cadangan

- Bit 11 sampai bit 0

- Merupakan register 12-bit yang berisi USART baud rate. Regiseter

UBRRH ini berisi empat bit MSB, dan UBRRL tersebut berisi 8 bit LSB

dari USART baud rate.

Untuk perhitungan Baud Rate dan nilai register UBRR ditunjukkan dalam

tabel 5.4.

Tabel 5.4. Perhitungan Baud Rate dan nilai Register UBRR (ATMega16,2010;147)

Catatan:

1. Baud rate didefinisikan sebagai kecepatan transfer dalam bit per detik (bps).

2. BAUD = Baud rate

3. fosc = Frekuensi Osilator Clock Sistem

5.2. Cara Inisialisasi USART dengan Code Wizard

Langkah-langkah untuk menginisialisasi USART dengan Code Wizard

adalah sebagai berikut:

1. Pilih menu USART, kemudian centang Receiver (nomor 1) dan centang

Transmiter (nomor 2) seperti yang ditunjukkan dalam Gambar 5.7 dan akan

menghasilkan tampilan seperti Gambar 5.8 dan kemudian centang Rx

Interrupt (nomor 3), untuk kecepatan data baut rate = 9600 dan parameter

data 8 bit per karakter, satu bit stop dan tanpa menggunakan paritas maka

settingnya adalah seperti ditunjukkan dalam Gambar 5.8.

Page 77: Praktikum Mikrokontroler Dasar ATMega16-Azam

77

Gambar 5.7. Inisialisasi USART dengan Code Wizard

Gambar 5.8. Inisialisasi USART Lanjutan

2. Setelah di Generate program, Save and Exit, maka CodevisionAVR akan

membuatkan fungsi interrupt [USART_RXC] void usart_rx_isr(void)

yang akan bekerja jika ada data yang masuk melalui RXD dan fungsi char

getchar(void) yang digunakan untuk membaca data yang telah masuk ke

dalam regisiter UDR melalui RXD. Gambar 5.9 menunjukkan fungsi-fungsi

tersebut.

1

2

3

Page 78: Praktikum Mikrokontroler Dasar ATMega16-Azam

78

Gambar 5.9. Fungsi interrput [USART_RXC] dan getchar(void)

3. Untuk mengirim data ke register UDR atau TXD dapat dilakukan dengan

menggunakan cara-cara yaitu:

- Langsung memberikan data ke register UDR seperti

UDR = data_tx; // data_tx merupakan variabel dalam byte

- Menggunakan perintah putchar(char c) seperti

putchar(‘A’) // data yang dikirimkan dalam bentuk karakter

4. Untuk menerima data dari register UDR atau RXD dapat dilakukan dengan

menggunakan cara-cara yaitu:

- Langsung mengambil data dari register UDR seperti

data_rx = UDR // menerima data dari RXD dalam bentuk byte

- Menggunakan perintah getchar (char c) seperti

data_rx = getchar(); // mengambil data dalam bentuk karakter

5. Untuk menuliskan program bagian penerima data serial dengan model

menggunakan intrupsi, program ditulis didalam fungsi interrupt

[USART_RXC] void usart_rx_isr(void) seperti ditunjukkan dalam Gambar

5.10.

Page 79: Praktikum Mikrokontroler Dasar ATMega16-Azam

79

Gambar 5.10. Letak Penulisan Program Terima Data Serial

6. Untuk menuliskan program bagian pengirim data serial biasanya ditaruh di

program utama seperti yang ditunjukkan dalam Gambar 5.11.

Gambar 5.11. Letak Program Kirim Data Serial

5.3. Percobaan I USART ATMega16

Langkah-langkah percobaan USART ATMega16 adalah sebagai berikut:

1. Buat Rangkaian dengan menggunakan Proteus dan hardware seperti yang

ditunjukkan dalam Gambar 5.12

Page 80: Praktikum Mikrokontroler Dasar ATMega16-Azam

80

Gambar 5.12, Rangkaian Percobaan USART ATMega16

2. Inisialisasikan USART dengan Receiver Rx interrupt, Transmitter, Baut rate

9600, 8 bit per karakter, satu bit stop dan no parity.

3. Tulis program berikut ini di dalam fungsi interrupt [USART_RXC] void

usart_rx_isr(void)

if (data == 'A')

{

PORTC = 0XF9;

}

if (data == 'B')

{

PORTC = 0XA4;

}

if (data == 'C')

{

PORTC = 0XB0;

}

if (data == 'D')

{

PORTC = 0X99;

}

4. Tulis program berikut ini di dalam bagian program utama

Page 81: Praktikum Mikrokontroler Dasar ATMega16-Azam

81

while (1)

{

// Place your code here

if (PINA.0 == 0)

{

UDR = 'A';

delay_ms(100);

}

if (PINA.1 == 0)

{

UDR = 'B';

delay_ms(100);

}

if (PINA.2 == 0)

{

UDR = 'C';

delay_ms(100);

}

if (PINA.3 == 0)

{

UDR = 'D';

delay_ms(100);

}

};

}

5. Jalankan program dan masukkan ke dalam ATMega 16, amati yang terjadi,

buat flowcart, pembahasan dan kesimpulan

6. Modifikasi program tersebut sehingga ada 4 tampilan menu berdasarkan

pengendalian jarak jauhnya.

7. Buat flowcart dan programnya, kemudian masukkan ke dalam ATMega16

8. Amati, catat perubahannya

9. Buat laporannya

Page 82: Praktikum Mikrokontroler Dasar ATMega16-Azam

82

5.4. Percobaan II USART ATMega16

1. Buat Rangkaian dengan Proteus dan di hardware seperti yang ditunjukkan

dalam Gambar 5.13.

Gambar 5.13. Rangkaian Percobaan II USART ATMega16

2. Buat flowcart dan program yang akan menerima dan mengirimkan perintah

antara mikrokontroler ATMega16 dengan Personal Komputer melalui Serial

Port

3. Amati hasilnya

4. Buat Laporannya

5.5. Percobaan III USART ATMega 16.

1. Rencanakan sebuah rangkaian mikrokontroler yang dapat mengirimkan suhu

(LM35) ke Personal Komputer, dan Personal Komputer dapat mengendalikan

7 segmen dan LED yang ada di rangkaian mikrokontroler ATMega 16.

2. Buat blok diagram, flowcart, program dan laporannya.

Page 83: Praktikum Mikrokontroler Dasar ATMega16-Azam

83

DAFTAR PUSTAKA

Andrianto, Heri, 2008, Pemrograman Mikrokontroler AVR ATMega16,

Bandung, Informatika Bandung.

ATMega16, Datasheet, 2010, Atmel Corporation

LM35/LM35A/LM35C/LM35CA/LM35D, Datasheet, 1994, Precision

Centigrade Temperature Sensors, , National Semiconductor Corporation

Seven Segment Displays, Datasheet 14.2 mm (0.56 inch), 2002, Agilent

Technologies.

Page 84: Praktikum Mikrokontroler Dasar ATMega16-Azam

84

GLOSARIUM

ADC Analog to Digital Converter

Pengolah Sinyal analog menjadi data Digital

ALU Aritmarik Logik Unit

AT Mikrokontroler buatan Atmel Co.

AVR Alf and Vegard’s Risc prosesor

Prosesor yang dibuat oleh pabrik ATMEL Co.

Baud rate Kecepatan pengiriman data serial

Bit Satu digit dalam system bilangan biner

Boot Saat pengaktifan Mikrokontroler

Byte 8 bit 8 digit dalam biner

CA common anoda

anoda yang disatukan

CC common katoda

katoda yang disatukan

Chip Integrated Circuit atau IC

CISC Complex Instruction Set Computing

CMOS Complementary metal–oxide–semiconductor

Salah satu jenis bahan pembuatan IC

CodeVision

AVR

Software yang digunakan untuk memprogram Mikrokontroler

dengan menggunakan bahasa C

Counter Penghitung

EEPROM Electrical Eresable Programmable ROM

ROM yang dapat dihapus dengan elektrik dan dapat di program

ulang

Flash Memori tempat penyimpanan program

fosc Frekuensi osilator dari mikrokontroler atau frekuensi kerja

mikrokontroler

header Kepala program

Interrupt Interupsi atau penyela

ISP In System Programming

Page 85: Praktikum Mikrokontroler Dasar ATMega16-Azam

85

LED Light Emitting Diode

LDR Light Dependent Resistor

Main Program utama

Master-Slave Model komunikasi dengan satu perangkat memiliki kontrol

searah atas satu atau lebih perangkat lain.

MCS Microcontroller Sistem

MHz Mega Hz atau 106 Hz

MIPS Mega Instruction Per Second

OnChip Tersedia di dalam IC

Port Jalur input-ouput

Prescaler Pembagi frekuensi

Proteus Software yang digunakan untuk mensimulasikan program

mikrokontroler

PWM Pulse Width Modulation

RAM Random Access Memory

Memori yang dapat dibaca dan ditulis

RISC Reduced Instruction Set Computing

ROM Read Only Memory

Memori yang hanya bisa dibaca

Sensor sesuatu yang digunakan untuk mendeteksi adanya perubahan

lingkungan fisik atau kimia

SPI Serial Periperal Interface

SRAM Static RAM

Step size Besar tegangan setiap kenaikan digit pada ADC

Timer Pewaktu