Jelajahi eBook
Kategori
Jelajahi Buku audio
Kategori
Jelajahi Majalah
Kategori
Jelajahi Dokumen
Kategori
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
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.
Pada praktek pemrograman,mikrokontroler AVR yang digunakan yaitu ATMega 16 dan software
compilernya menggunakan code Vision.
1
Fitur-fitur pada ATMega 16
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
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.
6. Port D (PD0…PD7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti
dilihat pada table dibawah ini.
3
PD0 RXD (USART input pin )
#include <delay.h>
// variable global
unsigned inti,j:
// 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).
Contoh :
Komentar
5
/*
…..komentar
../*
//…komentar…
Program kontrol
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:
}
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)
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.
Untuk mendeteksi input pada salah satu port, dapat digunakan fungsi PINx, sedangkan
mendeteksi per pin pada suatu portdapat digunakan fungsi Pin x bit.
Contoh :
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.
9
2. Berapakah arus minimal yang dibutuhkan untuk menyalakan LED ?
Jawab:
Arus minimal yang dibutuhkan untuk menyalakan LED 20mA.
#include <delay.h>
DDRC=0xFF;
PORTC=0xFF;
10
While (1)
portC = 0b11111000;
Delay_ms (100);
#include <delay.h>
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
Percobaan
#include <delay.h>
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