Anda di halaman 1dari 13

BAB I

Pengenalan Mikrokontroler AVR ATMega 16

I. Tujuan

 Praktikan mampu memahami fungsi pin I/O pada mikrokontroler AVR sebagai input dan output
 Praktikan mampu memahami pin I/O sebagai output untuk mengendalikan LED
 Praktikan mampu memahami pin I/O sebagai output untuk membaca penekanan switch

II. Teori Dasar

AVR adalah mikrikontroler RISC (reduce instruction set conpute) 8 bit berdasarkan arsitektur
Harvard, yang dibuat oleh atmel pada tahun 1996. AVR mempunyai kepanjangan Advanced Versatile
RISC atau Alf and Vegard’s Risc processor yang diambil dari dua nama mahasiswa yaitu Alf- Egil Bogel
dan Vegard Wollan.

AVR memiliki keunggulan dibanding dengan mikrokontroler lain, keunggulan mikrokontroler


AVR yaitu AVR memiliki kecepatan eksekusi program yang lebih cepat karena sebagian besar instruksi
di eksekusi dalam 1 siklus clock, lebih cepat dibanding dengan mikrokontroler MSC51. Mikrokontroler
AVR memiliki fitur yang lengkap (ADC internal , EEPROM internal, Timer/Counter, watchdig timer,
PWM, port I/O, komunilasi serial, komparator, 12c, Dll). Sehingga dengan pasilitas yang lengkap ini,
programmer dan desainer dapat menggunakanya untuk berbagai aplikasi system elektronika seperti robot,
otomasi industry, peralatan telekomunikasi, dan berbagai keperluan lain. Umum mikrokontroler AVR
dapat dikelompokan menjadi 3 kelompok, yaitu keluarga AT90Sxx, ATMega, dan ATny.

Tabel jenis mikrokontroler AVR

Mikrokontroler AVR Memori


Tipe Jumlah pin Flash EEPROM SRAM
Tiny AVR 8 – 32 1 – 2k 64 – 128 0 – 128
AT 90Sxx 20 – 44 1 – 8k 128 – 512 0 – 1k
ATMega 32 – 64 8 – 128k 512 – 4 512 – 4k

Pada praktek pemrograman,mikrokontroler AVR yang digunakan yaitu ATMega 16 dan software
compilernya menggunakan code Vision.

1
Fitur-fitur pada ATMega 16

Fitur-fitur yang dimiliki ATMega 16 sebagai berikut :

 Mikrokontroler 8 bit yang memiliki kemampuan yang tinggi, dengan daya rendah.
 Arsitektur RISC dengan troughput mencapai 16MIPS pada frekuensi 16MHz
 Memiliki kapasitas plash memori 16Kbyte, EEPROM 512byte dan SRAM 1Kbyte
 Saluran I/O sebanyak 32 buah yaitu, port A, port B, port C, Port D.
 CPU yang terdiri atas 32 register
 Unit interpsi internal dan eksternal
 Port USART untuk komunikasi serial AVR
Konfigurasi pin AVR ATMega 16

Konfigurasi kaki (pin) ATMega 16


Konfigurasi pin ATMega 16 dengan kemasan 40pin DIP (Dua; Inline Packkage) dapat dilihat
pada gambar diatas. Dari gambar diatas dapat dijelaskan fungsidari masing-masing pin ATMega
16 sebagai berikut :
1. VCC yang berfungsi sebagai masukan catu daya
2. GND merupakan pin ground
3. Port A (PA0…PA7) merupakan pin Input/output dari pin masukan ADC

