Anda di halaman 1dari 7

PRAKTIKUM 1

1. Pendahuluan
Atmega 16 mempunyai empat buah port yang bernama PortA, PortB, PortC, dan PortD.
Keempat port tersebut merupakan jalur bi-directional dengan pilihan internal pull-up. Tiap port
mempunyai tiga buah register bit, yaitu DDxn, PORTxn, dan PINxn.

2. Tujuan
Setelah menyelesaikan praktikum ini, yang anda peroleh adalah :
1. dapat menjelaskan arsitektur umum dan keistimewaan dari mikrokontroler AVR
Atmega16.
2. Dapat menceritakan kembali alur pengembangan software pada mikrokontroler AVR
mengggunakan CodeVisionAVR.
3. Dapat menggunakan fungsi output pada mikrokontroler AVR.

4. Dapat mengerjakan tugas yang di berikan dengan bahsa-C.

3. Dasar Teori
ATmega 16 pada dasarnya memiliki 4 port yaitu: PortA, PortB, PortC, dan PortD. Port ini
merupakan jalur bi-directional dengan pilihan internal pull-up. Ada 3 buah register bit pada setiap
port, yaitu DDxn, PORTxn, dan PINxn. Sebagai contoh DDRC di set 1 maka Pc merupakan
output, jika PORTC di set 1 merupakan input, sehingga resistor pull-up akan di aktifkan. Cara
untuk mematikan resistor pull-up adalah dengan setting PORTC di set 0 atau pin di atur sebagai
output. Pin port adalah tri-state setelah reset. Jika PORTC di set 1 pada pin yang merupakan
output maka pin port menangkap logika 1. Jika PORTC di set 0 pada pin yang merupakan pin
output maka pin port berlogika 0.
Fungsi delay adalah menunda eksekusi program, dengan kisaran waktu tertentu. Sebelum
menggunakan delay kita harus meng-includekan delay terlebih dahulu. Fungsi delay dalam
beberapa keadaan misalnya: Void delay_us(unsigned int c), artinya menghasilkan delay selama c
-detik. Void delay_ms(unsigned int c) artinya menghasilkan delay selama c m-detik.

Penjelasan Rangkaian :
a. Dalam Microcontroller ATMEGA16 Trainer Kit, semua katoda pada LED diatas
terhubung dengan PORTC ATMEGA16.
b. 8 LED diatas mendapat Vcc pada bagian Anodenya. Sehingga untuk menyalakan LED
tersebut, katoda harus mendapat logika 0 dari PORTC ATMEGA16. Ketika katoda
mendapat logika 1, maka LED tidak akan menyala.

4. Hasil dan Analisis


A. Percobaan 1 ( Membuat 4 buah LED menyala )
Coding Program:
#include <mega16.h>
void main(void)
{
DDRC=0xFF;
PORTC=0x0F;
}

Penjelasan Program:
#include <mega16.h> => Yang merupakan bagian dari header yang berfungsi memasukan
library mega16.
void main(void) => Merupakan sebuah fungsi yang tidak bertife data.
{
DDRC=0xFF; => Artinya PORTC sebagai output.
PORTC=0x0F; => Di PORTC setting sebagai output dengan PORTC=0x0F artinya output
berlogika (00001111), sehingga hanya 4 lampu yang menyala.
}
Flow Chart:
Mulai

DDRC=0xFF;

PORTC=0x0F;

PORTC

Selesai

Simulasi Proteus:
4 LED ON, 4 LED OFF

B. Percobaan 2 (Percobaan LED On / Off dengan fungsi delay)


Coding Program:
#include <mega16.h>
#include <delay.h>
void main(void)
{
DDRC=0xFF;
while (1)
{
PORTC=0xFF; delay_ms(1000);
PORTC=0x00; delay_ms(1000);
}

Penjelasan Program:
#include <mega16.h> => Yang merupakan bagian dari header yang berfungsi memasukan
library mega16.
#include <delay.h> => yang merupakan bagian dari hedaer yang befungsi memasukan
library delay.
void main(void) => Merupakan sebuah fungsi yang tidak bertife data.
{
DDRC=0xFF; => Artinya PORTC sebagai output.
while (1) => Sebuah fungsi yang menjalankan/berkerja sebagai pengunci dan perulangan.
{
o PORTC=0xFF; delay_ms(1000); => PORTC sebagai output dengan logika
(11111111), dan delay berfungsi menunda eksekusi program selama 1000ms.
o PORTC=0x00; delay_ms(1000); => PORTC sebagai output dengan logika
(00000000), dan delay berfungsi menunda eksekusi program selama 1000ms.
}}
Flow Chart:
Mulai

DDRC=0xFF;

PORTC=0xFF;
delay_ms(1000);
PORTC=0x00;
delay_ms(1000);

PORTC

selesai

Simulasi Proteus:
Saat keadaan PORTC berlogika 11111111

Saat keadaan PORTC berlogika 00000000

C. Percobaan 3 (Dengan data tabel)


Coding Program
#include <mega16.h>
#include <delay.h>
void main(void)
{
char
urutan[8] = {0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80};
char i;
PORTC=0xFF;
DDRC=0xFF;
while (1)
{
for (i=0;i<8;i++)
{
PORTC=urutan[i];
}
}}

Penjelasan Program:
#include <mega16.h> => Yang merupakan bagian dari header yang berfungsi memasukan
library mega16.
#include <delay.h> =>. yang merupakan bagian dari hedaer yang befungsi memasukan
library delay.
void main(void) => Merupakan sebuah fungsi yang tidak bertife data.
{
char => Deklarasi konstanta, merupakan tife data dengan ukuran -127 sampai 127.
urutan[8] = {0x1, 0x2, 0x4, 0x8, 0x10, 0x20, 0x40, 0x80}; => merupakan sebuah data
variabel, yang menggunakan tife data char dengan deklarasi urutan dengan 8 kondisi.
char i; => membuat variabel dengan i.
PORTC=0xFF; => PORTC sebagai OUTPUT dengan logika (11111111)

DDRC=0xFF; => Artinya PORTC sebagai output.


while (1) => Sebuah fungsi yang menjalankan/berkerja sebagai pengunci dan perulangan.
{
for (i=0;i<8;i++) => yang di gunakan untuk melakukan perulangan dengan statement
(nama_variabel=nilai awal; syarat_loop; nama_variable++).
{
PORTC=urutan[i]; => Statement yang di ulang di mana PORTC sebagai output dengan
kondisi dari urutan i.
}
}

Flow Chart:

Mulai

Char urutan[8] ;
char i;
DDRC=0xFF;

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

PORTC=urutan[i];

Selesai

Simulasi Proteus:
Perpindahan satu pola ke pola yang lainya berdasarkan delay

5. Kesimpulan
Jadi dari hasil percobaan LED Praktikum 1, di sini sudah sesuai dengan teori pada modul
praktikum. Seperti pada percobaan 1 4 LED menyala, percobaan 2 LED ON/OFF dengan fungsi
delay, percobaan 3 LED mati bergiliran.

Anda mungkin juga menyukai