Top Banner
1 Email : [email protected], winnerparluhutan.blogspot.com Teknik Komputer AMIK BSI JAkarta BUKU PANDUAN MODUL MIKROKONTROLER ATMEGA 16 TEKNIK KOMPUTER BINA SARANA INFORMATIKA AMIK BSI JAKARTA
59

BUKU PANDUAN Modul Mikrokontroler

Feb 07, 2016

Download

Documents

junskoe

Mikrokontroler
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: BUKU PANDUAN Modul Mikrokontroler

1

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

BUKU PANDUAN

MODUL MIKROKONTROLER ATMEGA 16

TEKNIK KOMPUTER

BINA SARANA INFORMATIKA

AMIK BSI JAKARTA

Page 2: BUKU PANDUAN Modul Mikrokontroler

2

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

KATA PENGANTAR

Puji dan syukur saya panjatkan kepada Tuhan Yang Maha Esa, sehingga

saya dapat menelesaikan penyusunan Buku Panduan Modul Mikrokontroler.

Untuk dapat memahami dasar-dasar Mikrokontroler serta pemogramannya,

diperlukan pemahaman secara teori dan penerapan aplikasi. Keuntungan

dalam memahami dasar – dasar Mikrokontroler ini untuk dapat memahami

prinsip kerja IC Mikrokontroler serta dapat membuat kreatifitas berbagai

macam Aplikasi.

Pada Buku Panduan Modul Mikrokontroler ini penulis memberikan beberapa

penjelasan tentang Karakteristik atau fitur-fitur IC Mikrokontroler, Bahasa

pemograman dan Software compiler serta software download program.

Penulis mengharapkan dengan Buku Panduan Modul Mikrokontroler ini

dapat membatu para pemula atau pencinta elektronika (hobby), Modul

Panduan ini diberikan secara Cuma-Cuma (Gratis), penulis mengarapkan

tidak ada pihak lain untuk melakukan komersial atau kepentingan pribadi

tanpa seijin penulis.

Terima kasih penulis sampaikan kepada semua pihak yang telah mendukung

kelancaran dan penulis menerima saran dan kritikan dengan senang hati,

agar dapat membuat penyempurnaan modul ini.

Semoga Buku Panduan Modul Mikrokontroler ini bermanfaat bagi

pembacanya.

Depok, September 2012

Penulis

Page 3: BUKU PANDUAN Modul Mikrokontroler

3

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Daftar Isi

Page 4: BUKU PANDUAN Modul Mikrokontroler

4

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Data Sheet MODUL PRATIKUM MIKROKONTROLER

Gambar Blok Modul

Rangkaian Atmel dan Atmega

(MCS51 & AVR)

NB: Sumber tanggangan 5 Volt Kaki Pin 9 dan Gound Kaki Pin 10 pada

setiap kaki PORT mikrokontroler baik MCS51 dan Atmega16/32/8535.

Page 5: BUKU PANDUAN Modul Mikrokontroler

5

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Gambar Blok Aplikasi Rangkaian LED dan PUS BUTTON

Gambar Blok Aplikasi Rangkaian

Buzer dan Driver Motor DC L293

Page 6: BUKU PANDUAN Modul Mikrokontroler

6

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Gambar Blok Aplikasi

Rangkaian 2 Digit Seven Segmen,

Sensor IR & LDR dan Driver Tampilan LCD 2x16

Gambar Blok Rangkaian Downloader USB Atmega8 16PU/PI

Page 7: BUKU PANDUAN Modul Mikrokontroler

7

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

BAB I

PENDAHULLUAN

Mikrokontroler adalah merupakan komponen Tunggal Chip yang bersifat

mengerjakan atau menjalankan program instruksi secara bergantian. Mikrokontroler

gabungan dari IC Analog dan Digital, namun pada dasarnya IC Mikrokontroler prinsip

kerjanya memerlukan instruksi atau bahasa mesin, bahasa mesin didapatkan dari

compiler dari bahasa pemograman yang digunakan, adapun bahasa penulisan

pemograman yang digunakan adalah :

1. Bahasa Pemograman Asembler/assembly

2. Bahasa Pemograman C/C++

3. Bahasa Pemograman Basic/Bascom

4. Bahasa Pemograman Java

Dengan menggunakan penulisan bahasa pemograman ini dapat

mempermudah bagi si pembuat program, namun tidak dapat di pahami oleh

Mikrokontroler karena IC Mikrokontroler dapat bekerja dengan menggunakan

bahasa mesin yaitu dengan logika High(1) dan Low (0), bahasa mesin ini didapat dari

hasil compiler bahasa penulisan yang digunakan dengan menggunakan software

compiler. Untuk lebih mudah di pahami alurnya lihat gambar di bawah ini :

User PC (Downloader) Target

Compiler (Hex) ISP (Dwonload)

Gambar 1. Alur Compiler Pemograman Mikrokontroler

1

2

3

5 6

4

Page 8: BUKU PANDUAN Modul Mikrokontroler

8

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Pada pembelajaran praktek Mikrokontroler ini menggunakan IC

mikrokontroler ATMEGA 16 atau ATMEGA 16A dengan bahasa pemograman C/C++,

serta di dukung dengan software Codevision AVR, Prog ISP. 1.68 dan Proteus.

1.1 Fitur Mikrokontroler Atmega 16

Fitur –fitur yang di miliki atmega 16 sebagai berikut :

1. Mikrokontroler AVR (ATMEGA) 8 bit yang memiliki kemampuan tinggi,

dengan daya rendah.

2. Memiliki Arsitektur RISC dengan throughput mencapai 16 MIPS pada

frekuensi 16Mhz.

3. Atmega 16 Memiliki kapasitas memori terdiri 3 bagian yaitu :

1. Memiliki Flash Memori 16 Kbyte.

2. Memiliki EEPROM 512 Byte.

3. Memiliki SRAM 1 Kbyte.

4. Memiliki saluran Input dan output sebanyak 32 pin/bit. Yaitu di kaki

PORTA, Kaki PORTB, Kaki PORTC dan Kaki PORTD.

5. CPU yang terdiri dari atas 32 buah register.

6. Memiliki unit interupsi internal dan eksternal.

7. Memiliki Port UAST untuk digunakan pada komunikasi serial (RX & TX).

8. Memiliki fitur peripheral yang terdiri dari :

a. Memiliki Tiga buah Timer/Counter dengan kemampuan pembandingan.

- 2 Buah timer / counter dengan kapasitas 8 bit.

- 1 buah timer / counter dengan kapasitas 16 bit.

b. Memiliki Real Time counter dengan oscillator (Frekuensi) tersendiri.

c. Memiliki 4 channel PWM (Pulsa Width Modulasi) di kaki PORTD pin 4

dan pin 5 (0C1B & 0C1A).

d. Memiliki 8 Channel saluran ADC (Analog Digital Conferter/merubah

analog ke digital) di kaki PORTA.

e. Memiliki Antar muka dengan SPI.

f. Memiliki On-chip analog comperator.

9. Bekerja di sumber tegangan 4,5Volt s/d 5,5Volt.

10. Bekerja di Kristal/oscillator 0 s/d 16 MHZ.

Page 9: BUKU PANDUAN Modul Mikrokontroler

9

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

1.2 Konfigurasi PIN ATMEGA16

Mikrokontroler atmega 16 memiliki 40 pin DIP (Dual Inline Package), dapat di

lihat pada gambar 1.2, adapun fungsi masing – masing pin yaitu :

1. Kaki VCC yang merupakan masukan sumber tegangan terletak di PIN 10.

2. Kaki GND yang merupakan Ground terletak di kaki 11.

3. Kaki Xtal1 & Xtal2 yang merupakan pin masukan clock oscillator external di

Pin 12 dan Pin 13.

4. Kaki AVCC merupakan Pin masukan tegangan untuk ADC yang langsung

dihubungkan ke VCC.

5. Kaki AREF merupakan pin tegangan referensi atau nilai minimump ADC.

6. Kaki yang merupakan Interface PC ke Mikrokontroler (ISP) terletak pada kaki

