You are on page 1of 59

BUKU PANDUAN

MODUL MIKROKONTROLER ATMEGA 16

TEKNIK KOMPUTER
BINA SARANA INFORMATIKA
AMIK BSI JAKARTA 1
Email : fildesrobotik@yahoo.co.id, 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

2
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
Daftar Isi

3
Email : fildesrobotik@yahoo.co.id, 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.

4
Email : fildesrobotik@yahoo.co.id, 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
5
Email : fildesrobotik@yahoo.co.id, 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


6
Email : fildesrobotik@yahoo.co.id, 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 :

5 6

User 2 PC 4 (Downloader) Target

Compiler (Hex) ISP (Dwonload)

Gambar 1. Alur Compiler Pemograman Mikrokontroler


7
Email : fildesrobotik@yahoo.co.id, 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.

8
Email : fildesrobotik@yahoo.co.id, 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.

9
Email : fildesrobotik@yahoo.co.id, 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) PORT KHUSUS
Converter ADC
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)
10
Email : fildesrobotik@yahoo.co.id, 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


11
Email : fildesrobotik@yahoo.co.id, 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.

12
Email : fildesrobotik@yahoo.co.id, 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).

13
Email : fildesrobotik@yahoo.co.id, 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 datadata permanen
yang akan digunakan dalam program,
jumlah EEPROM yang tersedia adalah 512 Byte
dengan Alamat $000 hingga $1FF.

14
Email : fildesrobotik@yahoo.co.id, 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

15
Email : fildesrobotik@yahoo.co.id, 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.

16
Email : fildesrobotik@yahoo.co.id, 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 Keterangan Contoh Program


Aritamtika
#include <mega16.h>
#include <delay.h>
void main()
{
int bil1;
Operator untuk Perkalian int bil2;

17
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
DDRA=0xFF; PORTA=0xFF;
* bil1=4;
PORTA=bil1*bil2;
}
bil2=2;

#include <mega16.h>
#include <delay.h>
void main()
{ // awal program
int bil1;
Operator untuk Pembagian 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
#include <mega16.h>
#include <delay.h>
void main()
{ // awal program
int bil1;
int bil2;
untuk sisa pembagian DDRC=0xFF;
% PORTC=0xFF;
bil1=14;
bil2=2;
PORTC=bil1 % bil2; // artinya
jumlah nilai di PORTC = 8 Bit
} // penutup program atau akhiran program
#include <mega16.h>
#include <delay.h>
void main()
{ // awal program
int bil1;
int bil2;
untuk Penambahan DDRD=0xFF;
+ PORTD=0xFF;
bil1=16;
bil2=6;
PORTD=bil1 + bil2; // artinya jumlah
nilai di PORTD = 24 Bit
} // penutup program atau akhiran program
#include <mega16.h>
#include <delay.h>
void main()
{ // awal program
int bil1;
int bil2;
untuk Pengurangan DDRB=0xFF;
PORTB=0xFF;
18
Email : fildesrobotik@yahoo.co.id, 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
19
Email : fildesrobotik@yahoo.co.id, 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
20
Email : fildesrobotik@yahoo.co.id, 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

21
Email : fildesrobotik@yahoo.co.id, 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

22
Email : fildesrobotik@yahoo.co.id, 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 Keterangan Contoh
Majemuk
= 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 F = 16 / 2, F = 8
semula
%= 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).
23
Email : fildesrobotik@yahoo.co.id, 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
}
}
24
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
B. STRUKTUR KONDISI IF.ELSE

Dalam struktur kondisi ifelse 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
{

25
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
PORTA=0x80;
}
}

C. STRUKTUR KONDISI SWITCHCASE DEFAULT

Struktur kondisi swith casedefault 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 #include <mega16.h>
{ #include <delay.h>
case 1: Void main ()
for (k=0;k<4;k++) {
char a;
{
DDRA=0xFF;
I=tabel 1(k);
DDRB=0xFF;
PORTA=I; a=PORTA;
tunda(100); swtch (a)
} {
break; Case 0: PORTB=5;break;
case 2: Case 1: PORTB=10;break;
for (k=0;k<4;k++) Case 2: PORTB=15;break;
{ Case 3: PORTB=20;break;
i=tabel2(k); Case 4: PORTB=40;break;
PORTA=I; Case 5: PORTB=60;break;
Default: PORTB=0;break;
tunda(100);
}
}
}
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.

26
Email : fildesrobotik@yahoo.co.id, 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) # include <mega16.h>
{ # include <delay.h>
Pernyataan_1 Void main ()
Pernyataan_2 {
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 #include <mega16.h>
{ #include <delay.h>
Pernyataan_1 Void main ()
Pernyataan_2 {
Char a=10;
}
DDRA=0xFF;
while (ekspresi)
do
{
PORTA=a;
a--;
}
while (a>=0);
}

27
Email : fildesrobotik@yahoo.co.id, 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];

28
Email : fildesrobotik@yahoo.co.id, 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
{
29
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
int hasil;
Hasil = bi11 + bi12
Return(hasil)
}
Keterangan Contoh Program
#include <mega16.h>
#include < delay.h>
int jumlah (int bil1,int bil2) 1. Tipe nilai alik fungsi int jumlah (int bil1, int bil2)
2. Merupakan nama fungsi {
Return (bil1+bil2) ;
1 2 3 4 3. Tipe argument
}
4. Nama argumen
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

30
Email : fildesrobotik@yahoo.co.id, 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 ()

31
Email : fildesrobotik@yahoo.co.id, 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;
}
32
Email : fildesrobotik@yahoo.co.id, 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;
}