4. Port B (PB0…PB7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dilihat pada table dibawah ini.

2
PIN FUNGSI KHUSUS
PB7 SCK (SPI Bus Serial Clock)
PB6 MISA ( SPI Bua Master Input / Slave Output)
PB5 MOSI ( SPI Bua Master Input / Slave Output)
PB4 SS ( SPI Slave Select Input)
PB3 AIN0 (Analog Konparator Positive Input)
OCO (Timer/Counter Output Compare Match Output)
PB2 AIN0 (Analog Konparator Positive Input)
INT2 (External interup 2 input)
PB1 T 1 ( Time/Counter)
PB0 T 0 T 1 ( timer/counter external counter input)
XCK ( USART External Clock Input Output)

5. Port C (PC0…PC7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dilihat pada table dibawah ini.

PIN FUNGSI KHUSUS


PC7 TOPC2 (Timer Osillator pin2)
PC6 TOSC1 (Timer Osillator pin1)
PC5 TDI (JTAG Test data In)
PC4 TDO (JTAG Test data out)
PC3 TMS(JTAG Test Mode Select)
PC2 TCK (JTAG Test Clock)
PC1 SDL (Two – Wire serial bus data input/output line)
PC0 SCL (Two – Wire serial bus clock line)

6. Port D (PD0…PD7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dilihat pada table dibawah ini.

PIN FUNGSI KHUSUS


PD7 OC2 (timer/Counter2 output compare match output)
PD6 ICP ( timer/counter1 output capture ppin)
PD5 OC1A (timer/Counter1 output compare A match output)
PD4 OC1B (timer/Counter1 output compare B match output)
PD3 INT1 (External interrupt 1 input)
PD2 INT2 (External interrupt 0 input)
PD1 TXD ( USART Output pin )

3
PD0 RXD (USART input pin )

7. Reset merupakan pin yang digunakan untuk me-reset mikrokontroler.


8. XTAL 1 dan XTAL 2 merupakan pin masukan clock ekternal.
9. VCC merupakan pin masukan tegangan untuk ADC.
10. AREF merupakan pin masukan tegangan referensi ADC.

Pemrograman mikrokontroler AVR ATMega 16

Pengembangan sebuah system menggunakan mikrokontroler AVR buatan ATMEL menggunakan


software AV STUDIO dan Code Vision AVR. AVR STUDIO merupakan software khusus untuk
bahasa assembly. Sedangkan Code Vision AVR merupakan software C-cross compiler, dimana
program dapat di tulis dalam bahasa C, Code Vision memiliki IDE (Integreted Development
Envirioment ) yang lengkap, dimana penulisan program, compile, link, pembuatan Code mesin
(assembler) dan download program ke chip AVR dapat dilakukan pada Codevision, selain itu ada
fasilitas terminal, yaitu untuk melakukan komunikasi serial dengan mikrokontroler yang sudah
deprogram. Proses download program IC mikrokontroler AVR dapat menggunakan system
download secara ISP (In- system programming) in-sistem programmable flash on-chip
mengijinkan memori program untuk diprogram ulang dalam system menggunakan hubungan
serial SPI.

# include <mega 16.h>

#include <delay.h>

#define IRsensor PINA.0

#define pompa PORTB.0

// variable global

unsigned inti,j:

void main (void)

// variable local

char data_rx;

4
DDRA=0x00;

PORTA=0xFF;

DDRB=0xFF;

PORTB=0x00;

while (1)

.....

.....

.....

};

Penjelasan:

Preprocessor (#) : digunakan untuk memasukan (include) text dari file lain, mendefinisikan macro
yang dapat mengurangi beban kerja pemrograman dan meningkatkan legibility source code
(mudah dibaca).

#define : digunakan untuk mendefinisikan macro

Contoh :

#define ALFA 0xff

#define SUM (a,b) a+b

#define Sensor PINA.2

#define pompa PORTB.0

 Komentar

Penulusan komentar untuk beberapa baris komentar sekaligus

5
/*

…..komentar

../*

Penulisan untuk satu baris saja

//…komentar…

Program kontrol

 Perintah if dan if…else…


Perintah if dan if…else… digunakan untuk melakukan operasi percabangan bersyarat. Fungsi-
fungsi untuk menetapkan kondisi dapat dilihat dalan table.
Sintak penulisan if dapat ditulis sebagai berikut :
If(<expression>)
<statement>;
Sintak perintah if…else…dapat ditulis sebagai berikut
If(<expression>)
<statement>;
Else
<statement>;
Jika hasil testing expression memberikan hasil tidak nol statement 1 akan dilaksanakan.
Sebaiknya pemanfaatan perintah if untuk beberapa kondisi dilakukan dengan menggunakan blok-
blok.

 Percabangan switch
Perintah percabangan if…else…dapat digantikan dengan perintah switch. Dalam pernyataan
switch, sebuah variable secara berurutan diuji oleh beberapa konstanta bilangan bulat atau
konstanta karakter. Sintak perintah switch dapat dituliskan sebagai berikut :
Switch (variable)
{
Case konstanta_1 : statement;
Break;
Case konstanta_2 : statement;
Break;

6
Case konstanta_n: statement;
Break;
Default:
}

Hal – hal yang harus diperhatikan :


1. Switch hanya dapat memeriksa variable terhadap sebuah konstanta, sedangkan if dapat
memeriksa persyaratan perbandingan (lebih besar, lebih kecil dan seterusnya).
2. Tidak ada dua konstanta yang sama didalam sebuah switch.
3. Perintah switch jika dimanfaatkan dengan tepat dapat memberikan hasil yang lebih baik dari
pada perintah if…else…yang membentuk tangga dan / bersarang.

 Looping (perulangan)
Looping adalah perulangan satu atau beberapa perintah sampai mencapai keadaan tertentu ada 3
perintah looping, yaitu : for…, while…, dan do…while…. Sintak loop for dapat dituliskan
sebagai berikut :
 For
Untuk perulangan yang melakukan proses increment
For (nama_variable = nilai_awal; syarat_loop;
Nama_variable++)
{
Statement_yang_diulang ;
}
//untuk perulangan yang melakukan proses decrement
For (nama_variable=nilai_awal;syarat_loop;
Nama_variable--
{
Statement_yang_diulang;
}
Syarat_loop adalah pernyataan relasional yang menyatakan syarat berhentinya
perulangan, biasanya berkaitan dengan variable control, nama_variable++ dan
nama_variable--, menyatakan proses increment dan proses decrement pada variable
control.

7
 While
Perintah while dapat melakukan looping apabila persyaratan benar. Sintak perintah while
dapat ditulis sebagai berikut :
Nama_variable=nilai_awal;
While (syarat_loop)
{
Statement_yang_akan_diulang;
Nama_variable++;
}

 Do… while
Perintah while terlebih dahulu melakukan pengujian persyaratan sebelum melakukan
looping. Kadang-kadang hal ini menimbulkan kerepotan-kerepotan yang tidak perlu,
misalnya inisialisasi variable control. Salah satu solusi adalah dengan menggunakan loop
do…while.
Nama_variable=nilai_awal;
Do
{
Atatement_yang_akan_diulang;
Nama_variable++;
}
While (syarat_loop)

Input output mikrokontroler AVR ATMega 16

Mikrokontroler AVR ATMega 16 terdiri dari 4 buah port yaitu portA(PA), portB(PB),
portC(PC) dan portD(PD) yang semuanya dapat diprogram sebagai input ataupun output . pin I/O
pada mikrokontroler AVR dapat dikonfigurasi sebagai input atau output, dengan cara mengubah
isi I/O register data direction register.

Misalnya, jika ingin port B dikonfigurasikan sebagai output, maka data direction register portB
(DDRB) harus di set sebagai 0xFFH (sama dengan 255). Jika sebagai input maka 0x00H (sama
dengan 0).

Contoh :

8
DDRB=255; //portB dikonfigurasikan sebagai output.
Yaitu PBO-PB7.
DDRD=0x00; //portD dikonfigurasikan sebagai input.

VOH (output high voltage) ialah tegangan pada pin I/O mikrokontroler ketika ia mengeluarkan
logika “1” dengan bedsar sekitar 4.2V dan arus sebesar 20mA (I OH.setiap pin I/O mikrokontroler
AVR memiliki internal pull up . misalnya portB dikonfigurasi sebagai input dan internal pull-
upnya diaktifkan maka DDRB=00H dan PORTB=00H.

DDRB=0; //portB dikonfigurasi sebagai input.


PORTB.0; //internal pull-up

Untuk mendeteksi input pada salah satu port, dapat digunakan fungsi PINx, sedangkan
mendeteksi per pin pada suatu portdapat digunakan fungsi Pin x bit.

Contoh :

PORTB = PINC; // semua data di portC dikirim ke portB


PORTB.0 = PINC.0; // data di portC.0 dikirim ke portB.0

Tegangan keluaran pada pin I/O mikrokontroler ketika “1” besarnya sekitar 4.2V dan
arusnya 20mA. P[ort I/O sebagai output hanya memberikan arus (sourcing) sebesar 20mA,
keluaran suatu port mikrokontroler hanya dapat mengemudikan perangkat output dengan arus
kecil, sehingga untuk peralatan elektronika yang membutuhkan arus yang besar misalnya untuk
menggerakan motorperlu diberikan penguat tambahan, oleh karena itu biasanya diberi penguat
lagi berupa transistor atau IC penguat (driver)agar port tersebut tidak terbebani, atau dapat juga
dengan konfigurasi port sinking current, seperti pada port untuk menyalakan led, yang akan
menyala saat port diberikan nilai logika low dan mati saat port diberikan logika high.

III. Tugas pendahuluan

1. Download gambar rangkaian LED !

9
2. Berapakah arus minimal yang dibutuhkan untuk menyalakan LED ?
Jawab:
Arus minimal yang dibutuhkan untuk menyalakan LED 20mA.

3. Buat program untuk menyalakan 3 buah LED secara bersamaan !


Jawab:

# include <mega 16.h>

#include <delay.h>

Void main (void)

DDRC=0xFF;

PORTC=0xFF;

10
While (1)

portC = 0b11111000;

Delay_ms (100);

4. Buat program untuk menya lakan 4 buah LED secara bergantian !


Jawab:

# include <mega 16.h>

#include <delay.h>

Void main (void)

DDRC=0xFF;

PORTC=0xFF;

While (1)

portC = 0b11110000;

Delay_ms (100);

portC = 0b00001111;

Delay_ms (100);

11
5. Apa saja keunggulan mikrokontroler AVR ?
Jawab :
AVR memiliki kecepatan eksekusi program yang lebih cepat karena sebagian besar instruksi
di eksekusi dalam 1 siklus clock, lebih cepat dibanding dengan mikrokontroler MSC51.
6. Apa yang dimaksud dengan USART ?
Jawab :
USART (universal synchronous Asyncronous Receiver/Transmiter) adalah komunikasi serial
dengan operasi full duplex yang mendukung komunikasi multiprosesor dengan menggunakan
mode kecepatan transmisi berorde Mbps

IV. Prosedur percobaan

Percobaan

# include <mega 16.h>

#include <delay.h>

Void main (void)

DDRD = 0xFF;

12
PORTD = 0xFF;

While (1)

PORTD =0xFF;

Delay_ms (1000);

PORTD = 0x00 ;

Delay_ms (1000) ;

Percobaan 2

Buat program untuk menyalakan LED yang menggeser dari kiri ke kanan secara bergantian !

Percobaan 3

Buat percobaan untuk menyalakan 4 buah LED apabila ada penekanan dari switch !

13

Anda mungkin juga menyukai