PORTB dengan Pin 5 (Mosi), Pin 6 (Miso) dan Pin 7 (SCK).

7. Untuk dapat menggunakan pengaturan PWM terdapat di kaki PORTD Pin 4

(0C1B) dan Pin 5 (0C1A).

8. Untuk dapat berkomunikasi serial terdapat di kaki PORTD Pin 0 (RX/penerima)

dan Pin 1 (TX/pengirim).

9. Reset yang merupakan fungsi sebagai mereset mikrokontroler terdapat di kaki

pin 9.

Page 10: BUKU PANDUAN Modul Mikrokontroler

10

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

10. Kaki PORTA terdapat pada kaki 33 s/d kaki 40 yang merupakan fungsi

converter Analog ke Digital (ADC).

Port PIN Fungsi

PA.0 PA0 ADC0 (ADC input channel 0)

PA.1 PA1 ADC1 (ADC input channel 1)

PA.2 PA2 ADC2 (ADC input channel 2)

PA.3 PA3 ADC3 (ADC input channel 3)

PA.4 PA4 ADC4 (ADC input channel 4)

PA.5 PA5 ADC5 (ADC input channel 5)

PA.6 PA6 ADC6 (ADC input channel 6)

PA.7 PA7 ADC7 (ADC input channel 7)

Gambar 2. Alur perubahan analog ke Digital

11. Kaki PORTB terdapat pada kaki 1 s/d kaki 8 yang merupakan fungsi dua arah

serta ad beberapa fungsi lainya yang dapat dilihat pada table dibawah ini.

Port PIN Fungsi