33
Email : fildesrobotik@yahoo.co.id, 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.

34
Email : fildesrobotik@yahoo.co.id, 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

35
Email : fildesrobotik@yahoo.co.id, 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.

Seting

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.

36
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
BAB. IV
Mengenal Program Download (ISP Prog.1.68)

37
Email : fildesrobotik@yahoo.co.id, 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 Erase berfungsi
Atmel Untuk Menghapus
Atmega Program yang ada di IC
AVR
ANT9 Auto berfungsi
dll 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)

38
Email : fildesrobotik@yahoo.co.id, 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.

39
Email : fildesrobotik@yahoo.co.id, 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)

40
Email : fildesrobotik@yahoo.co.id, 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

Tampilan Led yang siap untuk di kirim ke


iC Mikrokontroler ATMEGA 16

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.

Bila berhasil mendownload


program ke IC Mikrokontroler
ATmega 16 dan juga
program fuse

41
Email : fildesrobotik@yahoo.co.id, 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

42
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
BAB. V
Aplikasi Rangkaian

43
Email : fildesrobotik@yahoo.co.id, 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.

44
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
Tabel Bilangan Biner

Gambar Angka b7 b6 b5 b4 b3 b2 b1 b0 DATA


Seven Segment
Dp G F e D c b A HEX
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

45
Email : fildesrobotik@yahoo.co.id, 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); 1. Buatlah Tampilan seven segment
bin7seg(6); delay_ms(500); menyala dari 0 s/d F ?
bin7seg(7); delay_ms(500);
bin7seg(8); delay_ms(500); 2. Buatlah Tampilan seven segment
bin7seg(9); delay_ms(500); 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).

46
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
Aplikasi menyalakan
Seven Segment 2 Digit

47
Email : fildesrobotik@yahoo.co.id, 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);
1. Buatlah Tampilan led menyala
}
if (PIND.7==0) kekiri setelah ditekan button ?
{ 2. Buatlah Tampilan led menyala
PORTC=0b01111111;
delay_ms(100); kekanan setelah ditekan button ?
} 3. Buatlah tampilan led secara acak
} //akhir looping bila di tekan button ?
} //Akhir program utama
48
Email : fildesrobotik@yahoo.co.id, 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


NB : Kaki Port yang menyala dari A s/d F ?
digunakan adalah untuk 2 Buatlah Tampilan seven segment
Pus Button Kaki Port D, berupa ( b.c .a ) ?
Sevent Segment pada 3 Buatlah tampilan Seven segment
kaki Port A berupa ( c.a.b.e) dan ( o.s.i.s ) ?

49
Email : fildesrobotik@yahoo.co.id, 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; Port yang di
PORTC=0x00; // data Port C.7 untuk buzer (output) gunakan untuk
DDRC=0b10000000; sensor Kaki
while (1) PortA.7, untuk
{ Buzer Kaki
{
PORTC=0b10000000; // Kondisi Buzer tidak bunyi
PortC.7,
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
50
Email : fildesrobotik@yahoo.co.id, 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;
}
};
}

NB : Sensor Kaki Port A.7,

Motor DC di kaki Port B.0 dan Port B.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.

51
Email : fildesrobotik@yahoo.co.id, 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); NB : sensor di kaki Port A.7
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.

52
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
PRAKTEK VIII
Aplikasi sensor dan seven segmen

53
Email : fildesrobotik@yahoo.co.id, 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

S e la m a t D a t a n g
D i Kam pus
B IN A S A R A N A IN F O R M A T IK A
10

11

12

13

14

15

16
1

9
DB0

DB1

DB2

DB3

DB4

DB5

DB6

DB7

BPL
VEE

RS
GND

VCC

GND
R/W

5V 5V
P (A5)
P (A2)

P (A4)

P (A6)

P (A7)
P (A0)

P (A1)
10K

10K

Gambar Skema Rangkaian LCD 2 x16


54
Email : fildesrobotik@yahoo.co.id, 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

};
}

55
Email : fildesrobotik@yahoo.co.id, 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);
}
};
}

56
Email : fildesrobotik@yahoo.co.id, 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);
}
};
}

57
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
BAB VI
Penutup

58
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta
Daftar Referensi

59
Email : fildesrobotik@yahoo.co.id, winnerparluhutan.blogspot.com
Teknik Komputer AMIK BSI JAkarta

You might also like