PB.0 T0 T1 (Timer/Counter 0 External Counter Input) XCK (USART External

Clock Input/Output

PB.1 T1 (Timer/Counter1 External Counter Input)

PB.2 AINO (Analog Comparator Positive Input / INT2 (External Interrup 2

Input)

PB.3 AIN1 (Analog Comparator Negative Input / OCO (Timer/Counter

Output Compare)

PB.4 SS (SPI Slave Select Input)

PB.5 MOSI (SPI Bus Master Input/Slave Output/sebagi interface ke PC )

PB.6 MISO (SPI Bus Master Input/Slave Output/ sebagai Interface ke PC)

PB.7 SCK (SPI Bus Serial Clock/sebagai Interface ke PC)

PORT KHUSUS

Converter ADC

Page 11: BUKU PANDUAN Modul Mikrokontroler

11

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

12. Kaki PORTC terdapat pada kaki 22 s/d kaki 29 yang merupakan fungsi dua

arah serta memiliki fungsi khusus.

Port PIN Fungsi

PC.0 SCL (Two-Wire Serial Bus Clock Line)

PC.1 SDA ( Two – Wire Serial Bus Data Input/Output Line)

PC.2 TCK (JTAG Test Clock)

PC.3 TMS (JTAG Test Mode Select)

PC.4 TDO (JTAG Test Data Output)

PC.5 TD1 (JTAG Test Data Input)

PC.6 TOSC1 (Timer Oscilator Pin1) untuk pengaturan Clok external

PC.7 TOSC2 (Timer Oscilator Pin2) untuk pengaturan Clok external

13. Kaki PORTD terdapat pada kaki 14 s/d kaki 22 yang merupakan fungsi dua

arah serta memiliki beberapa fungsi khusus seperti PWM dan Komunikasi

Serial.

Port PIN Fungsi

PD.0 RDX ( serial input port ) Untuk menerima Data

PD.1 TDX (serial output port ) untuk mengirim Data

PD.2 _INT0 ( external interupt 0)

PD.3 _INT1 ( external interupt 1)

PD.4 OC1B (Timer/Counter1 output membandingkan output B )

PD.5 OC1A (Timer/Counter1 output membandingkan output A )

PD.6 _ICPI(Timer/Counter1 masukan menangkap Pin)

PD.7 _OC2 (timer / counter2 membandingkan mencocokkan output

untuk PWM)

Gambar 3. Tampilan gelombang Pulsa Width Modulation

Page 12: BUKU PANDUAN Modul Mikrokontroler

12

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

1.3. Blok Diagram ATmega 16.

Blok diagram Merupakan gambaran bagian –bagian atau peta yang ada

pada IC Mikrokontroler Atmega 16.

Page 13: BUKU PANDUAN Modul Mikrokontroler

13

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

1.4 Arsitektur Mikrokontroler AVR RISC dan CISC.

1.5. Bagian Blok Memori.

Memori pada Atmega 16 terdapat tiga bagain yaitu :

A. Status Register (SREG) merupakan status yang dihasilkan pada operasi yang

dilakukan ketika suatu instruksi dieksekusi.

B. Stack Pointer merupakan tempat penyimpan data sementara, stack

diimplementasikan mulai dari lokasi memori tertinggi ke lokasi memori

terendah. (dengan instruksi PUSH).

Page 14: BUKU PANDUAN Modul Mikrokontroler

14

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

C. Peta Memori Atmega16.

- Memori Program.

Memori program berfungsi untuk menyimpan

instruksi-instruksi program yang sifatnya hanya

di baca/Read Only (ROM)

dengan alamat $0000 hingga $1FFF.

- Memori Data.

Memori Data berfungsi untuk keperluan program,

memori data terbagi 3 bagian yaitu :

32 buah register umum, 64 buah

register I/O dan 1 Kbyte SRAM internal.

GPR(General Purpose Register )

Menepati alamat data yaitu :

$0000 s/d $001F, Memori I/O menempati

64 alamat $20 hingga $5F. Memori I/O

berkapasitas 1024 Byte merupakan

Special Fungsi Register yang Khusus (SFR)

dengan Alamat $60 hingga $45F.

- Memori EEPROM.

Memori Data EEPROM 8 Bit

(Electrically Erasable Programmable read only Memory (EEPROM):

merupakan memori nonvolatile tidak hilang ketika catu daya mati)

yang menyerupai SRAM

dalam fleksibilitas pemrogramannya.

Memori jenis ini pada umumnya digunakan

untuk menyimpan data–data permanen

yang akan digunakan dalam program,

jumlah EEPROM yang tersedia adalah 512 Byte

dengan Alamat $000 hingga $1FF.

Page 15: BUKU PANDUAN Modul Mikrokontroler

15

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

D. General Purpose Register AVR.

Seluruh instruksi operasi register dalam AVR

memiliki akses langsung ke semua register.

Kecuali untuk lima instruksi arimatika-logika

yang mengoperasikan register dengan konstanta

(SBCI, SUBI, CPI, ANDI, dan ORI) dan LDI

yang mengoperasikan pemuatan data konstan

imediet. Instruksi-instruksi tersebut dioperasikan

hanya pada separuh lokasi register terakhir

GPR (R16 sampai R31). Instruksi untuk

operasi umum seperti SBC, SUB, CP, AND, OR

dan operasi lainnya yang mengoperasikan

dua register atau satu register

dapat dilakukan akses terhadap seluruh register

Page 16: BUKU PANDUAN Modul Mikrokontroler

16

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

BAB. II

Mengenal Bahasa Pemograman C/C++

Pada Mikrokontroler ATMEGA16

Pemograman dengan Bahasa C yang merupakan bahasa pemograman tingkat

tinggi dapat juga digunakan pada pengendalian perangkat keras dengan

memberikan instrupsi/perintah baik ke Mikrokontroler seri ATMEL dan AVR.

Contoh penulisan program bahasa C :

#include <mega16.h>

#include <delay.h>

main ()

{

………………. ;

………………. ;

………………. ;

};

}

Keterangan :

#include <mega16.h> merupakan awal inisialisasi jenis prosesor serta diakhiri

dengan ekstensi h, termasuk dengan insisialisasi waktu tunda (#include<delay.h>.

main () yang di awali dengan buka kurung dan tutup kurung merupakan program di

dalam tubuh program yang di sebut dengan blok program.

Tanda {………. dan di akhiri ……. } merupakan perintah yang harus dikerjakan oleh

prosesor, dan setiap pernyataan diakhiri dengan tanda titik koma (;).

Tanda akhir ……..}; dengan disertakan titik koma meruapakan bagian instrupsi atau

perintah looping atau berulang – ulang.

2.1 Tipe Data

Tipe data merupakan bagian program yang paling penting karena tipe

data mempengaruhi setiap instruksi yang akan dilaksanakan oleh computer.

Page 17: BUKU PANDUAN Modul Mikrokontroler

17

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Pemilihan tipe data yang tepat akan membuat proses operasi data menjadi

lebih efisien dan efektif, untuk lebih jelasnya dapat dilihat di table tipe data.

No. Tipe Data Ukuran Range (Jangkauan)

1. Char 1 byte -128 s/d 127

2. Int 2 byte -32768 s/d 32767

3. Unsigned int 2 byte 0 s/d 65535

4. Long Int 1 byte -2147483648 s/d 2147483648

5. Unsigned Long int 4 byte 0 s/d 4294967296

6. Float 4 byte -3.4E-38 s/d 3.4E+38

7. Double 4 byte 1.7E-308 s/d 1.7E+308

8. Long Double 10 byte 3.4E-4932 s/d 1.1E+4932

9. Char 1 byte -128 s/d 127

10. Unsigned char 1 byte 0 s/d 255

2.2 Variabel

Variable adalah suatu pengenal yang digunakan untuk mewakili suatu

nilai tertentu di dalam proses program. Nilai dalam suatu variable dapat

berubah – ubah sesuai kebutuhan atau dalam penulisan program, Sehingga

variable dapat ditentukan sendiri oleh si pemogram dengan melihat beberapa

aturan yaitu :

- Penulisan instruksi perintah tidak boleh menggunakan spasi.

- Penulisan dalam satu instruksi tidak boleh besar kecil huruf penulisannya

sebab penulisan bahasa C sangant sensitive dalam penulisannya.

- Tidak boleh menggunkan symbol khusus, terdiri dari : $, ?, %, #, &, !, *, +, @

dll. kecuali garis bawah ( underscore).

- Panjang bebas, tetapi hanya 32 karakter pertama di pakai.

2.3 Operator Aritmatika

Dalam bahasa C ada lima operator aritmatika atau symbol penulisan dalam

tubuh program, dapat dilihat pada table di bawah ini :

Operator

Aritamtika

Keterangan Contoh Program

Operator untuk Perkalian

#include <mega16.h>

#include <delay.h>

void main()

{

int bil1;

int bil2;

Page 18: BUKU PANDUAN Modul Mikrokontroler

18

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

* DDRA=0xFF; PORTA=0xFF;

bil1=4; bil2=2;

PORTA=bil1*bil2;

}

/

Operator untuk Pembagian

#include <mega16.h>

#include <delay.h>

void main()

{ // awal program

int bil1;

int bil2;

DDRB=0xFF;

PORTB=0xFF;

bil1=10;

bil2=2;

PORTB=bil1 / bil2; // artinya jumlah nilai

di PORTB = 5 Bit

} // penutup program atau akhiran program

%

untuk sisa pembagian

#include <mega16.h>

#include <delay.h>

void main()

{ // awal program

int bil1;

int bil2;

DDRC=0xFF;

PORTC=0xFF;

bil1=14;

bil2=2;

PORTC=bil1 % bil2; // artinya

jumlah nilai di PORTC = 8 Bit

} // penutup program atau akhiran program

+

untuk Penambahan

#include <mega16.h>

#include <delay.h>

void main()

{ // awal program

int bil1;

int bil2;

DDRD=0xFF;

PORTD=0xFF;

bil1=16;

bil2=6;

PORTD=bil1 + bil2; // artinya jumlah

nilai di PORTD = 24 Bit

} // penutup program atau akhiran program

untuk Pengurangan

#include <mega16.h>

#include <delay.h>

void main()

{ // awal program

int bil1;

int bil2;

DDRB=0xFF;

PORTB=0xFF;

Page 19: BUKU PANDUAN Modul Mikrokontroler

19

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

- bil1=12;

bil2=7;

PORTB=bil1 - bil2; // artinya jumlah

nilai di PORTB = 5 Bit

}

2.4 Operator Hubungan (Perbandingan)

Operator Hubungan digunakan untuk melakukan Perbandingan

hubungan antara dua buah operan atau sebuah nilai atau variable. Untuk

lebih jelasnya lihat table di bawah ini :

Table Operan Hubungan

Operator Arti Contoh

< Kurang dari X<Y Apakah X kurang dari Y

<= Kurang dari sama dengan X<=Y Apakah X kurang dari sama dengan Y

> Lebih Dari X>Y Apakah X Lebih dari Y

>= Lebih dari sama dengan X>=Y Apakah X lebih dari sama dengan Y

== Sama dengan X==Y Apakah X sama dengan Y

!= Tidak sama dengan X!=Y Apakah X tidak sama dengan Y

Jika operator hubungan membandingkan hubungan antara dua buah operand,

maka operator logika digunakan untuk membandingkan logika hasil dari

operator - operator hubungan. Operator logika ada tiga macam, yaitu :

1. Simbol dalam C (&&) artinya Logika AND (DAN) pengertiannya Operasi

AND akan bernilai benar jika dua ekspresi bernilai benar.

Tabel Gerbang Logika AND

Input 1 Input 2 Output

0 0 0

0 1 0

1 0 0

1 1 1

2. Simbol dalam C (||) artinya Logika OR (ATAU) pengertiannya Operasi OR

akan bernilai benar jika dan hanya jika salah satu ekspresinya bernilai

benar.

Tabel Gerbang Logika OR

Input 1 Input 2 Output

0 0 0

0 1 1

1 0 1

1 1 1

Page 20: BUKU PANDUAN Modul Mikrokontroler

20

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

3. Simbol dalam C (!) artinya Logika NOT (LINGKARAN) pengertiannya

operasi NOT menghasilkan nilai benar jika ekspresinya bernilai salah, dan

akan bernilai salah jika ekspresinya bernilai benar atau sebagai Inverter.

Tabel Gerbang Logika NOT

Input 1 Output

1 0

0 1

2.5. OPERASI GESER KIRI (<<)

Operasi geser kiri merupakan operasi yang akan menggeser bit-bit

kekiri sehingga bit 0 akan berpindah ke bit 1 kemudian bit 1 akan berpindah

ke bit 2 dan seterusnya. Operasi geser kiri membutuhkan dua buah operan

disebelah kiri tanda << merupakan nilai yang akan digeser sedangkan

disebelah kanannya merupakan jumlah bit pergeseran.

Contoh Program melakukan pergeseran ke kiri

Void main ()

{

char a , led; // led tersimpan didalam a

DDRB=0xFF; // memakai alamat register di port B

PORTB=0XFF; // Output pada kaki Port B

led=0x1; // data led di mulai dari 1

for (a=0;a<<7;a++) // melakukan perulangan dari a =1 s/d a=7 dengan memakai symbol <<

{

PORTB=led; // di jalankan di port B

led=led <<7; // melakukan pergeseran di mulai dari 1 sampai ke 7

}; // melakukan looping atau perulangan

} // akhiran program

2.6 OPERASI GESER KANAN (>>)

Operasi geser kiri merupakan operasi yang akan menggeser bit-bit

kekanan sehingga bit 7 akan berpindah ke bit 6 kemudian bit 6 akan

berpindah ke bit 5 dan seterusnya. Operasi geser kanan membutuhkan dua

buah operan dengan member tanda >> merupakan nilai yang akan digeser

sedangkan disebelah kanannya merupakan jumlah bit penggerseran.

Contoh Program melakukan pergeseran ke kanan

Void main ()

{

char a , led; // led tersimpan didalam a

DDRA=0xFF; // memakai alamat register di port A

PORTA=0XFF; // Output pada kaki Port A

Page 21: BUKU PANDUAN Modul Mikrokontroler

21

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

led=0x7; // data led di mulai dari 7

for (a=7;a>>1;a++) // melakukan perulangan dari a =7 s/d a=1 dengan memakai symbol >>

{

PORTA=led; // di jalankan di port A

led=led >>1; // melakukan pergeseran di mulai dari 7 sampai ke 1

}; // melakukan looping atau perulangan

} // akhiran program

2.7 OPERASI BITWISE AND (&)

Operasi bitwise AND akan melakukan operasi AND pada masing-masing

bit, sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya.

Contohnya:

Hasil = 0x03 & 0x31; Operasinya 0x03 = 00000011

0x31 = 00110001

Hasil 0x01 = 00000001 = 1 H

#include <mega 16.h>

#include <delay.h>

Void main ()

{

Char a =0x03; // data Input 1

Char b=0x31; // data Input 2

DDRB=0XFF; // memakai alamat register B

PORTB=0xFF; // memakai output di kaki PORTB

PORTB= a & b ; // artinya data PORTB bernilai 1 H

}

2.8 OPERASI BITWISE OR (I)

Operasi bitwise OR akan melakukan operasi OR pada masing-masing

bit, sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya.

Contohnya :

Hasil = 0x05 I 0x31; Operasinya 0x05 = 00000101

0x31 = 00110001

Hasil 0x35 = 00110101 = 35H

Page 22: BUKU PANDUAN Modul Mikrokontroler

22

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

#include <mega 16.h>

#include <delay.h>

Void main ()

{

Char a =0x03; // data input 1

Char b=0x31; // data input 2

DDRA=0xFF; // Memakai Alamat register A

PORTA=0xFF; // Output di kaki PORTA

PORTA= a I b ; // artinya data di PORTA bernilai 35 H

}

2.9 OPERASI BITWISE XOR (^)

Operasi bitwise XOR akan melakukan operasi XOR pada masing-masing

bit, sehingga bit 0 akan dioperasikan dengan bit 0 dan bit 1 dan seterusnya.

Contoh :

Hasil = 0x02 ^ 0xFA; Operasinya 0x02 = 00000010

0XFA = 11111010

Hasil 0xF8 = 11111000 = F8H

#include <mega 16.h>

#include <delay.h>

Void main ()

{

Char a =0x02; // data input 1

Char b=0XFA; // data input 2

DDRC=0XFF; // memakai alamat register C

PORTC=0xFF; // Ouput di kaki PORTC

PORTC= a ^ b ; // artinya data di PORTC bernilai F8 H

}

2.10 OPERASI BITWISE (~)

Operasi bitwise akan melakukan operasi berupa NOT pada masing –

masing bit, sehingga bit 0 akan dioperasikan 1, sebaliknya bit 1 akan bernilai 0

Contohnya : Hasil = ~0x31; 0x31 = 00110001

Hasil ~0x3E = 11001110 = 3EH

Page 23: BUKU PANDUAN Modul Mikrokontroler

23

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

#include <mega 16.h>

#include <delay.h>

Void main ()

{

Char a = 0x31; // data input 1

DDRB=0XFF; // Memakai Alamat Register B

PORTB=0xFF; // Output di kaki PORTB

PORTB= a ~ a; // artinya data di PORTB bernilai 3EH

}

2.11 OPERASI MAJEMUK

Operator Majemuk terdiri dari dua operator yang digunakan untuk

menyingkat penulisan program instruksi atau perintah. Operasi manajemuk

dapat dilihat pada tabel dibawah ini :

Operator

Majemuk

Keterangan Contoh

= Untuk memasukan nilai A = 7

+ = Untuk menambah nilai dari keadaan semula A = 2 + 2, A = 4

_= Untuk mengurangi nilai dari keadaan semula D = 4 - 2, A = 2

* = Untuk mengalikan nilai dari keadaan semula C = 6 x 2, A = 12

/ = Untuk melakukan pembagian terhadap bilangan

semula

F = 16 / 2, F = 8

% = Untuk memasukan nilai sisa bagi dari pembagian

bilangan semula

<< = Untuk memasukan pergeseran bilangan ke kiri B = 7<<1

>> = Untuk memasukan pergeseran bilangan ke kanan C = 7>>1

& = Untuk Memasukan operantor bitwise AND D = 1 && 1, D=1

^ = Untuk Memasukan operantor bitwise XOR D = 1^1, D=0

\ = Untuk Memasukan operantor bitwise OR D = 1 \ 0, D=1

2.12 KOMENTAR PROGRAM

Komentar program hanya diperlukan untuk memudahkan pembacaan

dan pemahaman suatu program yang dibuat Dengan kata lain, komentar

program hanya merupakan keterangan atau penjelasan program agar dapat

dipahami. Untuk memberikan komentar atau penjelasan dalam bahasa C

digunakan pembatas /* dan */ atau menggunakan tanda // untuk komentar

yang hanya terdiri dari satu baris. Komentar program tidak akan ikut diproses

dalam program (akan diabaikan).

Page 24: BUKU PANDUAN Modul Mikrokontroler

24

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Contoh Pertama :

// program ini dibuat oleh ….

Dibelakang tanda // tak akan diproses dalam kompilasi. Tanda ini hanya untuk

satu baris kalimat.

Contoh kedua :

*/ program untuk memutar motor DC atau

motor Stepper */

Bentuk ini berguna kalau pernyataan berupa kalimat yang panjang sampai

beberapa baris.

2.13 PENYELEKSIAN KONDISI

Penyeleksian kondisi digunakan untuk mengarahkan perjalanan suatu

proses. Penyeleksian kondisi dapat diibaratkan sebagai katup atau kran yang

mengatur jalannya air. Bila katup terbuka maka air akan mengalir dan

sebaliknya jika katup tertutup air tidak akan mengalir melalui tempat lain.

Fungsi peenyeleksian kondisi penting artinya dalam penyusunan bahasa C,

terutama untuk program yang kompleks.

A. STRUKTUR KONDISI “IF”….”

Struktur if dibentuk dari pernyataan if dan sering digunakan untuk

menyeleksi suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi atau

bernilai benar, maka pernyataan yang ada di dalam blok if akan diproses atau

dikerjakan.

#include <mega16.h>

#include <delay.h>

Void main()

{

char inp1;

DDRA=0xFF;

DDRB=0xFFF;

inp1=PORTB;

if(inp1==0x40)

{

PORTA=0x20

}

}

Page 25: BUKU PANDUAN Modul Mikrokontroler

25

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

B. STRUKTUR KONDISI “IF….ELSE…”

Dalam struktur kondisi if…else minimal terdapat dua pernyataan. Jika

kondisi yang diperiksa bernilai benar atau terpenuhi maka pernyataan

pertama yang dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka

pernyataan yang kedua yang dilaksanakan. Bentuk umumnya adalah sebagai

berikut:

if (kodisi)

Pernyataan-1

else

pernyataan-2

Contoh Program

if(angka=fo) /*bila angka sama dengan fo */

{ /*kerjakan berikut ini*/

for (k=0;k<4;k++)

{

i=table1(k);

PORTA=I // pernyataan dalam blok ini bisa kosong

tunda 50(100); // berarti tidak ada yang dikerjakan

}

}

else // bila tidak sama kerjakan berikut ini

{

for (k=0;k<4;k++)

{

i=tabel2(k); // pernyataan dalam blok ini bisa kosong

PORTA=I; // berarti tidak ada yang dikerjakan

tunda(100);

}

}

#include <mega16.h>

#include <delay.h>

Void main ()

{

char inp1;

DDRA=0xFF;

DDRB=0xFF;

inp1=PORTB;

if (inp1==0x01)

{

PORTA = 0x20;

}

else // bila tidak sama kerjakan berikut ini

{

Page 26: BUKU PANDUAN Modul Mikrokontroler

26

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PORTA=0x80;

}

}

C. STRUKTUR KONDISI “SWITCH…CASE… DEFAULT…”

Struktur kondisi swith …case…default digunakan untuk penyeleksian

kondisi dengan kemungkinan yang terjadi cukup banyak. Struktur ini akan

melaksanakan salah satu dari beberapa pernyataan ‘case’ tergantung nilai

kondisi. Yang ada di dalam switch. Selanjutnya proses yang diteruskan hingga

ditemukan pernyataan ‘break’. Jika tidak ada nilai pada case yang sesuai

dengan kondisi, maka proses akan diteruskan kepada pernyataan yang ada di

bawah atau berikutnya ‘default’.

SWITCH….CASE…. Contoh Program

Switch (fo

{

case 1:

for (k=0;k<4;k++)

{

I=tabel 1(k);

PORTA=I;

tunda(100);

}

break;

case 2:

for (k=0;k<4;k++)

{

i=tabel2(k);

PORTA=I;

tunda(100);

}

Break;

#include <mega16.h>

#include <delay.h>

Void main ()

{

char a;

DDRA=0xFF;

DDRB=0xFF;

a=PORTA;

swtch (a)

{

Case 0: PORTB=5;break;

Case 1: PORTB=10;break;

Case 2: PORTB=15;break;

Case 3: PORTB=20;break;

Case 4: PORTB=40;break;

Case 5: PORTB=60;break;

Default: PORTB=0;break;

}

}

2.14 PERULANGAN

Dalam pemograman bahasa C tersedia suatu fasilitas yang digunakan

untuk melakukan proses yang berulang-ulang sebanyak keinginan kita.

Misalnya saja, bila kita ingin menginput dan mencetak bilangan dari 1 sampai

100 bahkan 1000, tentunya akan merasa kesulitan dalam penulisan program.

Page 27: BUKU PANDUAN Modul Mikrokontroler

27

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Maka dengan struktur perulangan akan mempermudah dalam pembuatan

program berulang ulang, ada beberapa struktur perulangan yaitu :

1. Struktur Perulangan “WHILE”

Perulangan while banyak digunakan pada program yang terstruktur, proses

perulangan akan terus berlanjut selama kondisinya bernilai benar (true)

dan akan berhenti bila kondisinya bernilai salah.

while (perulangan) Contoh Program

while (ekspresi)

{

Pernyataan_1

Pernyataan_2

}

# include <mega16.h>

# include <delay.h>

Void main ()

{

char a=10;

DDRA=0xFF;

while (a>=0)

{

PORTA=a;

a--;

} }

2. STRUKTUR PERULANGAN “DO…..WHILE…..’’

Pada dasarnya struktur perulangan do….while sama saja dengan

struktur while,hanya saja pada proses perulangan dengan while , seleksi

while berada di while yang letaknya di atas sementara pada perulangan

do….while , seleksi while berada di bawah batas perulangan . Jadi dengan

menggunakan struktur do….while sekurang-kurangnya akan terjadi satu

kali perulangan.

Bentuk umum dari struktur kondisi ini adalah:

do….. while (Perulangan) Contoh Program

do {

Pernyataan_1

Pernyataan_2

}

while (ekspresi)

#include <mega16.h>

#include <delay.h>

Void main ()

{

Char a=10;

DDRA=0xFF;

do

{

PORTA=a;

a--;

}

while (a>=0);

}

Page 28: BUKU PANDUAN Modul Mikrokontroler

28

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

3. STRUKTUR PERULANGAN “FOR”

Struktur perulangan for biasa digunakan untuk mengulang suatu proses

yang telah diketahui jumlah perulangannya . Dari segi penulisannya,struktur

perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan

sederhana . Bentuk umum perulangan for adalah sebagai berikut :

for (inisialisasi ; syarat ; penambahan)

Pernyataan;

Keterangan: Inisialisasi : penyataan untuk menyatakan keadaan awal dari

variabel kontrol.

Syarat : ekspresi relasi yang menyatakan kondisi untuk keluar dari perulangan.

Penambahan : pengatur perubahan nilai variabel kontrol.

#include <mega16.h>

#include <delay.h>

Void main ()

{

char a;

DDRA=0xFF;

for (a=10;a>=a>=0;a--)

PORTA=a;

}

2.15 ARAY (LARIK)

Array merupakan kumpulan dari nilai-nilai data yang bertipe sama

dalam urutan tertentu yang menggunakan nama yang sama. Letak atau posisi

dari elemen array ditunjukkan oleh suatu index. Dilihat dari dimensinya array

dapat dibagi menjadi Array dimensi satu, array dimensi dua dan array multi-

dimensi.

A. ARRAY DIMENSI SATU

Setiap elemen array dapat diakses melalaui indeks. Indeks array secara

default dimulai dari 0. Deklarasi Array bentuk umum:

Deklarasi array dimensi satu : [Tipe_array][nama_array][elemen1];

Page 29: BUKU PANDUAN Modul Mikrokontroler

29

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

B. ARRAY DIMENSI DUA

Array dua dimensi merupakan array yang terdiri dari m buah baris dan

n buah kolom. Bentuknya dapat berupa matriks atau tabel.

Deklarasi array dimensi dua: [Tipe_array][nama_array][elemen2];

C. ARRAY MULTI DIMENSI

Array multi-dimensi merupakan array yang mempunyai ukuran lebih

dari dua. Bentuk pendeklarasian array sama saja dengan array dimensi

satu maupun array dimensi dua. Bentuk umumnya yaitu:

[tipe_array][nama_array][elemen1][elemen2]…[elemenN];

2.16 FUNGSI

1. PENGERTIAN FUNGSI

Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk

mengerjakan suatu tugas tertentu dan letaknya terpisah dari program

yang memanggilnya. Fungsi merupakan elemen utama dalam bahasa C

karena bahasa C sendiri terbentuk dari kumpulan fungsi – fungsi. Dalam

setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi

main(). Keuntungan penggunaan fungsi dalam program yaitu program

akan memiliki struktur yang jelas (mempunyai readability yang tinggi) dan

juga akan menghindari penulisan bagian program yang sama.

2. PENDEFISIAN FUNGSI

Sebelum digunakan fungsi harus didefinisikan terlebih dahulu. Bentuk

definisi fungsi adalah:

Tipe_Nilai_Balik nama_Fungsi (argumen1, argumen2)

{

Pernyataan 1 ;

Pernyataan1 ;

Return (ekspresi) ;

}

Contoh:

int jumlah(int bi11,int bi12) //definisi fungsi jumlah

{

Page 30: BUKU PANDUAN Modul Mikrokontroler

30

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

int hasil;

Hasil = bi11 + bi12

Return(hasil)

}

Keterangan Contoh Program

int jumlah (int bil1,int bil2)

1 2 3 4

1. Tipe nilai alik fungsi

2. Merupakan nama fungsi

3. Tipe argument

4. Nama argumen

#include <mega16.h>

#include < delay.h>

int jumlah (int bil1, int bil2)

{

Return (bil1+bil2) ;

}

Void main ()

{

DDRA=0xFF ;

PORTA=jumlah (20, 50)

}

3. PROTOTYPE FUNGSI

Ketentuan pendefinisian fungsi yang mendahului fungsi pemanggil

dapat merpotkan untuk program yang komplek atau besar. Untuk

mengatasi hal tersebut maka fungsi dapat dideklarasikan sebelum

digunakan, terletak sebelum fungsi main. Deklarasi fungsi dikenal dengan

prototype fungsi. Cara mendeklarasikan fungsi sama dengan header fungsi

dan diakhiri tanda titik koma (;).

#include <mega16.h>

#include < delay.h>

int jumlah (int bil1, int bil2)

Void main ()

{

DDRA=0xFF ;

PORTA=jumlah (20, 50)

}

int jumlah (int bil1, int bil2)

{

Return (bil1+bil2) ;

}

4. VARIABEL LOKAL DAN GLOBAL

Variabel lokal adalah variabel yang dideklarasikan di dalam suatu

fungsi, variabel ini hanya dikenal fungsi tersebut. Setelah keluar dari fungsi

Page 31: BUKU PANDUAN Modul Mikrokontroler

31

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

ini maka variabel ini akan hilang. Variabel global adalah variabel yang

dideklarasikan di luar fungsi, sehingga semua fungsi dapat memakainya.

#include <mega16.h>

#include < delay.h>

int jumlah (int bil1, int bil2)

int data1;

void main ()

{

int data1;

DDRA=0xFF ;

data1=jumlah (20,50) ;

PORTA = data1;

}

int jumlah (int bil1,int bil2)

{

Return (bil1+bil2) ;

}

5. KATA KUNCI EXTERN DAN STATIC

Kata kunci extern dan static digunakan untuk menyatakan sifat dari

variabel atau fungsi. Suatu variabel atau fungsi yang didepannya ditambah

dengan kata kunci extern maka artinya variabel atau fungsi tersebut

didefinisikan di luar file tersebut. Variabel global atau fungsi yang di

depannya ditambah kata kunci static mempunyai arti bahwa variabel

global atau fungsi tersebut bersifat pivate bagi file tersebut, sehingga tidak

dapat diakses dari file yang lain.

6. FUNGSI TANPA NILAI BALIK

Fungsi yang tidak mempunyai nilai balik merupakan kata kunci void

sedangkan fungsi yang tidak mempunyai argumen, setelah nama fungsi

dalam kurung dapat kosong atau dengan menggunakan kata kunci void.

Contoh Program :

void tunda (void)

{

for (i = 0; i < 10 ; i++) ;

}

atau

void tunda ()

Page 32: BUKU PANDUAN Modul Mikrokontroler

32

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

{

for (i=0;<10;i++) ;

}

/* fungsi tunda_panjang

Void tunda_panjang (int n )

{

Int i ;

for (i=0; i<n ;i++)

tunda () ;

7. FUNGSI DENGAN NILAI BALIK BALIK (RETURN VALUE)

Nilai balik yang dinyatakan delam pernyataan return. Tipe nilai balik

dapat berupa char, int, short, long, atau float.

Contoh Program :

int jumlah (int bil1, int bil2)

{

Return (bil1+bil2)

}

8. ARGUMEN/ PARAMETER FUNGSI

Argumen dilewatkan kedalam fungsi terdiri atas dua macam, yaitu:

a. Pelewatan secara nilai

Bentuk definisi pelewatan secaara nilai adalah:

tipe nama_fungsi (tipe argumen1, tipe argumen2,…)

{

………………………….

………………………….

}

#include <mega16.h>

#include <delay.h>

Void Tambahv(int A)

{

A=A+1;

}

Void main ()

{

Int B;

DDRA=0xFF;

B=4;

Tambahv (B);

PORTA=B;

}

Page 33: BUKU PANDUAN Modul Mikrokontroler

33

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

b. Pelewatan secara pointer

Bentuk definisi pelewatan secara pointer adalah:

Tipe nama_fungsi (tipe *argumen1, tipe *argumen2,…)

{

…………………………….

…………………………….

}

#include <mega16.h>

#include <delay.h>

Void Tambahp (int *A)

{

*A=A+1;

}

Void main ()

{

Int B;

DDRA=0xFF;

B=4;

Tambahp (&B);

PORTA=B;

}

Page 34: BUKU PANDUAN Modul Mikrokontroler

34

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

BAB. III

Mengenal Program Codevision AVR (Compiler)

CodeVisionAVR merupakan sebuah cross compiler C, Integrated Development

Environtment (IDE) dan Automatic Program Generator yang didesain untuk

mikrokontroler buatan Atmel seri AVR. CodeVisionAVR dapat dijalankan pada sistem

operasi Windows 95, 98, Me, NT4, 2000, XP dan Windows 7.

Cross - Compiler C mampu menerjemahkan hampir semua perintah dari bahasa

ANSI C, sejauh yang diijinkan oleh arsitektur dari AVR, dengan tambahan beberapa

fitur untuk mengambil kelebihan khusus dari arsitektur AVR dan kebutuhan pada

sistem embedded.

Selain library standar C, CodeVisionAVR juga mempunyai library atau fitur –fitur

Hardware yang terdiri dari :

1. Mempunyai Chip pendukung AVR.

2. Mempunyai Input-Output pada kaki PORT.

3. Mempunyai Modul LCD.

4. BUS I2C dari Philip.

5. Mempunyai Timer internal dan external.

6. Mempunyai USART sebagai

RX Interups dan TX Interups.

7. Memiliki Sensor Suhu LM75 dari National.

8. Real-Time Clock: PCF8563, PCF8583

dari Philips, DS1302 dan DS1307

dari Maxim/Dallas Semiconductor.

9. Konversi ke Kode Gray.

10. Sensor Suhu DS1820, DS18S20,

dan DS18B20 dari Maxim/Dallas

Semiconductor. Termometer/

Termostat DS1621 dari Maxim/Dallas Semiconductor.

11. Memiliki EEPROM DS2430 dan DS2433.

dari Maxim/Dallas Semiconductor.

12. Memiliki SPI ( Buat Komunikasi Serial).

13. Memiliki Power Management Pengaturan Tegangan External.

14. Memiliki Delay atau waktu tunda.

15. Mempunyai Konverter Analog to Digital (ADC).

16. Protokol 1-Wire dari Maxim/Dallas Semiconductor.

Page 35: BUKU PANDUAN Modul Mikrokontroler

35

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

3.1 Langkah – langkah dalam menggunakan software codevision AVR :

1. Download software Codevision AVR di link : http://atmel.com.;

www.fischl.de/usbasp/ ; http://www.kelas-mikrokontrol.com/download;

2. Setelah selesai download lakukan install program tersebut dengan klik

programnya.

3. Klik New

lalu rubah Source dengan klik Project, lalu klik OK lalu klik Yes

4. Maka tampil untuk melakukan seting baik jenis tipe IC maupun

Kristal/Xtall, karena menggunakan IC Atmega 16 atau Atmega 16A

maka ubahlah Chip Atinny 13 dan clock 4.000000MHz. Klik pilih

Atmega 16 atau Atmega 16A lalu klik di clock ketik 12.000000 MHz.

Seting

Page 36: BUKU PANDUAN Modul Mikrokontroler

36

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

5. Lalu klik PORT (tujuan untuk mengatifkan jenis port yang digunakan )

karena menggunakan skema gambar yang sudah di rangkai pada

software simulasi proteus di alamat PORTC maka klik PORTC, lalu

seting bit IN menjadi bit Out serta seting Pullup/Out T menjadi 1.

6. Setelah selesai melakukan penyetingan lakukan penyimpanan dengan cara

klik File lalu pilih Generate, Save and Exit.

7. Maka tampil untuk menyimpan program yang dibuat sebanyak 3 kali

melakukan penyimpanan seperti dibawah ini.

Seting

Page 37: BUKU PANDUAN Modul Mikrokontroler

37

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

BAB. IV

Mengenal Program Download (ISP Prog.1.68)

Page 38: BUKU PANDUAN Modul Mikrokontroler

38

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Cara Mendownload Program dengan

Software ISP Prog (Ver 1.68)

Open File Hex

Untuk Download

Menyimpan Data

Program Hex Ke

Memori External

Klik Command

Melihat menu

Berikutnya

Write Flash

Buat Download

Program Ke IC

Program Fuse

Menetapkan Fuse

Bit

Lock Chip

Untuk Mengunci

Program yang sudah

di download

Select Chip

Jenis IC Mikrokontroler

Atmel

Atmega

AVR

ANT9

dll

Erase berfungsi

Untuk Menghapus

Program yang ada di IC

Auto berfungsi

Untuk membaca /

Scanning IC

Mikrokontroler

NB : Software Prog ISP V 1.68 Merupakan software Download program ke

dalam IC Mikrokontroler melalui downloader USB, Software ini bisa

digunakan untuk mengisi ke berbagai jenis IC Mikrokontroler Baik ATMEL

(MCS51) dan AVR (ATMEGA, ANTY)

Page 39: BUKU PANDUAN Modul Mikrokontroler

39

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

4.1 Langkah – Langkah dalam mendwonload program

1. Klik Program ProgISP

2. Klik Command Untuk membuka menu lainnya

Hasilnya

3. Bentuk Sebelum Di Pasang Downloader USB Ke Komputer PC/Laptop

4. Sesudah dipasang/dicolokan Downloader USB ke Komputer PC/Laptop

5. Di Select Chip Pilih jenis IC yang di gunakan,

karena menggunakan Atmega 16

pilih jenis IC atmega 16.

6. Setelah dirubah lakukan klik Read

Untuk membaca apakah bisa

Membaca IC Atmega 16.

7. Bila tidak bisa membaca atau

tidak terhubung ke IC Atmega 16

maka tampil.

Page 40: BUKU PANDUAN Modul Mikrokontroler

40

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

8. Bila benar maka tampil succesfull read.

9. Lakukan seting fuse bit dengan menggantikan lowValue = E1 dan HighValue = 99 menjadi LowValue = EF & HighValue = D9

10. Setelah melakukan seting fuse bit,

sekarang klik Command dibagian

atas atau samping

11. Pilih Erase Chip lalu klik tujuannya

untuk menghapus program yang ada Bentuk kegagalan atau tidak

di IC Mikrokontroler ATmega16 berhasil dihapus

NB : Penyebab tidak bisa dihapus atau gagal karena :

1. Salah memasang kabel ke IC Atmega 16 (terbalik memasangnya).

2. Kabel rusak

3. IC Rusak (bias dari toko atau salah seting fuse bit)

Page 41: BUKU PANDUAN Modul Mikrokontroler

41

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

12. Setelah dihapus klik file pilih load flash atau klik load flash yang ada di

samping tampilan, pilih dimana anda menyimpan program yang sudah

disimpan di folder, bila sudah ketemu klik Exe, untuk membuka isi file hex

yang sudah di compiler tadi, lalu klik Open.

13. Maka tampil di bawah

14. Klik Command klik Write Flash , karena masih dalam flash penyimpanan

programnya jadi jangan klik Write EEPROM. Setelah itu klik lagi Command klik

Program Fuse.

Tampilan Led yang siap untuk di kirim ke

iC Mikrokontroler ATMEGA 16

Bila berhasil mendownload

program ke IC Mikrokontroler

ATmega 16 dan juga

program fuse

Page 42: BUKU PANDUAN Modul Mikrokontroler

42

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

15. Jangan Klik Lock Chip bila tidak ingin mengunci program download

NB : Bila di lock chip maka sulit untuk membuka atau mengisi lagi program ke

IC Mikrokontroler Atmega

16. Bila sudah berhasil atau succesfuly dalam mendownload program ke dalam IC

mikrokontroler, maka IC Siap dipakai dan lihat hasilnya.

NB : Terjadinya Error atau gagal download program ke IC dikarenakan

1. Salah Pasang IC Mikrokontroler/terbalik

2. Kurang kencang atau longgar dalam pemasangan IC

3. Rusaknya Kabel data

4. Terlalu sering di lock chip, dll

Page 43: BUKU PANDUAN Modul Mikrokontroler

43

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

BAB. V

Aplikasi Rangkaian

Page 44: BUKU PANDUAN Modul Mikrokontroler

44

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK I

APLIKASI INPUT/OUTPUT MENYALAKAN LED

#include <mega16.h>

#include <delay.h>

void main(void)

{

DDRC=0x0FF;

PORTC=0x00;

while (1)

{

PORTC=0b11111111;

delay_ms(500);

PORTC=0b11111110;

delay_ms(500);

PORTC=0b11111101;

delay_ms(500);

PORTC=0b11111011;

delay_ms(500);

PORTC=0b11110111;

delay_ms(500);

PORTC=0b11101111;

delay_ms(500);

PORTC=0b11011111;

delay_ms(500);

PORTC=0b10111111;

delay_ms(500);

PORTC=0b01111111;

delay_ms(500);

};

}

1. Buatlah tampilan led menyala kekanan dan kekiri?

2. Buatlah tampilan led menyala secara acak?

3. Buatlah tampilan led menyala dengan menggunakan instruksi?

timer/counter.

(jelaskan prinsip kerja dan perbedaan dari tugas diatas)

NB : Dapat membuat tampilan led berbeda dari tugas yang ada diatas, tetap

jelaskan prinsip kerja tampilan led yang dibuat.

Page 45: BUKU PANDUAN Modul Mikrokontroler

45

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Tabel Bilangan Biner

Gambar

Seven Segment Angka b7 b6 b5 b4 b3 b2 b1 b0 DATA

HEX Dp G F e D c b A

0 1 1 0 0 0 0 0 0 C0H

1 1 1 1 1 1 0 0 1 F9H

2 1 0 1 0 0 1 0 0 A4H

3 1 0 1 1 0 0 0 0 B0H

4 1 0 0 1 1 0 0 1 99H

5 1 0 0 1 0 0 1 0 92H

6 1 0 0 0 0 0 1 0 82H

7 1 1 1 1 1 0 0 0 F8H

8 1 0 0 0 0 0 0 0 80H

9 1 0 0 1 0 0 0 0 90H

A 1 0 0 0 1 0 0 0 88H

B 1 0 0 0 0 0 1 1 83H

C 1 1 0 0 0 1 1 0 C6H

D 1 0 1 0 0 0 0 1 A1H

E 1 0 0 0 0 1 1 0 86H

F 1 0 0 0 1 1 1 0 8EH

Page 46: BUKU PANDUAN Modul Mikrokontroler

46

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK II

Aplikasi Menyalakan Seven Segmen

#include <mega16.h> #include <delay.h> void bin7seg(unsigned char data1) { switch (data1) { case 0: PORTA=0xc0; break; case 1: PORTA=0xf9; break; case 2: PORTA=0xa4; break; case 3: PORTA=0xb0; break; case 4: PORTA=0x99; break; case 5: PORTA=0x92; break; case 6: PORTA=0x82; break; case 7: PORTA=0xf8; break; case 8: PORTA=0x80; break; case 9: PORTA=0x90; break; } } void main(void) { DDRA=0xff; while (1) { bin7seg(0); delay_ms(500); bin7seg(1); delay_ms(500); bin7seg(2); delay_ms(500); bin7seg(3); delay_ms(500); bin7seg(4); delay_ms(500); bin7seg(5); delay_ms(500); bin7seg(6); delay_ms(500); bin7seg(7); delay_ms(500); bin7seg(8); delay_ms(500); bin7seg(9); delay_ms(500); };

}

1. Buatlah Tampilan seven segment

menyala dari 0 s/d F ?

2. Buatlah Tampilan seven segment

berupa ( b. s. i ) ?

3. Buatlah tampilan Seven segment

berupa ( A.Y.A.H) dan ( i.b.u) ?

NB : Komponen yang digunakan dalam Modul Pratikum ini berjenis Seven Segmen Anoda

atau berkutub Positif, sehigga untuk menyalakan membutuhkan kondisi low

(Ground).

Page 47: BUKU PANDUAN Modul Mikrokontroler

47

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Aplikasi menyalakan

Seven Segment 2 Digit

Page 48: BUKU PANDUAN Modul Mikrokontroler

48

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK III

Aplikasi led dengan pus button

#include <mega16.h>

#include <delay.h>

void main(void)

{

DDRC=0xff;

PORTC=0x00;

DDRD=0x00;

PORTD =0xff;

while(1)

{

if(PIND.0==0)

{

PORTC=0b1111110;

delay_ms(100); //delay 100 ms

}

if (PIND.1==0)

{

PORTC=0b11111101;

delay_ms(100); //delay 100 ms

}

if (PIND.2==0)

{

PORTC=0b11111011;

delay_ms(100);

}

if (PIND.3==0)

{

PORTC=0b11110111;

delay_ms(100);

}

if (PIND.4==0)

{

PORTC=0b11101111;

delay_ms(100);

}

if (PIND.5==0)

{

PORTC=0b11011111;

delay_ms(100);

}

if (PIND.6==0)

{

PORTC=0b10111111;

delay_ms(100);

}

if (PIND.7==0)

{

PORTC=0b01111111;

delay_ms(100);

}

} //akhir looping

} //Akhir program utama

1. Buatlah Tampilan led menyala

kekiri setelah ditekan button ?

2. Buatlah Tampilan led menyala

kekanan setelah ditekan button ?

3. Buatlah tampilan led secara acak

bila di tekan button ?

Page 49: BUKU PANDUAN Modul Mikrokontroler

49

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK IV

Aplikasi Seven Segmen dengan Pus Button

#include <mega16.h> #include <delay.h> void main(void) { DDRA=0xFF; PORTA=0x00; DDRD=0x00; PORTD =0xFF; while(1) { PORTA=0xC0; If (PIND.0==0) { PORTA=0xF9; } If (PIND.1==0) { PORTA=0xA4; } if (PIND.2==0) { PORTA=0xB0; } if (PIND.3==0) { PORTA=0x99; } if (PIND.4==0) { PORTA=0x92; } if (PIND.5==0) { PORTA=0x82; } if (PIND.6==0) { PORTA=0xF8; } if (PIND.7==0) { PORTA=0x80; } }; //akhir looping } //Akhir program utama

1 Buatlah Tampilan seven segment

menyala dari A s/d F ?

2 Buatlah Tampilan seven segment

berupa ( b.c .a ) ?

3 Buatlah tampilan Seven segment

berupa ( c.a.b.e) dan ( o.s.i.s ) ?

NB : Kaki Port yang

digunakan adalah untuk

Pus Button Kaki Port D,

Sevent Segment pada

kaki Port A

Page 50: BUKU PANDUAN Modul Mikrokontroler

50

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK V

Aplikasi Sensor dengan BUZER

#include <mega16.h>

#include <delay.h>

void main(void)

{

PORTA=0b10000000; // data Port A.7 untuk sensor (input)

DDRA=0x00;

PORTC=0x00; // data Port C.7 untuk buzer (output)

DDRC=0b10000000;

while (1)

{

{

PORTC=0b10000000; // Kondisi Buzer tidak bunyi

delay_ms(100);

if (PINA.7==1) // bila sensor terhalang maka buzer bunyi

PORTC=0b00000000; // kondisi Buzer keadaan bunyi

delay_ms(200);

}

};

}

1. Buatlah tampilan led mati hidup bersama buzzer bunyi ketika sensor

terhalangi

2. Buatlah buzzer berbunyi ketika sensor terhalang dan buzzer mati ketika

sensor terhalang

Port yang di

gunakan untuk

sensor Kaki

PortA.7, untuk

Buzer Kaki

PortC.7,

Page 51: BUKU PANDUAN Modul Mikrokontroler

51

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK VI

Aplikasi Sensor dengan Motor DC

#include <mega16.h>

#include <delay.h>

void main(void)

{

PORTA=0b10000000;

DDRA=0x00;

while (1)

{

if (PINA.7==0) // Data untuk Sensor

{

PORTB.0=1; // data untuk motor DC

PORTB.1=0; // data untuk motor DC

}

if (PINA.7==0)

{

PORTB.0=0;

PORTB.1=1;

}

};

}

1. Buatlah tampilan ketika sensor terhalang motor dc berputar kekiri dan

sensor terhalang lagi motor dc berputar kekanan

2. Buatlah motor dc ber henti berputar ketika sensor terhalang.

NB : Sensor Kaki Port A.7,

Motor DC di kaki Port B.0 dan Port B.1

Page 52: BUKU PANDUAN Modul Mikrokontroler

52

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK VII

Aplikasi sensor dengan motor DC dan Buzer

#include <mega16.h>

#include <delay.h>

void main(void)

{

PORTA=0b10000000;

DDRA=0x00;

PORTB=0xFF; // data untuk port sensor (input)

DDRB=0x000;

PORTC=0x00; // ouput Buzer

DDRC=0b10000000;

while (1)

{

{

PORTC=0b10000000;

delay_ms(100);

PORTB.0=0;

PORTB.1=0;

}

if (PINA.7==1) // bila sensor terhalang

{

PORTB.0=1;

PORTB.1=0;

delay_ms(100);

PORTC=0b00000000;

delay_ms(200);

}

};

}

1. Buatlah tampilan ketika sensor terhalang motor dc berputar kekiri dan

sensor terhalang lagi motor dc berputar kekanan

2. Buatlah motor dc ber henti berputar ketika sensor terhalang.

NB : sensor di kaki Port A.7

Page 53: BUKU PANDUAN Modul Mikrokontroler

53

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK VIII

Aplikasi sensor dan seven segmen

Page 54: BUKU PANDUAN Modul Mikrokontroler

54

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

TABEL LAYAR LCD

Tabel 1 : Konfigurasi Pin LCD

No. Nama Pin Deskripsi

1 GND 0V

2 VCC +5V

3 VEE Kontras LCD

4 RS Register Select

5 R/W 1 = Read ; 0 = Write

6 EN Enable LCD, 1=enable

7 D0 Data Bus 0

8 D1 Data Bus 1

9 D2 Data Bus 2

10 D3 Data Bus 3

11 D4 Data Bus 4

12 D5 Data Bus 5

13 D6 Data Bus 6

14 D7 Data Bus 7

15 Anoda Anoda Backlight LED

16 Katoda Katoda Backlight LED

Gambar Skema Rangkaian LCD 2 x16

1G

ND

2

VC

C

VE

E3

RS

4 5

R/W

6

E

DB

0

7

DB

18 9

DB

2

10

DB

3

DB

4

11

DB

512

13

DB

6

14

DB

7

BP

L15

GN

D16

S e la m a t D a ta n g

D i K a m p u s B IN A S A R A N A IN F O R M A T IK A

5 V

10

K

5 V

10

K

P (

A0)

P (

A1)

P (

A2)

P (

A7

)

P (

A6

)

P (

A5

)

P (

A4)

Page 55: BUKU PANDUAN Modul Mikrokontroler

55

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK X

Aplikasi Tampilan Layar LCD 2 x 16

#include <mega16.h>

#include <delay.h>

#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

#include <lcd.h>

void main(void)

{

lcd_init(16);

lcd_gotoxy(0,0);

lcd_putsf("selamat datang");

delay_ms(1000);

lcd_gotoxy(0,1);

lcd_putsf("di AMIK BSI");

delay_ms(1000);

lcd_gotoxy(0,5);

lcd_putsf(" JURUSAN ");

delay_ms(1000);

lcd_gotoxy(0,8);

lcd_putsf("T.Komputer");

delay_ms(1000);

while (1)

{

// Place your code here

};

}

Page 56: BUKU PANDUAN Modul Mikrokontroler

56

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK XI

Aplikasi Tampilan Layar LCD dengan Pus Button

#include <mega16.h>

#include <delay.h>

#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

#include <lcd.h>

void main(void)

{

DDRC=0xFF;

PORTC=0x00;

DDRD=0X00;

PORTD=0XFF;

lcd_init(16);

lcd_gotoxy(0,0);

lcd_putsf("Selamat Datang");

delay_ms(800);

while (1)

{

if(PIND.7==1)

{

lcd_gotoxy(0,1);

PORTC=0xff;

lcd_putsf("= Di Lab Teknik I =");

delay_ms(800);

}

else

{

lcd_gotoxy(0,0);

PORTC=0x00;

lcd_putsf("Pratikum Mikro");

delay_ms(800);

lcd_gotoxy(0,1);

PORTC=0x00;

lcd_putsf("**Terima Kasih**");

delay_ms(800);

}

};

}

Page 57: BUKU PANDUAN Modul Mikrokontroler

57

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

PRAKTEK XII

Aplikasi Tampilan Layar LCD, Sensor dan Buzer

#include <mega16.h>

#include <delay.h>

#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

#include <lcd.h>

void main(void)

{

DDRC=0xFF;

PORTC=0x00;

DDRD=0X00;

PORTD=0XFF;

lcd_init(16);

while (1)

{

if(PIND.7==0)

{

lcd_gotoxy(0,0);

lcd_putsf("Selamat Datang");

delay_ms(800);

lcd_gotoxy(0,1);

PORTC=0xff;

lcd_putsf("=Silahkan Masuk=");

delay_ms(800);

}

else

{

lcd_gotoxy(0,0);

PORTC=0x00;

lcd_putsf("Silahkan Keluar");

delay_ms(800);

lcd_gotoxy(0,1);

PORTC=0x00;

lcd_putsf("**Terima Kasih**");

delay_ms(800);

}

};

}

Page 58: BUKU PANDUAN Modul Mikrokontroler

58

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

BAB VI

Penutup

Page 59: BUKU PANDUAN Modul Mikrokontroler

59

Email : [email protected], winnerparluhutan.blogspot.com

Teknik Komputer AMIK BSI JAkarta

Daftar Referensi